코드 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 영상을 모두 화면에 출력합니다.