Опитах се да намеря отговори за търсене как да открия много малки пръстени в изображение с бял фон. Но навсякъде имат решения за откриване на черни точки. Моля, помогнете ми как да продължа. Току-що започнах да използвам matlab и все още изучавам основите на инструмента. Изображението, в което искам да открия пръстените, е както по-долу!
Открийте и намерете центрове за малки черни пръстени с помощта на matlab
Отговори (3)
Ако скоростта не е вашата основна цел и имате Computer Vision Toolbox, бих препоръчал използването на алгоритъма MSER по следния начин:
Image=imread('YourRings.bmp');
Image=rgb2gray(Image);
Regions=detectMSERFeatures(Image);
plot(Regions);
Резултат:
Ако изучавате и разбирате методите и характеристиките на класа, можете също да филтрирате нежелани резултати (по-големи или ексцентрични елипси) без морфологични оператори.
една проста опция е:
- направете откриване на ръбове (лапласиан, canny и т.н.), ширината на филтъра трябва да е по-малка от ширината на пръстена, за да разпознаете двата ръба на пръстена.
- след това потърсете кръгове.
- за всеки кръг потърсете допълнителен (само един) кръг вътре в него.
- когато намерите кръг вътре в кръга, маркирайте като пръстен (имате вътрешни и външни граници, маркирани от краищата).
Ако пръстените са затворени, можете да bwlabel
(използвайки 4-connect) цялото изображение. Най-големият регион ще принадлежи към фона и може да бъде игнориран. След това можете да използвате regionprops
, за да намерите центроида на останалите пръстени .
lb = bwlabel( inputBW, 4 );
st = regionprops( lb, 'Centroid', 'Area' );
[bgArea toRemove] = max( [st(:).Area] );
st(toRemove) = []; %// discard background
cnt = vertcat( st.Centroid ); %// all centers
Показване на резултатите като зелени X в центъра на пръстените.
figure;
imshow( inputBW ); hold on;
scatter( cnt(:,1), cnt(:,2), 50, 'xg' );
Ако пръстените не са затворени, можете да използвате някои морфологични операции (bwmorph
) като предварителна обработка за затварянето им.
bwlabel
върху това изображение - това ще помогне много.
- person Shai; 01.09.2014