imfilter
Опции заполнения контуровПри вычислении пикселя выхода в контур изображения фрагмента ядра свертки или корреляции обычно выходит за ребро изображения, как показано на следующем рисунке.
Когда значения ядра падают снаружи изображения
The 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')
The imfilter
функция поддерживает другие опции контура, такие как 'circular'
и 'symmetric'
. Смотрите страницу с описанием для imfilter
для получения дополнительной информации.