regionprops

Измерьте свойства областей изображений

Описание

пример

stats = regionprops(BW,properties) возвращает измерения для набора свойств, заданных properties для каждого связанного с 8 компонента (объект) в двухуровневом изображении, BWстатистика массив структур, содержащий struct для каждого объекта в изображении. Можно использовать regionprops на непрерывных областях и несмежных областях (см. Алгоритмы).

Примечание

Чтобы возвратить измерения 3-D объемного изображения, рассмотрите использование regionprops3. В то время как regionprops может принять 3-D изображения, regionprops3 вычисляет больше статистики для 3-D изображений, чем regionprops.

Для всех синтаксисов, если вы не задаете properties аргумент, затем regionprops возвращает 'Area'центроид, и 'BoundingBox' измерения.

Опционально можно измериться, свойства областей изображений с помощью графического процессора (требует Parallel Computing Toolbox™). 'ConvexArea'Выпуклая оболочка, 'ConvexImage', 'Circularity', 'EulerNumber', 'FilledArea', 'FilledImage', 'MaxFeretProperties', 'MinFeretProperties' и 'Solidity' свойства не поддержаны на графическом процессоре.

stats = regionprops(CC,properties) измеряет набор свойств для каждого связанного компонента (объект) в CC, который является структурой, возвращенной bwconncomp.

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

stats = regionprops(L,properties) измеряет набор свойств для каждой помеченной области в матрице метки L.

stats = regionprops(___,I,properties) возвращает измерения для набора свойств, заданных properties для каждой помеченной области в изображении I. Первый вход к regionprops (BWcc , или L) идентифицирует области в I.

пример

stats = regionprops(output,___) возвращает измерения для набора свойств, где output задает тип возвращаемого значения. regionprops может возвратить измерения в struct массив или table.

'table' выходное значение не поддержано на графическом процессоре.

Примеры

свернуть все

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

BW = imread('text.png');

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

s = regionprops(BW,'centroid');

Сохраните x-и y-координаты центроидов в матрицу 2D столбца.

centroids = cat(1,s.Centroid);

Отобразите двухуровневое изображение с центроидными наложенными местоположениями.

imshow(BW)
hold on
plot(centroids(:,1),centroids(:,2),'b*')
hold off

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

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

a = imread('circlesBrightDark.png');

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

bw = a < 100;
imshow(bw)
title('Image with Circles')

Вычислите свойства областей в изображении и возвратите данные в таблице.

stats = regionprops('table',bw,'Centroid',...
    'MajorAxisLength','MinorAxisLength')
stats=4×3 table
        Centroid        MajorAxisLength    MinorAxisLength
    ________________    _______________    _______________

     256.5     256.5        834.46             834.46     
       300       120        81.759             81.759     
    330.47    369.83        111.78             110.36     
       450       240        101.72             101.72     

Получите центры и радиусы кругов.

centers = stats.Centroid;
diameters = mean([stats.MajorAxisLength stats.MinorAxisLength],2);
radii = diameters/2;

Постройте круги.

hold on
viscircles(centers,radii);
hold off

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

свернуть все

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

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

Связанные компоненты, заданные как структура, возвращенная bwconncomp.

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

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

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

Тип измерения, заданного как список, разделенный запятыми скаляров строки или векторов символов, массива ячеек скаляров строки или векторов символов, или как 'all' или 'basic'. Имена свойства являются нечувствительными к регистру и могут быть сокращены. Когда используется с генерацией кода, regionprops не поддерживает массивы ячеек скаляров строки или векторов символов.

  • Если вы задаете 'all', regionprops вычисляет все измерения формы и, для полутоновых изображений, измерения пиксельного значения также.

  • Если вы задаете 'basic', или не задавайте properties аргумент, regionprops вычисляет только 'Area'центроид, и 'BoundingBox' измерения.

Следующие таблицы приводят все свойства, которые обеспечивают измерения формы. Свойства, перечисленные в таблице Pixel Value Measurements, допустимы только, когда вы задаете полутоновое изображение.

Сформируйте измерения

PropertyName ОписаниеПоддержка N-DПоддержка графического процессораГенерация кода
'Area'

Фактическое количество пикселей в области, возвращенной как скаляр. (Это значение может отличаться немного от значения, возвращенного bwarea, какие веса различные шаблоны пикселей по-другому.)

Чтобы найти эквивалент области 3-D объема, используйте 'Volume' свойство regionprops3.

ДаДаДа
'BoundingBox'Наименьший прямоугольник, содержащий область, возвращенную как 1 Q*2 вектор, где Q количество размеров изображения. Например, в векторном [ul_corner width], ul_corner задает верхний левый угол ограничительной рамки в форме [x y z ...]width задает ширину ограничительной рамки по каждому измерению в форме [x_width y_width ...]. regionprops использование ndims получить размерности матрицы метки или двухуровневого изображения, ndims(L), и numel получить размерности связанных компонентов, numel(CC.ImageSize).ДаДаДа
'Centroid'

Центр массы области, возвращенной как 1 Q вектор. Первый элемент Centroid горизонтальная координата (или x-координата) центра массы. Второй элемент является вертикальной координатой (или y-координата). Все другие элементы Centroid в порядке размерности. Этот рисунок иллюстрирует центроидную и ограничительную рамку для несмежной области. Область состоит из белых пикселей; зеленое поле является ограничительной рамкой, и красная точка является центроидом.

ДаДаДа
'ConvexArea'Количество пикселей в 'ConvexImage', возвращенный как скаляр.2D толькоНетНет
'ConvexHull'Самый маленький выпуклый многоугольник, который может содержать область, возвратился как p-by-2 матрица. Каждая строка матрицы содержит x-и y-координаты одной вершины многоугольника.2D толькоНетНет
'ConvexImage'Отобразите, который задает выпуклую оболочку со всеми пикселями в заполненной оболочке (набор к on), возвратился как двухуровневое изображение (logical). Изображение является размером ограничительной рамки области. (Для пикселей, через которые контур оболочки проходит, regionprops использует ту же логику в качестве roipoly определить, является ли пиксель внутри или снаружи оболочки.) 2D толькоНетНет
'Circularity'Зацикливание, которое задает округлость объектов, возвратилось как struct с полем Circularity. Struct содержит значение зацикливания для каждого объекта во входном изображении. Значение зацикливания вычисляется как (4*Area*pi)/(Perimeter2). Для A Perfect Circle значение зацикливания равняется 1. Вход должен быть матрицей метки или двухуровневым изображением с непрерывными областями. Если изображение содержит несмежные области, regionprops возвращает неожиданные результаты. Зацикливание не рекомендуется для очень маленьких объектов, таких как 3*3 квадрата. Для таких случаев результаты могут превысить значение зацикливания для A Perfect Circle, которые являются 1.2D толькоНетДа
'Eccentricity'Эксцентриситет эллипса, который имеет те же вторые моменты как область, возвратился как скаляр. Эксцентриситет является отношением расстояния между особым вниманием эллипса и его главной длины оси. Значение между 0 и 1. (0 и 1 вырожденные случаи. Эллипс, эксцентриситет которого 0, является на самом деле кругом, в то время как эллипс, эксцентриситет которого равняется 1, является линейным сегментом.)2D толькоДаДа
'EquivDiameter'Диаметр круга с той же областью как область, возвращенная как скаляр. Вычисленный как sqrt(4*Area/pi).2D толькоДаДа
'EulerNumber'Количество объектов в области минус количество отверстий в тех объектах, возвращенных как скаляр. Это свойство поддерживается только для 2D матриц метки. regionprops использует с 8 возможностями соединения, чтобы вычислить измерение Числа Эйлера. Чтобы узнать больше о возможности соединения, смотрите Пиксельную Возможность соединения.2D толькоНетДа
'Extent'Отношение пикселей в области к пикселям в общей ограничительной рамке, возвращенной как скаляр. Вычисленный как Area разделенный на область ограничительной рамки.2D толькоДаДа
'Extrema'

Extrema указывает в области, возвращенной как 8 2 матрица. Каждая строка матрицы содержит x-и y-координаты одной из точек. Форматом вектора является [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]. Этот рисунок иллюстрирует экстремальное значение двух различных областей. В области слева, каждая экстремальная точка отлична. В области справа, определенные экстремальные точки (например, top-left и left-top) идентичны.

2D толькоДаДа
'FilledArea'Количество on пиксели в FilledImage, возвращенный как скаляр.ДаНетДа
'FilledImage'

Отобразите тот же размер как ограничительная рамка области, возвращенной как двоичный файл (logicalМассив. on пиксели соответствуют области, со всеми заполненными отверстиями, как показано в этом рисунке.

ДаНетДа
'Image'Отобразите тот же размер как ограничительная рамка области, возвращенной как двоичный файл (logicalМассив. on пиксели соответствуют области, и всеми другими пикселями является off.ДаДаДа
'MaxFeretProperties'Свойства Feret, которые включают максимальный диаметр Feret, его относительный угол, и координируют значения, возвратились как struct с полями:
Поле Описание
MaxFeretDiameterМаксимальный диаметр Feret измерился как максимальное расстояние между любыми двумя граничными точками на диаметрально противоположных вершинах выпуклой оболочки, которые заключают объект.
MaxFeretAngleУгол максимального диаметра Feret относительно горизонтальной оси изображения.
MaxFeretCoordinatesКоординаты конечной точки максимального диаметра Feret.
Вход может быть двухуровневым изображением, связанным компонентом или матрицей метки.
2D толькоНетНет
'MinFeretProperties'Свойства Feret, которые включают минимальный диаметр Feret, его относительный угол, и координируют значения, возвратились как struct с полями:
Поле Описание
MinFeretDiameterМинимальный диаметр Feret измерился как минимальное расстояние между любыми двумя граничными точками на диаметрально противоположных вершинах выпуклой оболочки, которые заключают объект.
MinFeretAngleУгол минимального диаметра Feret относительно горизонтальной оси изображения.
MinFeretCoordinatesКоординаты конечной точки минимального диаметра Feret.
Вход может быть двухуровневым изображением, связанным компонентом или матрицей метки.
2D толькоНетНет
'MajorAxisLength'Длина (в пикселях) главной оси эллипса, который имеет те же нормированные вторые центральные моменты как область, возвратилась как скаляр.2D толькоДаДа
'MinorAxisLength'Длина (в пикселях) незначительной оси эллипса, который имеет те же нормированные вторые центральные моменты как область, возвратилась как скаляр.2D толькоДаДа
'Orientation'

Угол между осью X и главной осью эллипса, который имеет те же вторые моменты как область, возвратился как скаляр. Значение в градусах, в пределах от-90 градусов до 90 градусов. Этот рисунок иллюстрирует оси и ориентацию эллипса. Левая сторона фигуры показывает область изображений и ее соответствующий эллипс. Правая сторона показывает тот же эллипс с чисто синими линиями, представляющими оси. Красные точки являются особым вниманием. Ориентация является углом между горизонтальной пунктирной линией и главной осью.

2D толькоДаДа
'Perimeter'

Расстояние вокруг контура области, возвращенной как скаляр. regionprops вычисляет периметр путем вычисления расстояния между каждой смежной парой пикселей вокруг границы области. Если изображение содержит несмежные области, regionprops возвращает неожиданные результаты. Этот рисунок иллюстрирует пиксели, включенные в вычисление периметра для этого объекта.

2D толькоДаДа
'PixelIdxList'Линейные индексы пикселей в области, возвращенной как p - вектор элемента. ДаДаДа
'PixelList'Местоположения пикселей в области, возвращенной как p-by-Q матрица. Каждая строка матрицы имеет форму [x y z ...] и задает координаты одного пикселя в области.ДаДаДа
'Solidity'Пропорция пикселей в выпуклой оболочке, которые находятся также в области, возвратилась как скаляр. Вычисленный как Area/ConvexArea.2D толькоНетНет
'SubarrayIdx'Элементы L в объектной ограничительной рамке, возвращенной как массив ячеек, который содержит индексы, таким образом что L(idx{:}) извлекает элементы.ДаДаНет

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

Измерения пиксельного значения

PropertyName ОписаниеПоддержка N-DПоддержка графического процессораГенерация кода
'MaxIntensity'Значение пикселя с самой большой интенсивностью в области, возвращенной как скаляр.ДаДаДа
'MeanIntensity'Среднее значение всех значений интенсивности в области, возвращенной как скаляр.ДаДаДа
'MinIntensity'Значение пикселя с самой низкой интенсивностью в области, возвращенной как скаляр.ДаДаДа
'PixelValues'Количество пикселей в области, возвращенной как p-by-1 вектор, где p является количеством пикселей в области. Каждый элемент в векторе содержит значение пикселя в области.ДаДаДа
'WeightedCentroid'Центр области на основе местоположения и значения интенсивности, возвращенного как p-by-Q вектор координат. Первый элемент WeightedCentroid горизонтальная координата (или x-координата) взвешенного центроида. Второй элемент является вертикальной координатой (или y-координата). Все другие элементы WeightedCentroid в порядке размерности. ДаДаДа

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

Отобразите, чтобы быть измеренными, заданными как полутоновое изображение. Размер изображения должен совпадать с размером двухуровневого изображения BW, связанная структура компонента CC, или матрица метки L.

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

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

ЗначениеОписание
'struct'Возвращает массив структур с длиной, равной количеству объектов в BWcc .NumObjects, или макс. (L(:)). Поля массива структур обозначают различные свойства для каждой области, как задано properties.
'table'

Возвращает таблицу MATLAB® с высотой (количество строк) равный количеству объектов в BWcc .NumObjects, или макс. (L(:)). Переменные (столбцы) обозначают различные свойства для каждой области, как задано properties. Чтобы узнать больше о таблицах MATLAB, смотрите table.

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

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

свернуть все

Значения измерения, возвращенные как массив структур или таблицы. Количество структур в массиве или количество строк в таблице, соответствует количеству объектов в BW, CC.NumObjects, или max(L(:)). Поля каждого struct или переменные в каждой строке, обозначают свойства, вычисленные для каждой области, как задано properties.

Советы

  • Функциональный ismember полезно с regionprops, bwconncomp, и labelmatrix для создания двухуровневого изображения, содержащего только, возражает или области, которые соответствуют определенным критериям. Например, эти команды создают двухуровневое изображение, содержащее только области, область которых больше 80 и чей эксцентриситет меньше 0.8.

    cc = bwconncomp(BW); 
    stats = regionprops(cc, 'Area','Eccentricity'); 
    idx = find([stats.Area] > 80 & [stats.Eccentricity] < 0.8); 
    BW2 = ismember(labelmatrix(cc), idx);  
    
  • Синтаксис списка, разделенного запятыми для массивов структур полезен, когда вы работаете с выходом regionprops. Для поля, которое содержит скаляр, можно использовать этот синтаксис, чтобы создать вектор, содержащий значение этого поля для каждой области в изображении. Например, если stats массив структур с полем Area, затем следующее выражение:

    stats(1).Area, stats(2).Area, ..., stats(end).Area
    

    эквивалентно:

    stats.Area
    

    Поэтому можно использовать эти вызовы, чтобы создать вектор, содержащий область каждой области в изображении. allArea вектор той же длины как массив структур stats.

    stats = regionprops(L, 'Area');
    allArea = [stats.Area];
    
  • Функции bwlabel, bwlabeln, и bwconncomp все вычисляют соединенные компоненты для двухуровневых изображений. bwconncomp заменяет использование bwlabel и bwlabeln. Это использует меньше памяти и иногда быстрее, чем другие функции.

    ФункцияВведите размерность'OutputForm' Использование памятиВозможность соединения
    bwlabel2DМатрица метки с с двойной точностьюВысоко4 или 8
    bwlabelnN-DМатрица метки с двойной точностьюВысокоЛюбой
    bwconncompN-DCC struct ()НизкоЛюбой

    Выход bwlabel и bwlabeln матрица метки с двойной точностью. Чтобы вычислить матрицу метки использование более эффективного памятью типа данных, используйте labelmatrix функция на выходе bwconncomp:

    CC = bwconncomp(BW);
    L = labelmatrix(CC);

    Если вы измеряете компоненты в двухуровневом изображении с возможностью соединения по умолчанию, более не необходимо вызвать bwlabel или bwlabeln сначала. Можно передать двухуровневое изображение непосредственно regionprops, который затем использует эффективный памятью bwconncomp функция, чтобы вычислить связанные компоненты автоматически. Чтобы задать возможность соединения не по умолчанию, вызовите bwconncomp и передайте результат regionprops.

    CC = bwconncomp(BW, CONN);
    S = regionprops(CC);
  • Большинство измерений занимает время, чтобы вычислить. Однако следующие измерения могут занять больше времени, в зависимости от количества областей в L:

    • 'ConvexHull'

    • 'ConvexImage'

    • 'ConvexArea'

    • 'FilledImage'

  • Вычислительные определенные группы измерений берут о том же количестве времени в качестве вычисляющий только одного из них. regionprops использует в своих интересах промежуточные расчеты, полезные для каждого расчета. Поэтому это является самым быстрым, чтобы вычислить все желаемые измерения в одном вызове regionprops.

Алгоритмы

Непрерывные области также называются objects, connected components или blobs. Матрица метки, содержащая непрерывные области, может выглядеть так:

1 1 0 2 2 0 3 3
1 1 0 2 2 0 3 3
Элементы L равняйтесь 1, принадлежат первой непрерывной области или соединенному компоненту; элементы L равняйтесь 2, принадлежат второму связанному компоненту; и так далее.

Несмежные области являются областями, которые могут содержать несколько связанных компонентов. Матрица метки, содержащая несмежные области, может выглядеть так:

1 1 0 1 1 0 2 2
1 1 0 1 1 0 2 2
Элементы L равняйтесь 1, принадлежат первой области, которая является несмежной и содержит два связанных компонента. Элементы L равняйтесь 2, принадлежат второй области, которая является одним связанным компонентом.

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

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