У меня есть такие картинки: ![enter image description here](https://i.stack.imgur.com/FufOh.jpg)
Есть около 100 картинок, они отличаются друг от друга диаметром черных пузырьков.Мне нужно рассчитать средний диаметр пузырьков на каждой картинке.Итак, в конце я должен иметь массив из 100 элементов.
Общая структура скрипта должна быть такой:
number_of_picture = 1
for-loop (from first image to the last)
get(picture_number_of_picture);
turn rgb image to binary one;
calculate average raw of bubbles;
number_of_picture = number_of_picture + 1;
end-loop
Я все это сделал, поэтому мой скрипт выглядит так:
i=317;
last = 415;
for photo=i:last;end;
s1 = 'DSC_0';
s2 = num2str(photo);
s3 = '.JPG';
s = strcat(strcat(s1,s2), s3)
%%
img = imread(s);
imshow(img);
img = img(1:end, 1:end, 1);
%% intensity corection
scaled = img*1.90;
%imshow(scaled);
level = 120;
binary = scaled>level;
%% get binary
new_binary = binary(from_upper:end, from_left:to_right, 1);
%stats = regionprops(binary,'Area')
% 'MajorAxisLength','MinorAxisLength');
imshow(binary);
%imshow(new_binary);
%s4 = 'new';
%s5 = strcat(s4, s);
%imwrite(new_binary,s5);
end
Но у меня проблемы срасчет диаметра.Я думал, что это стандартная задача - получить характеристики размеров круглых объектов, но ни одно из доступных решений в документации не подходит.
Например, функция regionprops () , которая приходит на ум, не дает должного результата, когда я пытался выполнить ее с параметром 'Perimeter', надеясь вычислить диаметры пузырьков по периметру,но вывод действительно странный.
Функция imfindcircles предполагает, что вы уже знаете средний размер круглых объектов, поэтому она тоже помогает.
Конечно, существует «твердое» решение для запуска двух циклов for и попытки расчета размеров вручную, но я не могу поверить, что в Matlab нет встроенного решения для этого.
Возможно, моя проблема в том, что я не знаю всех возможностей этого языка, но мой быстрый анализ привел меня к замку, поэтому я спрашиваю.
Каков наилучший подход к решению моей проблемы?проблема?
EDIT ONE
Честно говоря, я не совсем понимаю функцию regionprops()
.Я пытаюсь получить что-то важное, по крайней мере, на модельном примере.Смотри <Я делаю снимок из документа: </p>
![enter image description here](https://i.stack.imgur.com/Mg51O.jpg)
И для этой картины я выполнил этот сценарий:
s = 'sample.jpg';
img = imread(s);
img = img(1:end, 1:end, 1);
intensity = 1.00
scaled = img*intensity;
level = 20;
binary = scaled>level;
imshow(binary);
stats = regionprops(binary,'EquivDiameter')
КакНасколько я понимаю Мир, это должно быть только 3 диаметра, поскольку на нем три круга: Но
stats = [41.7347780298123,
81.7510511878280,
111.057964459329,
101.710723628205,
24.0955853300814]
Что это? .. Я не понимаю