더북(TheBook)

코드 7-7 미디언 필터링 예제 코드 [ch07/noise]

01    void filter_median()
02    {
03        Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);
04     
05        if (src.empty()) {
06            cerr << "Image load failed!" << endl;
07            return;
08        }
09     
10        int num = (int)(src.total() * 0.1);
11        for (int i = 0; i < num; i++) {
12            int x = rand() % src.cols;
13            int y = rand() % src.rows;
14            src.at<uchar>(y, x) = (i % 2) * 255;
15        }
16     
17        Mat dst1;
18        GaussianBlur(src, dst1, Size(), 1);
19     
20        Mat dst2;
21        medianBlur(src, dst2, 3);
22     
23        imshow("src", src);
24        imshow("dst1", dst1);
25        imshow("dst2", dst2);
26     
27        waitKey();
28        destroyAllWindows();
29    }

 

10~15행 src 영상에서 10%에 해당하는 픽셀 값을 0 또는 255로 설정합니다.

17~18행 표준 편차가 1인 가우시안 필터링을 수행하여 dst1에 저장합니다.

20~21행 크기가 3인 미디언 필터를 실행하여 dst2에 저장합니다.

23~25행 src, dst1, dst2 영상을 모두 화면에 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.