더북(TheBook)

코드 11-4의 open_close() 함수 실행 결과를 그림 11-12에 나타냈습니다. 그림 11-12(a)는 입력 영상으로 사용한 milkdrop.bmp 파일이고, 그림 11-12(b)는 오츠 알고리즘으로 이진화한 bin 영상입니다. 그림 11-12(c)는 열기 연산을 수행한 결과이며, bin 영상의 우측 하단에 있던 자잘한 한두 픽셀 영역이 효과적으로 제거된 것을 확인할 수 있습니다. 그림 11-12(d)는 닫기 연산을 수행한 결과이며, 흰색 객체 내부의 한두 픽셀짜리 구멍이 사라진 것을 볼 수 있습니다.

▲ 그림 11-12 이진 영상의 열기와 닫기 예제 프로그램 실행 결과

 

Note

이진 영상의 열기와 닫기 연산은 erode()dilate() 함수를 사용하여 쉽게 구현할 수 있습니다. 예를 들어 이진 영상 src가 있을 경우, 다음 코드는 열기 연산 결과를 dst에 저장합니다.

Mat dst;
erode(src, dst, Mat());
dilate(dst, dst, Mat());

이 코드에서 erode() 함수의 입력은 src, 출력은 dst 영상이고, dilate() 함수는 입력과 출력이 모두 dst 영상입니다. 실제로 morphologyEx() 함수 내부에서도 이와 같이 erode() 함수와 dilate() 함수를 차례대로 호출하여 열기 연산을 수행합니다.

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