exponenta event banner

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. Функция возвращает измерения в таблице. 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. 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(:));

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Алгоритмы

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

Учитывая координаты конечной точки максимального (или минимального) диаметра Ферета, [x1 y1x2 y2], максимальный (или минимальный) угол Ферета измеряется как угол = tan 1 (y2 − y1x2 x1).

Представлен в R2019a