bwferet

Свойства Measure Feret

Синтаксис

out = bwferet(BW,properties)
out = bwferet(CC,properties)
out = bwferet(L,properties)
out = bwferet(input)
[out,LM] = bwferet(___)

Описание

пример

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

пример

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

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

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      {2×2 double} 
      132.08       -159.27      {2×2 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)

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

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      {2×2 double} 
      156.21       -127.46      {2×2 double} 
      187.96        121.07      {2×2 double} 
      63.781       -131.19      {2×2 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)

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

свернуть все

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

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

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

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

Можно использовать функцию 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, возвращенного в форме [x1     y1x2     y2]
MinDiameterМинимальный диаметр Feret объекта, измеренного как минимальное расстояние между любыми двумя граничными точками на диаметрально противоположных вершинах выпуклой оболочки, которая заключает тот объект
MinAngle

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

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

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

Примечание

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

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

Алгоритмы

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

Учитывая координаты конечной точки максимума (или минимум) диаметр Feret, максимум (или минимум) угол Feret измеряется как.

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

| | | |

Введенный в R2019a