regionfill

Заполните заданные области в изображении с помощью входящей интерполяции

Синтаксис

J = regionfill(I,mask)
J = regionfill(I,x,y)

Описание

пример

J = regionfill(I,mask) заполняет области в изображении I, заданный mask. Ненулевые пиксели в mask называют пиксели изображения I, чтобы заполнить. Можно использовать regionfill, чтобы удалить объекты в изображении или заменить недопустимые пиксельные значения с помощью их соседей.

пример

J = regionfill(I,x,y) заполняет область в изображении I, соответствующий полигону с вершинами, заданными x и y.

Примеры

свернуть все

Считайте полутоновое изображение в рабочую область.

I = imread('eight.tif');

Задайте полигон, который полностью окружает одну из монет в изображении. Этот пример использует x-координаты и y-координаты (столбцы и строки) вершин полигона, чтобы задать область.

x = [222 272 300 270 221 194];
y = [21 21 75 121 121 75];

Заполните полигон, с помощью функции regionfill.

J = regionfill(I,x,y);

Отобразите оригинальное изображение и заполненное изображение бок о бок.

figure
subplot(1,2,1)
imshow(I)
title('Original image')
subplot(1,2,2)
imshow(J)
title('Image with one less coin')

Считайте полутоновое изображение в рабочую область.

I = imread('eight.tif');

Создайте рисунок маски, который касается всех монет.

mask = I < 200;

Заполните дыры в рисунке маски.

mask = imfill(mask,'holes');

Удалите шум в рисунке маски.

mask = imerode(mask,strel('disk',10));
mask = imdilate(mask,strel('disk',20));

Заполните области во входном изображении с помощью рисунка маски.

J = regionfill(I,mask);

Отобразите оригинальное изображение рядом с рисунком маски и заполненным изображением.

figure
subplot(1,3,1)
imshow(I)
title('Original image')
subplot(1,3,2)
imshow(mask)
title('Mask of pixels to fill')
subplot(1,3,3)
imshow(J)
title('Resulting image')

Входные параметры

свернуть все

Введите полутоновое изображение, заданное как 2D числовой массив, неразреженный и действительный. I должен быть больше, чем или равным массиву 3х3.

Пример: I = imread('eight.tif');

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Двухуровневое изображение маски, заданное как неразреженный логический массив тот же размер как I.

Типы данных: логический

X-координаты вершин полигона, заданных как числовой вектор класса double. Должна быть та же длина как y.

Пример: x = [222 272 300 270 221 194];

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Y-координаты вершин полигона, заданных как числовой вектор класса double. Должна быть та же длина как x.

Пример: y = [21 21 75 121 121 75];

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Выходные аргументы

свернуть все

Заполненное полутоновое изображение, возвращенное как 2D числовой массив, неразреженный, и действительный. J имеет тот же размер и класс как I.

Советы

  • regionfill не поддерживает интерактивный синтаксис, который roifill поддерживает, чтобы задать видимую область (ROI). Чтобы задать ROI в интерактивном режиме, используйте roipoly с regionfill.

Алгоритмы

regionfill гладко интерполирует внутрь от пиксельных значений на внешней границе областей. regionfill вычисляет дискретный Лапласиан по областям и решает краевую задачу Дирихле.

Смотрите также

| | | | |

Представленный в R2015a