regionprops

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

Описание

пример

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

Примечание

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

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

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.

Примеры

свернуть все

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

BW = imread('text.png');

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

s = regionprops(BW,'centroid');

Сохраните координаты x и y центроидов в двухколоночную матрицу.

centroids = cat(1,s.Centroid);

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

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

Figure contains an axes. The axes contains 2 objects of type image, line.

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

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

a = imread('circlesBrightDark.png');

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

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

Figure contains an axes. The axes with title Image with Circles contains an object of type image.

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

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

Figure contains an axes. The axes with title Image with Circles contains 3 objects of type line, image.

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

свернуть все

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

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

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

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

Пометьте изображение как одно из следующих.

  • Числовой массив любой размерности. Пиксели, маркированные 0 являются фоном. Пиксели, маркированные 1 составляют один объект; пиксели, отмеченные 2 составляют второй объект; и так далее. regionprops обрабатывает отрицательные пиксели как фон и округляет вниз входные пиксели, которые не являются целыми числами. Вы можете получить числовое изображение метки из функций маркировки, таких как watershed или labelmatrix.

  • Категориальный массив. Каждая категория соответствует отдельной области.

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

Тип измерения, заданный как разделенный запятыми список строковых скаляров или векторов символов, массив ячеек из строковых скаляров или векторов символов или как 'all' или 'basic'.

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

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

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

Измерения формы

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

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

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

ДаДаДа
'BoundingBox'

Положение и размер наименьшего ящика, содержащего область, возвращаются как вектор 1 бай- (2 * Q). Первыми элементами Q являются координаты минимального угла рамки. Вторыми Q элементами являются размеры коробки по каждой размерности. Например, 2-D ограничивающий прямоугольник с [5.5 8.5 11 14] значений указывает, что (x, y) координата верхнего левого угла рамки - (5,5, 8,5), горизонтальная ширина рамки - 11 пикселей, а вертикальная высота рамки - 14 пикселей.

ДаДаДа
'Centroid'

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

ДаДаДа
'Circularity'

Округлость объектов, возвращенная как struct с Circularity поля. Этот struct содержит значение круговости для каждого объекта на вход изображении. Значение округлости вычисляется как (4 * Area * pi )/( Perimeter2). Для идеального круга значение круговости равняется 1. Входной вход должен быть матрицей меток или бинарным изображением с смежными областями. Если изображение содержит несмежные области, regionprops возвращает неожиданные результаты.

Примечание

Circularity не рекомендуется для очень маленьких объектов, таких как квадрат 3 на 3. В таких случаях результаты могут превысить значение круговости для идеального круга.

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

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

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

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

ДаНетДа
'Image'Изображение того же размера, что и ограничивающий прямоугольник области, возвращенное в виде двоичного (logical) массив. The on пиксели соответствуют области, и все другие пиксели off.ДаДаДа
'MajorAxisLength'Длина (в пикселях) большой оси эллипса, которая имеет те же нормированные вторые центральные моменты, что и область, возвращенная как скаляр.2-D толькоДаДа
'MaxFeretProperties'

Свойства Ферета, которые включают максимальный диаметр Ферета, его относительный угол и значения координат, возвращаются как struct с полями:

ОбластьОписание
MaxFeretDiameterМаксимальный диаметр Ферета, измеренный как максимальное расстояние между любые два контура точками на антиподальных вершинах выпуклой оболочки, которые окружают объект.
MaxFeretAngleУгол максимального диаметра Ферета относительно горизонтальной оси изображения.
MaxFeretCoordinatesКоординаты конечной точки максимального диаметра Ферета.

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

2-D толькоНетНет
'MinFeretProperties'

Свойства Ферета, которые включают минимальный диаметр Ферета, его относительный угол и значения координат, возвращаются как struct с полями:

ОбластьОписание
MinFeretDiameterМинимальный диаметр Ферета, измеренный как минимальное расстояние между любые два контура точками на антиподальных вершинах выпуклой оболочки, которые окружают объект.
MinFeretAngleУгол минимального диаметра Ферета относительно горизонтальной оси изображения.
MinFeretCoordinatesКоординаты конечной точки минимального диаметра Ферета.

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

2-D толькоНетНет
'MinorAxisLength'Длина (в пикселях) малой оси эллипса, которая имеет те же нормированные вторые центральные моменты, что и область, возвращенная как скаляр.2-D толькоДаДа
'Orientation'

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

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

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

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

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

Измерения пиксельных значений

Имя свойства ОписаниеПоддержка N-DПоддержка графического процессораГенерация кода
'MaxIntensity'Значение пикселя с наибольшей интенсивностью в области, возвращаемое как скаляр.ДаДаДа
'MeanIntensity'Среднее из всех значений интенсивности в области, возвращаемое в виде скаляра.ДаДаДа
'MinIntensity'Значение пикселя с самой низкой интенсивностью в области, возвращаемое как скаляр.ДаДаДа
'PixelValues'Количество пикселей в области, возвращаемое как p-на-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'

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

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

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

свернуть все

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

Подробнее о

свернуть все

Смежные области и разъединенные области

Смежные области также называются objects, connected components или blobs. Изображение метки L содержащие смежные области могут выглядеть следующим образом:

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 относятся ко второй области, которая является одним соединенным компонентом.

Совет

  • ismember Функция используется для создания бинарного изображения, содержащего только объекты или области, удовлетворяющие определенным критериям. Для примера эти команды создают бинарные изображения, содержащую только области, площадь которых больше 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);  
    
  • Связь по умолчанию является 8-соединенной для 2-D изображений и максимальной для больших размерностей. Чтобы задать подключение без ограничений, используйте bwconncomp чтобы создать подключенные компоненты и затем передать результат в regionprops.

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

  • Большинство измерений занимает мало времени, чтобы вычислить. Однако эти измерения могут занять больше времени, в зависимости от числа регионов в L:

    • 'ConvexHull'

    • 'ConvexImage'

    • 'ConvexArea'

    • 'FilledImage'

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

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