regionprops

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

Синтаксис

stats = regionprops(BW,properties)
stats = regionprops(CC,properties)
stats = regionprops(L,properties)
stats = regionprops(___,I,properties)
stats = regionprops(output,___)

Описание

пример

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

Примечание

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

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

Опционально можно измериться, свойства областей изображений с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре. 'ConvexArea', 'ConvexHull', '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 (BW, CC или 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

Считайте двухуровневое изображение в gpuArray.

BW = gpuArray(imread('text.png'));

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

s  = regionprops(BW,'centroid');

Постройте центроиды на изображении.

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

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

свернуть все

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

Чтобы измерить свойства областей изображений с помощью графического процессора, задайте BW как gpuArray, который содержит 2D логическую матрицу.

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

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

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

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

Чтобы измерить свойства областей изображений с помощью графического процессора, задайте L как gpuArray, который содержит 2D матрицу метки.

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

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

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

  • Если вы задаете 'basic' или не задаете аргумент properties, regionprops вычисляет только 'Area', 'Centroid' и измерения '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'Возвращает массив структур с длиной, равной количеству объектов в BW, CC.NumObjects или max(L(:)). Поля массива структур обозначают различные свойства для каждой области, как задано properties.
'table'

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

Не поддерживаемый на графическом процессоре.

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

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

свернуть все

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

Когда работается графический процессор, regionprops может только возвратить массивы структур.

Советы

  • Функциональный 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-DStruct CCНизкоЛюбой

    Вывод 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

Для просмотра документации необходимо авторизоваться на сайте