exponenta event banner

Измерение областей в градациях серого

В этом примере показано, как измерять свойства объектов в оттенках серого. Для этого сначала сегментируйте изображение в градациях серого, чтобы получить двоичное изображение объектов. Затем используйте 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: Расчет свойств объекта с использованием значений пикселов изображения в градациях серого

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.

См. также