대부분의 OpenCV 필터링 함수는 기본적으로 그림 7-3과 같은 방식으로 가장자리 픽셀을 확장하지만, 다른 방식으로 가상의 픽셀 값을 설정할 수도 있습니다. OpenCV 필터링 연산에서 사용할 수 있는 가장자리 픽셀 확장 방법을 표 7-1에 나타냈습니다. 표 7-1에 나타난 상수는 BorderTypes라는 이름의 열거형 상수 중 일부입니다.
▼ 표 7-1 OpenCV 필터링에서 가장자리 픽셀 처리 방법
BorderTypes 열거형 상수 |
설명 |
BORDER_CONSTANT |
|
BORDER_REPLICATE |
|
BORDER_REFLECT |
|
BORDER_REFLECT_101 |
|
BORDER_REFLECT101 |
BORDER_REFLECT_101과 같음 |
BORDER_DEFAULT |
BORDER_REFLECT_101과 같음 |
OpenCV에서 필터 마스크를 사용하는 일반적인 필터링은 filter2D() 함수를 이용하여 수행합니다. filter2D() 함수 원형은 다음과 같습니다.
void filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT); |
|
• src |
입력 영상 |
• dst |
출력 영상. src와 같은 크기, 같은 채널 수를 갖습니다. |
• ddepth |
결과 영상의 깊이 |
• kernel |
필터링 커널. 1채널 실수형 행렬 |
• anchor |
고정점 좌표. Point(-1, -1)을 지정하면 커널 중심을 고정점으로 사용합니다. |
• delta |
필터링 연산 후 추가적으로 더할 값 |
• borderType |
가장자리 픽셀 확장 방식 |