영상처리 과제 하는데 잘못? 한거 날리기 아까워서 걍 여기 올려본다.
분명 다람쥐씨랑 똑같이 했는데 왜 내건 안돌아가는데ㅔㅔㅔㅔㅔㅔ
영상에 가우시안 노이즈랑 솔트페퍼 노이즈 만드는 코든데 솔트페퍼는 돌아가고 가우시안만 안된다......
#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 |