В основном то, что я пытаюсь создать, - это гистограмма изображения при изменении интенсивности оттенков серого, показывающая область подключенных компонентов на изображении.Построение области объекта в оттенках серого по отношению к его уровню интенсивности в изображении в градациях серого
Позвольте пояснить далее, я планирую найти области всех подключенных компонентов изображения на , изменяя пороговые уровни. Затем объедините их все графически и покажите, как они построены на фоне уровня интенсивности изображения в оттенках серого, то есть 0 - 255
.
Надеюсь, мой код объяснит, что я пытаюсь сделать.
img = rgb2gray(imread('W1\Writer1_01_02.jpg'));
for k = 1:-0.01:0.1
bw_normal = im2bw(img, k);
bw = imcomplement(bw_normal);
[label,n] = bwlabel(bw);
stats = regionprops(label,img, {'Area', 'Centroid'});
plot([stats.Area],k,'o');
axis([0 1000 0.1 1])
hold on;
end
Как вы можете сказать, что я использовал цикл для получения изменяющегося порогового уровня, вычислить области ЦК и построить их против выбранного порогового уровня. Это то, что она производит:
это не то, что я хочу. Я пытаюсь воспроизвести этот результат. Он не должен смотреть exactle как это, но ничего близко похож бы
Я тогда узнал, что я могу найти свойства CC из полутонового изображения непосредственно с помощью STATS = regionprops(..., I, properties)
Так что я написал это:
img = rgb2gray(imread('W1\Writer1_01_02.jpg'));
for k = 1:-0.01:0.1
bw_normal = im2bw(img, k);
bw = imcomplement(bw_normal);
[label,n] = bwlabel(bw);
stats = regionprops(label,img, {'Area', 'Centroid'});
% plot([stats.Area],k,'o');
% axis([0 1000 0.1 1])
imshow(img);
hold on;
for j = 1:numel(stats)
text(stats(j).Centroid(1),stats(j).Centroid(2), ...
sprintf('%2.1f', stats(j).Area), ...
'EdgeColor','b','Color','r');
end
end
Это произвело следующее:
Итак, теперь я нашел области подключенных компонентов в оттенках серого. Как мне отобразить их, чтобы показать как мой желаемый результат (синий, который я показал выше)?
спасибо за чтение
вы можете сделать ваши исходные данные. Если я собираюсь взглянуть на код, чтобы что-то сделать, наличие фактических входных данных для работы может обеспечить более высокое качество вывода. – EngrStudent
Спасибо. Никаких конкретных данных не требуется. Любое текстовое изображение будет делать. Как и изображение, которое я показал в конце. – StuckInPhD
Я думаю, что для каждого уровня шкалы серого вам нужно извлечь список всех значений «Area» и построить из них гистограмму (используя согласованные значения bin). Каждая строка в этой «карте ширины» будет гистограммой для отдельного порогового уровня. – nkjt