imfill

Заполнение областей изображений и отверстий

Описание

пример

BW2 = imfill(BW,locations) выполняет операцию заливки на фоновые пиксели входного бинарного изображения BW, начиная с точек, указанных в locations.

BW2 = imfill(BW,locations,conn) заполняет область, заданную как locations, где conn задает возможность подключения.

пример

BW2 = imfill(BW,'holes') заполняет отверстия в вход бинарного изображения BW. В этом синтаксисе отверстие является набором фоновых пикселей, до которых невозможно добраться, заполнив фон от ребра изображения.

пример

BW2 = imfill(BW,conn,'holes') заполняет отверстия в бинарное изображение BW, где conn задает возможность подключения.

пример

I2 = imfill(I) заполняет отверстия в полутоновом изображении I. В этом синтаксисе отверстие определяется как область темных пикселей, окруженных более легкими пикселями.

пример

I2 = imfill(I,conn) заполняет отверстия в полутоновом изображении I, где conn задает возможность подключения.

BW2 = imfill(BW) отображает бинарное изображение BW на экране и позволяет вам задать область для заполнения путем интерактивного выбора точек мышью. Чтобы использовать этот синтаксис, BW должно быть 2-D изображением.

Нажмите Backspace или Delete, чтобы удалить ранее выбранную точку. Щелкните правой кнопкой мыши или дважды щелкните, чтобы выбрать конечную точку и начать операцию заливки. Нажмите Return, чтобы завершить выбор без добавления точки.

BW2 = imfill(BW,0,conn) позволяет переопределить соединяемость по умолчанию, когда вы в интерактивном режиме задаете местоположения.

[BW2, locations_out] = imfill(BW) возвращает местоположения точек, выбранных в интерактивном режиме в locations_out. Чтобы использовать этот синтаксис, BW должно быть 2-D изображением.

Примеры

свернуть все

BW1 = logical([1 0 0 0 0 0 0 0
               1 1 1 1 1 0 0 0
               1 0 0 0 1 0 1 0
               1 0 0 0 1 1 1 0
               1 1 1 1 0 1 1 1
               1 0 0 1 1 0 1 0
               1 0 0 0 1 0 1 0
               1 0 0 0 1 1 1 0]);

BW2 = imfill(BW1,[3 3],8)
BW2 = 8x8 logical array

   1   0   0   0   0   0   0   0
   1   1   1   1   1   0   0   0
   1   1   1   1   1   0   1   0
   1   1   1   1   1   1   1   0
   1   1   1   1   1   1   1   1
   1   0   0   1   1   1   1   0
   1   0   0   0   1   1   1   0
   1   0   0   0   1   1   1   0

Чтение изображения в рабочую область.

I = imread('coins.png');
figure
imshow(I)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

Преобразуйте изображение в бинарное изображение.

BW = imbinarize(I);
figure
imshow(BW)
title('Original Image Converted to Binary Image')

Figure contains an axes. The axes with title Original Image Converted to Binary Image contains an object of type image.

Заполните отверстия в бинарном изображении и отобразите результат.

BW2 = imfill(BW,'holes');
figure
imshow(BW2)
title('Filled Image')

Figure contains an axes. The axes with title Filled Image contains an object of type image.

I = imread('tire.tif');
I2 = imfill(I);
figure, imshow(I), figure, imshow(I2)

Figure contains an axes. The axes contains an object of type image.

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Бинарное изображение, заданное как логический массив любой размерности.

Пример: BW = imread('text.png');

Типы данных: logical

Линейные индексы, идентифицирующие пиксельные местоположения, заданные как числовой вектор или 2-D числовая матрица положительных целых чисел. Если locations является вектором p -by-1, затем содержит линейные индексы начальных местоположений. Если locations является p -by- ndims(BW) матрица, затем каждая строка содержит индексы массива одного из начальных местоположений.

Пример: [3 3]

Типы данных: double

Полутоновое изображение, заданное как числовой массив любой размерности.

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

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

Пиксельная связность, заданная как одно из значений в этой таблице. Связность по умолчанию 4 для 2-D изображений и 6 для 3-D изображений.

Значение

Значение

Двумерные связи

4-соединенный

Пиксели соединяются, если их ребра касаются. Окрестностью пикселя являются соседние пиксели в горизонтальном или вертикальном направлении.

8-соединенный

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

Трехмерные связи

6-соединенный

Пиксели соединяются, если их лица касаются. Окрестностью пикселя являются смежные пиксели в:

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

18-соединенный

Пиксели соединяются, если их грани или ребра касаются. Окрестностью пикселя являются смежные пиксели в:

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

  • Комбинация двух направлений, таких как right-down или in-up

26-соединенный

Пиксели соединяются, если их грани, ребра или углы касаются. Окрестностью пикселя являются смежные пиксели в:

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

  • Комбинация двух направлений, таких как right-down или in-up

  • Комбинация трех направлений, таких как справа вверх или слева вниз

Для более высоких размерностей, imfill использует значение по умолчанию conndef(ndims (BW), 'minimal').

Связь также может быть определена более общим образом для любой размерности путем определения 3х3-бай-... -by-3 матрица 0s и 1с. The 1-значенные элементы определяют местоположения окрестностей относительно центрального элемента conn. Обратите внимание, что conn должно быть симметричным относительно его центрального элемента. Дополнительные сведения см. в разделе «Определение пользовательских соединений».

Типы данных: double | logical

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

свернуть все

Заполненное бинарное изображение, возвращенное как логический массив.

Линейные индексы пиксельных местоположений, возвращенные в виде числового вектора или матрицы.

Заполненное полутоновое изображение, возвращенное в виде числового массива.

Алгоритмы

imfill использует алгоритм, основанный на морфологической реконструкции [1].

Ссылки

[1] Soille, P., Morphological Image Analysis: Principles and Applications, Springer-Verlag, 1999, pp. 173-174.

Расширенные возможности

.
Представлено до R2006a