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

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