OpenCV에서 팽창 연산을 수행하려면 dilate() 함수를 사용합니다. dilate() 함수 원형은 다음과 같습니다.
void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1,-1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue()); |
|
• src |
입력 영상 |
• dst |
출력 영상. src와 같은 크기, 같은 타입입니다. |
• kernel |
구조 요소. 만약 Mat()을 지정하면 3×3 사각형 구조 요소를 사용합니다. 그 외의 구조 요소는 getStructuringElement() 함수를 이용하여 만들 수 있습니다. |
• anchor |
고정점 위치. (-1, -1)을 지정하면 구조 요소 중앙을 고정점으로 사용합니다. |
• iterations |
반복 횟수 |
• borderType |
가장자리 픽셀 확장 방식 |
• borderValue |
borderType이 BORDER_CONSTANT인 경우, 확장된 가장자리 픽셀을 채울 값 |
dilate() 함수의 인자 구성과 사용법은 erode() 함수와 완전히 같습니다.
erode()와 dilate() 함수를 이용하여 모폴로지 침식과 팽창 연산을 수행하는 예제 코드를 코드 11-3에 나타냈습니다. 코드 11-3의 erode_dilate() 함수는 milkdrop.bmp 영상을 이진화한 후, 침식 연산과 팽창 연산을 각각 수행하여 그 결과를 화면에 출력합니다. erode_dilate() 함수가 정의된 소스 코드 파일과 사용된 영상 파일은 내려받은 예제 파일 중 ch11/morphology 프로젝트에서 확인할 수 있습니다.