imfilter
경계선 채우기 옵션
영상 경계선에서의 출력 픽셀을 계산할 때, 아래 그림에 설명된 것처럼 일반적으로 컨벌루션 또는 상관 커널의 일부가 영상 경계에서 벗어나게 됩니다.
커널 값이 영상을 벗어나는 경우
imfilter
함수는 일반적으로 경계를 벗어난 영상 픽셀을 0
으로 가정하고 채웁니다. 이를 0 채우기라고 하며 다음 그림에 표시되어 있습니다.
범위를 벗어난 픽셀의 0 채우기
영상을 필터링할 때 0 채우기를 수행하면 이 예제에 나와 있는 것처럼 영상 경계 주변에 짙은 띠가 생길 수 있습니다.
I = imread("eight.tif"); h = ones(5,5) / 25; I2 = imfilter(I,h); imshow(I) title("Original Image"); figure imshow(I2) title("Filtered Image with Black Border")
0 채우기로 인한 영상 경계 주변의 아티팩트를 제거할 수 있도록 imfilter
는 테두리 복제라는 또 다른 경계선 채우기 방법을 제공합니다. 테두리 복제 시 영상을 벗어난 픽셀 값은 가장 가까운 테두리 픽셀의 값을 복제하는 방법으로 결정됩니다. 이에 대해 다음 그림에 설명되어 있습니다.
복제된 경계선 픽셀
테두리 복제를 사용해 필터링하기 위해 선택적 추가 인수 "replicate"
를 imfilter
에 전달합니다.
I3 = imfilter(I,h,"replicate"); figure imshow(I3); title("Filtered Image with Border Replication")
imfilter
함수는 "circular"
, "symmetric"
같은 다른 경계선 채우기 옵션도 지원합니다.