Измерение областей в полутоновых изображениях

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

Шаг 1: Создайте Синтетическое Изображение

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

I = propsSynthesizeImage;
imshow(I)
title('Synthetic Image')

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

Шаг 2: Создайте бинарное изображение

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

BW = I > 0;
imshow(BW)
title('Binary Image')

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

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

The regionprops функция поддерживает несколько свойств, которые могут использоваться с полутоновыми изображениями, включая 'WeightedCentroid', 'MeanIntensity', 'MinIntensity' и 'MaxIntensity'. Эти свойства используют исходные пиксельные значения объектов для их вычислений.

Для примера можно использовать regionprops вычислить центроид и взвешенный центроид объектов в изображении. Обратите внимание, как вы передаете в бинарном изображении (BW) содержащие ваши объекты и исходное полутоновое изображение (I) как аргументы в regionprops.

s = regionprops(BW,I,{'Centroid','WeightedCentroid'});

Чтобы сравнить взвешенные местоположения центроидов с невзвешенными расположениями центроидов, отобразите оригинальное изображение, а затем с помощью hold и plot функции, наложить центроиды на изображение.

imshow(I)
title('Weighted (red) and Unweighted (blue) Centroids'); 
hold on
numObj = numel(s);
for k = 1 : numObj
    plot(s(k).WeightedCentroid(1), s(k).WeightedCentroid(2), 'r*')
    plot(s(k).Centroid(1), s(k).Centroid(2), 'bo')
end
hold off

Figure contains an axes. The axes with title Weighted (red) and Unweighted (blue) Centroids contains 11 objects of type image, line.

Шаг 4: Вычисление пользовательских свойств на основе пикселей

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

В качестве примера вычислите стандартное отклонение каждой области.

s = regionprops(BW,I,{'Centroid','PixelValues','BoundingBox'});
imshow(I)
title('Standard Deviation of Regions')
hold on
for k = 1 : numObj
    s(k).StandardDeviation = std(double(s(k).PixelValues));
    text(s(k).Centroid(1),s(k).Centroid(2), ...
        sprintf('%2.1f', s(k).StandardDeviation), ...
        'EdgeColor','b','Color','r');
end
hold off

Figure contains an axes. The axes with title Standard Deviation of Regions contains 6 objects of type image, text.

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

figure
bar(1:numObj,[s.StandardDeviation])
xlabel('Region Label Number')
ylabel('Standard Deviation')

Figure contains an axes. The axes contains an object of type bar.

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

sStd = [s.StandardDeviation];
lowStd = find(sStd < 50);

imshow(I)
title('Objects Having Standard Deviation < 50')
hold on
for k = 1 : length(lowStd)
    rectangle('Position',s(lowStd(k)).BoundingBox,'EdgeColor','y');
end
hold off

Figure contains an axes. The axes with title Objects Having Standard Deviation < 50 contains 2 objects of type image, rectangle.

См. также

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