exponenta event banner

заполнение

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

Описание

пример

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-подключенных

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

  • Одно из этих направлений: внутрь, наружу, влево, вправо, вверх и вниз

  • Комбинация двух направлений, например, вправо вниз или вверх

26-подключенных

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

  • Одно из этих направлений: внутрь, наружу, влево, вправо, вверх и вниз

  • Комбинация двух направлений, например, вправо вниз или вверх

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

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

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

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

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

свернуть все

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

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

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

Алгоритмы

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

Ссылки

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

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

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