더북(TheBook)

코드 7-6 양방향 필터링 예제 코드 [ch07/noise]

01    void filter_bilateral()
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        Mat noise(src.size(), CV_32SC1);
11        randn(noise, 0, 5);
12        add(src, noise, src, Mat(), CV_8U);
13     
14        Mat dst1;
15        GaussianBlur(src, dst1, Size(), 5);
16     
17        Mat dst2;
18        bilateralFilter(src, dst2, -1, 10, 5);
19     
20        imshow("src", src);
21        imshow("dst1", dst1);
22        imshow("dst2", dst2);
23     
24        waitKey();
25        destroyAllWindows();
26    }

 

10~12행 그레이스케일 레나 영상 src에 평균이 0이고 표준 편차가 5인 가우시안 잡음을 추가합니다.

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

17~18행 색 공간의 표준 편차는 10, 좌표 공간의 표준 편차는 5를 사용하는 양방향 필터링을 수행하여 dst2에 저장합니다.

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

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