Main Content

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 的参考页。

另请参阅

相关主题