imfilter
边界填充选项
计算图像边界的输出像素时,卷积或相关性核的一部分通常不在图像边缘上,如下图所示。
当核的值落在图像之外时
imfilter
函数通常通过假设图像边缘之外的像素为 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')
为了消除图像边缘周围零填充所带来的伪影,imfilter
提供一种称为边界复制的替代边界填充方法。在边界复制中,图像外部任何像素的值都是通过复制最近边界像素的值来确定的。如下图所示。
复制的边界像素
要使用边界复制进行滤波,请将附加可选参数 'replicate'
传递给 imfilter
。
I3 = imfilter(I,h,'replicate'); figure, imshow(I3); title('Filtered Image with Border Replication')
imfilter
函数支持 'circular'
和 'symmetric'
等其他边界填充选项。有关详细信息,请参阅 imfilter
的参考页。