bwferet

Свойства Measure Feret

Описание

пример

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

пример

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

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

out = bwferet(input) измеряет максимальный диаметр Feret, его относительный угол и координатные значения, измеренные от input. Функция возвращает измерения в таблице. 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 объекта со значением метки 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 объекта со значением метки 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

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

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 object. The axes object 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

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

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

 -175.0608
 -127.4568
  121.0683
 -131.1859

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

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

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

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 object. The axes object 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 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 является количеством объектов, для которых измеряются свойства Feret. 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 со всеми столбцами, перечисленными в этой таблице.

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

Направленный угол максимального диаметра Feret относительно горизонтальной оси изображения. Значение, в градусах, находится в области значений [–180o,180o]

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

Направленный угол минимального диаметра Feret относительно горизонтальной оси изображения. Значение, в градусах, находится в области значений [–180o,180o]

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

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

Примечание

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

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

Алгоритмы

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

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

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

| | | |

Введенный в R2019a