Moim problemem jest odnalezienie i policzenie drewna w ciężarówce automatycznie za pomocą obrazu z tyłu przyczepy. Próbuję rozwiązać ten problem za pomocą MATLAB Image Toolbox. Oto mój kod.Jak znaleźć drewno w ciężarówce za pomocą MATLAB?
function [ centers, rads, metrics ] = TimberFind(img)
minrad = 20;
maxrad = 110;
Hsens = .93;
CannySens = .20;
img_gray = rgb2gray(img);
PSF = fspecial('gaussian', 5, 0.5);
img_gray = imfilter(img_gray, PSF, 'symmetric', 'conv');
img_gray = imadjust(img_gray);
PSF=fspecial('gaussian', 10, 1);
Blurred = imfilter(img_gray, PSF, 'symmetric', 'conv');
cont = imsubtract(img_gray, Blurred);
preprocessed = imadd(img_gray, 3*cont);
bin = edge(preprocessed, 'canny', CannySens);
[cen, r, m] = imfindcircles(bin, [minrad maxrad],'Sensitivity', Hsens);
end
Ale wynik nie jest zbyt dobry. Można zobaczyć the full data zestaw lub następujący przykład:
więc jeśli robię obrotny i imfindcircles algorytmy wystarczająco sensetive wykryć wszystkie rodzaje drewna, istnieją pewne znalezione nadmiar resoults. Mam pomysł, aby rozwiązać ten problem, wycinając każde drewno z dużego obrazu, a następnie wprowadzając pewne globalne kryteria uzyskiwanych małych obrazów i wypróbowując na nim algorytm uczenia maszynowego. Ale myślę, że ta droga jest raczej trudna, więc może ktoś mógłby zasugerować cokolwiek innego? Może jest lepszy sposób na wstępne przetworzenie obrazu przed użyciem operatora Canny? Jeśli masz pomysł, jak to poprawić, proszę powiedz mi. Dzięki!
Czy możesz zamieścić oryginalne obrazy, _i.e. bez czerwonych okręgów? – Ratbert
Oczywiście, umieściłem je w chmurze. – Vladimir
Jeśli widzisz fałszywe wykrycia, niektóre z nich można łatwo usunąć za pomocą przetwarzania końcowego. Na przykład wygląd fałszywych detekcji różni się od innych znalezionych kręgów. –