imfilter
Boundary Padding Options
When computing an output pixel at the boundary of an image, a portion of the convolution or correlation kernel is usually off the edge of the image, as illustrated in the following figure.
When the Values of the Kernel Fall Outside the Image
The imfilter
function normally fills in these off-the-edge image pixels
by assuming that they are 0
. This is called zero padding and is illustrated
in the following figure.
Zero Padding of Outside Pixels
When you filter an image, zero padding can result in a dark band around the edge of the image, as shown in this example.
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")
To eliminate the zero-padding artifacts around the edge of the image,
imfilter
offers an alternative boundary padding method called
border replication. In border replication, the value of any pixel
outside the image is determined by replicating the value from the nearest border pixel. This
is illustrated in the following figure.
Replicated Boundary Pixels
To filter using border replication, pass the additional optional argument
"replicate"
to imfilter
.
I3 = imfilter(I,h,"replicate"); figure imshow(I3); title("Filtered Image with Border Replication")
The imfilter
function supports other boundary padding options, such
as "circular"
and "symmetric"
.