영상처리 과제 하는데 잘못? 한거 날리기 아까워서 걍 여기 올려본다. 

분명 다람쥐씨랑 똑같이 했는데 왜 내건 안돌아가는데ㅔㅔㅔㅔㅔㅔ

 

영상에 가우시안 노이즈랑 솔트페퍼 노이즈 만드는 코든데 솔트페퍼는 돌아가고 가우시안만 안된다......

 

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

Mat addSaltAndPepperNoise(Mat img, double noise_ratio);
Mat addGaussianNoise(Mat img);

int main() {
	Mat inputImg = imread("hw4.jpg", IMREAD_GRAYSCALE);
	if (inputImg.empty())
		return -1;

	Mat spImg;
	Mat gsImg;

	spImg = inputImg.clone();
	addSaltAndPepperNoise(spImg, 0.05);
	gsImg = inputImg.clone();
	addGaussianNoise(gsImg);

	imshow("Original", inputImg);
	imshow("SaltAndPepper", spImg);
	//imshow("Gaussian", gsImg);

	waitKey(0);
	return 0;
}

Mat addSaltAndPepperNoise(Mat img, double noise_ratio) {
	int rows = img.rows;
	int cols = img.cols;
	int ch = img.channels();
	int num_of_noise_pixels = (int)((double)(rows * cols * ch) * noise_ratio);

	for (int i = 0; i < num_of_noise_pixels; i++) {
		int r = rand() % rows;
		int c = rand() % cols;
		int _ch = rand() % ch;

		uchar* pixel = img.ptr<uchar>(r) + (c * ch) + _ch;

		*pixel = (rand() % 2 == 1) ? 255 : 0;
	}
	return img;
}

Mat addGaussianNoise(Mat img) {
	Mat noise_image(img.size(), CV_16SC3);
	double average = 0.0;
	double std = 30.0;
	randn(noise_image, Scalar::all(average), Scalar::all(std));

	Mat temp_image;
	img.convertTo(temp_image, CV_16SC3);
	addWeighted(temp_image, 1.0, noise_image, 1.0, 0.0, temp_image);
	temp_image.convertTo(temp_image, img.type());

	return temp_image;
}

노이즈 제거하는 필터 비교해야되는데 노이즈 직접 만들어야 되는줄 알아갖고..,.

저거하느라 두시간 날리고 나서야 교수님이 주신 파일에 노이즈 영상이 있었다는걸 알고만...,.

........

ㅎ..... 과제나 하자..................

'210525~220812' 카테고리의 다른 글

#79 'Big' data 220518  (0) 2022.05.18
#78 빅데이터 데이터셋 찾기 220516  (0) 2022.05.16
#76 중간고사 끝? 220426  (0) 2022.04.26
#75 윈도우 포맷 및 설치(with USB) 220421  (0) 2022.04.21
#74 시험기간 220419  (0) 2022.04.19

+ Recent posts