더북(TheBook)

실제 영상에 대해 엠보싱 필터링을 수행하는 소스 코드를 코드 7-1에 나타냈습니다. 코드 7-1의 filter_embossing() 함수는 rose.bmp 장미 영상에 엠보싱 필터링을 수행하고 그 결과를 화면에 출력합니다. filter_embossing() 함수가 정의된 소스 파일과 사용된 영상 파일은 내려받은 예제 파일 중 ch07/filter 프로젝트에서 확인할 수 있습니다.

코드 7-1 엠보싱 필터링 예제 [ch07/filter]

01    void filter_embossing()
02    {
03        Mat src = imread("rose.bmp", IMREAD_GRAYSCALE);
04     
05        if (src.empty()) {
06            cerr << "Image load failed!" << endl;
07            return;
08        }
09     
10        float data[] = { -1, -1, 0, -1, 0, 1, 0, 1, 1 };
11        Mat emboss(3, 3, CV_32FC1, data);
12     
13        Mat dst;
14        filter2D(src, dst, -1, emboss, Point(-1, -1), 128);
15     
16        imshow("src", src);
17        imshow("dst", dst);
18     
19        waitKey(0);
20        destroyAllWindows();
21    }

 

3행 rose.bmp 영상을 그레이스케일 형식으로 불러옵니다.

10~11행 data 배열을 이용하여 3×3 크기의 엠보싱 필터 마스크 행렬 emboss를 생성합니다.

14행 filter2D() 함수를 이용하여 엠보싱 필터링을 수행합니다. 이때 filter2D() 함수 여섯 번째 인자에 128을 지정하여 필터링 결과 영상에 128을 더합니다.