заполнение

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

Синтаксис

BW2 = imfill(BW,locations)
BW2 = imfill(BW,locations,conn)
BW2 = imfill(BW,'holes')
BW2 = imfill(BW,conn,'holes')
I2 = imfill(I)
I2 = imfill(I,conn)
BW2 = imfill(BW)
BW2 = imfill(BW,0,conn)
[BW2, locations_out] = imfill(BW)

Описание

пример

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

Опционально можно выполнить операцию заливки с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре.

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 должен быть 2D изображением.

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

Этот синтаксис не поддержан на графическом процессоре.

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

Этот синтаксис не поддержан на графическом процессоре.

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

Этот синтаксис не поддержан на графическом процессоре.

Примеры

свернуть все

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')

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

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

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

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

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

Создайте двухуровневое изображение простой выборки.

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])
BW1 =

     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

Создайте gpuArray.

BW1 = gpuArray(BW1);    

Заполните в фоновом режиме изображения от заданного стартового местоположения.

BW2 = imfill(BW1,[3 3],8)
BW2 =

     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

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

свернуть все

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

Чтобы заполнить области изображений и дыры с помощью графического процессора, задайте BW как gpuArray, который содержит действительный, неразреженный, логический массив любой размерности.

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

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

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

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

Пример: [3 3]

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

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

Чтобы заполнить области изображений и дыры с помощью графического процессора, задайте I как gpuArray, который содержит действительный, неразреженный, числовой массив любой размерности.

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

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Значение

Значение

Двумерные возможности соединения

4

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

8

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

3D возможности соединения

6

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

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

18

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

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

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

26

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

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

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

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

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

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

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

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

свернуть все

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

Если области изображений и дыры заполнены с помощью графического процессора, то BW2 возвращен как gpuArray, который содержит логический массив.

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

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

Если области изображений и дыры заполнены с помощью графического процессора, то I2 возвращен как gpuArray, который содержит числовой массив.

Алгоритмы

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

Ссылки

[1] Soille, P., Морфологический Анализ изображения: Принципы и Приложения, Springer-Verlag, 1999, стр 173–174.

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

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

| | |

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