bwferet

Измерьте свойства Ферета

Описание

пример

out = bwferet(BW,properties) измеряет свойства Feret объектов в изображении и возвращает измерения в таблице. Область входа properties задает свойства Feret, которые будут измеряться для каждого объекта во входном бинарном изображении BW. Измеренные свойства Ферета включают минимальный и максимальный диаметры Ферета, углы Ферета и координаты конечной точки диаметров Ферета.

пример

out = bwferet(CC,properties) измеряет свойства Feret для каждого связанного компонента в структуре CC.

out = bwferet(L,properties) измеряет свойства Feret для каждого объекта в матрице входных меток L.

out = bwferet(input) измеряет максимальный диаметр Ферета, его относительный угол и координатные значения, измеренные из input. Функция возвращает измерения в таблице. The input может быть бинарным изображением BW, подключенный компонент CC, или матрица меток L.

[out,LM] = bwferet(___) также возвращает матрицу меток, содержащую значения меток, которые представляют индексы строк таблицы out. Можно использовать любой из входных параметров из предыдущих синтаксисов. Каждая строка в out соответствует маркированной области (объекту) в матрице меток LM.

Примеры

свернуть все

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

I = imread('toyobjects.png');

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

bw = imbinarize(I,'adaptive');

Извлеките первые два самых больших объекта из бинарного изображения.

bw = bwareafilt(bw,2);

Заполните отверстия в извлеченных областях объекта.

bw = imfill(bw,'holes');

Вычислите минимальные свойства Feret и матрицу меток извлеченных объектов.

[out,LM] = bwferet(bw,'MinFeretProperties');

Получите максимальное количество объектов в выходной матрице меток.

maxLabel = max(LM(:));

Отобразите выход, содержащий таблицу минимальных свойств Feret.

out
out=2×3 table
    MinDiameter    MinAngle    MinCoordinates
    ___________    ________    ______________

      116.23        99.462      {2x2 double} 
      132.08       -159.27      {2x2 double} 

Отобразите минимальные свойства Feret объекта со значением label-value 1 из матрицы выходных меток.

out.MinDiameter(1)
ans = 116.2301
out.MinAngle(1)
ans = 99.4623
out.MinCoordinates{1}
ans = 2×2

  120.5000  311.5000
  139.6081  196.8514

Отобразите минимальные свойства Feret объекта со значением label-value 2 из матрицы выходных меток.

out.MinDiameter(2)
ans = 132.0776
out.MinAngle(2)
ans = -159.2744
out.MinCoordinates{2}
ans = 2×2

  215.5000  197.5000
  339.0304  244.2412

Отобразите матрицу выходных меток. Постройте график координат конечной точки и минимального диаметра Ферета объектов с различными значениями меток из матрицы меток выхода.

h = imshow(LM,[]);
axis = h.Parent;
for labelvalues = 1:maxLabel
    xmin = [out.MinCoordinates{labelvalues}(1,1) out.MinCoordinates{labelvalues}(2,1)];
    ymin = [out.MinCoordinates{labelvalues}(1,2) out.MinCoordinates{labelvalues}(2,2)];
    imdistline(axis,xmin,ymin);
end
title(axis,'Minimum Feret Diameter of Objects');
colorbar('Ticks',1:maxLabel)

Figure contains an axes. The axes with title Minimum Feret Diameter of Objects contains 11 objects of type line, text, image.

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

I = imread('toyobjects.png');

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

bw = imbinarize(I,'adaptive');

Заполните отверстия в областях объектов входа бинарного изображения.

bw = imfill(bw,'holes');

Используйте bwconncomp функция для генерации связанных компонентов из полученного изображения.

cc = bwconncomp(bw);

Измерьте максимальные свойства Feret связанных компонентов.

[out,LM] = bwferet(cc,'MaxFeretProperties');

Получите максимальное количество объектов в выходной матрице меток.

maxLabel = max(LM(:));

Смотрите таблицу, чтобы проверить измеренные максимальные свойства Feret.

out
out=4×3 table
    MaxDiameter    MaxAngle    MaxCoordinates
    ___________    ________    ______________

       162.6       -175.06      {2x2 double} 
      156.21       -127.46      {2x2 double} 
      187.96        121.07      {2x2 double} 
      63.781       -131.19      {2x2 double} 

Отображение максимальных диаметров Feret объектов с различными значениями меток из выхода матрицы меток.

out.MaxDiameter(1:maxLabel)
ans = 4×1

  162.6038
  156.2082
  187.9628
   63.7809

Отображение углов наклона максимальных диаметров Ферета, характерных для объектов с различными значениями меток из матрицы выхода метки.

out.MaxAngle(1:maxLabel)
ans = 4×1

 -175.0608
 -127.4568
  121.0683
 -131.1859

Отображение координат конечной точки максимальных диаметров Ферета, характерных для объектов с различными значениями меток из матрицы выхода метки.

out.MaxCoordinates{1:maxLabel}
ans = 2×2

  186.5000  113.5000
   24.5000   99.5000

ans = 2×2

  156.5000  315.5000
   61.5000  191.5000

ans = 2×2

  337.5000  174.5000
  240.5000  335.5000

ans = 2×2

  288.5000  129.5000
  246.5000   81.5000

Отобразите матрицу выходных меток. Постройте график координат конечной точки и максимального диаметра Ферета объектов с различными значениями меток из выхода матрицы меток.

h = imshow(LM,[]);
axis = h.Parent;
for labelvalues = 1:maxLabel
    xmax = [out.MaxCoordinates{labelvalues}(1,1) out.MaxCoordinates{labelvalues}(2,1)];
    ymax = [out.MaxCoordinates{labelvalues}(1,2) out.MaxCoordinates{labelvalues}(2,2)];
    imdistline(axis,xmax,ymax);
end
title(axis,'Maximum Feret Diameter of Objects');
colorbar('Ticks',1:maxLabel)

Figure contains an axes. The axes with title Maximum Feret Diameter of Objects contains 21 objects of type line, text, image.

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

свернуть все

Бинарное изображение, заданное как логическая или числовая матрица. BW должно быть бинарным изображением, где ненулевые пиксели соответствуют объекту, а нулевые пиксели соответствуют фону.

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

Связанные компоненты, заданные как структура с четырьмя полями, показанными в этой таблице.

ОбластьОписание
ConnectivityСвязь связанных компонентов (объектов)
ImageSizeРазмер входа бинарного изображения
NumObjectsКоличество связанных компонентов (объектов) в вход бинарного изображения
PixelIdxList1-by- NumObjects массив ячеек, где k-й элемент является вектором, содержащим линейные индексы пикселей в k-м объекте

Вы можете использовать bwconncomp функция для генерации связанных компонентов из бинарного изображения.

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

Матрица меток смежных областей, заданная как матрица неотрицательных целых чисел. Пиксели с меткой 0 являются фоном. Пиксели, обозначенные 1, составляют один объект; пиксели, помеченные как 2, составляют второй объект; и так далее. Количество объектов, представленных L равно максимальному значению L. Вы можете использовать bwlabel функция для генерации матрицы меток из бинарного изображения.

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

Метка для свойств Feret, заданная как MaxFeretProperties, MinFeretProperties, или all.

Типы данных: char | string

Типовой вход, заданный как одно из следующих значений:

  • Числовая матрица или логическая матрица - Когда input является бинарным изображением, BW.

  • Структура - Когда input - связанный компонент, CC.

  • Матрица неотрицательных целых чисел - Когда input - матрица меток, L.

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

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

свернуть все

Таблица свойств Feret, возвращенная как m таблица -by n. m - количество объектов, для которых измеряются свойства Ферета. n 3 или 6, в зависимости от properties вход.

  • Если properties является 'MaxFeretProperties', затем таблица out имеет размер m -by-3 с столбцами MaxDiameter, MaxAngle, и MaxCoordinates.

  • Если properties является 'MinFeretProperties', затем таблица out имеет размер m -by-3 с столбцами MinDiameter, MinAngle, и MinCoordinates.

  • Если properties является 'all', затем таблица out имеет размер m -by-6 со всеми столбцами, перечисленными в этой таблице.

Имя столбцаОписание
MaxDiameterМаксимальный диаметр Ферета объекта, измеренный как максимальное расстояние между любыми двумя граничными точками на антиподальных вершинах выпуклой оболочки, которая окружает этот объект
MaxAngle

Угол наклона максимального диаметра Ферета относительно горизонтальной оси изображения. Значение в степенях находится в области значений [-180o,180o]

MaxCoordinatesКоординаты конечной точки максимального диаметра Ферета, возвращенные в форме [x1y1x2y2]
MinDiameterМинимальный диаметр Ферета объекта, измеренный как минимальное расстояние между любыми двумя граничными точками на антиподальных вершинах выпуклой оболочки, которая окружает этот объект
MinAngle

Угол наклона минимального диаметра Ферета относительно горизонтальной оси изображения. Значение в степенях находится в области значений [-180o,180o]

MinCoordinatesКоординаты конечной точки минимального диаметра Ферета, возвращенные в форме [x1y1x2y2]

Матрица меток смежных областей, заданная как матрица неотрицательных целых чисел. Пиксели с меткой 0 являются фоном. Пиксели, обозначенные 1, составляют один объект; пиксели, помеченные как 2, составляют второй объект; и так далее. Свойства Feret в k-й строке записи out соответствуют k-й области (объекту) в LM которые имеют значение, k. Количество объектов, представленных LM равно максимальному значению LM.

Примечание

Если вход в bwferet является матрицей меток, затем выходной матрицей меток LM совпадает с матрицей входных меток.

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

Алгоритмы

Свойства Ферета объекта измеряются с помощью граничных точек на антиподальных вершинах выпуклой оболочки, которая окружает этот объект.

Учитывая координаты конечной точки максимального (или минимального) диаметра Ферета, [x1y1x2y2], максимальный (или минимальный) угол Ферета измеряется как angle=tan1(y2y1x2x1).

Введенный в R2019a