Próbuję wyodrębnić podpis Radona, aby rozpoznać wzory ubrań (paski, pled, nieregularne i bez wzoru), jak to zrobiono w 1.Przetwarzanie obrazu - Wykorzystanie transformacji radonu do rozpoznawania wzorów w MATLAB
algorytm realizowany:
1. Use sobel operator to compute the gradient map as f(x,y).
2. Perform Radon transform based on maximum disk area.
3. Compute the variance of r under all theta directions.
4. Employ L2-norm to normalize the feature vector.
5. Plot Radon Signature as a bar chart of var(r) for all theta values.
Zrobiłem następujące:
img = imread('plaid.jpg');
grey = rgb2gray(img);
img2 = edge(grey, 'sobel');
vararray=zeros(1,size(theta,2));
theta = -89:90;
for j = 1: size(theta,2)
[R3,xp3] = radon (img2,theta(j));
vararray(j) = var(R3);
end
vararray = vararray/norm(vararray);
figure(1), bar(theta,vararray),title('Radon Signature');
wierzę, że mój błąd leży w pierwszych 2 etapach. Nie jestem pewien, jak wykonać Radon tylko na maksymalnym obszarze dysku.
Moje wyniki są pokazane po prawej stronie, natomiast z artykułu (wymienionego poniżej) po lewej.
jednak moje wyniki powinny przynajmniej Pokaż 2 odrębne szczyty, jak pokazano w wynikach acticle, ale tak nie jest.
Każda pomoc jest doceniana.
Źródło algorytmu: "wspierająca Odzież Wzór Uznanie dla niedowidzących ludzi" przez Xiaodong Yang, student, członek IEEE, Shuai Yuan i Yingli Tian Senior Member IEEE
Ta figura z tego artykułu wydaje się być raczej doodle, a mniej faktyczną postacią naukową. Jesteś pewien, że należy go traktować poważnie? Czy na pewno zasięg theta jest taki sam? –
Najważniejszą rzeczą, którą należy wziąć z wykresu artykułu, są 2 dominujące szczyty. To powinno być również obecne w moich wynikach, ale tak nie jest. Wierzę, że mój błąd leży w pierwszym kroku algorytmu 1, ale nie jestem pewien, jak to zrobić w Matlab – User404
Nie mogę pomóc w przetwarzaniu obrazów, ale powinieneś wstępnie przydzielić vararray za pomocą 'vararray = zeros (1 , size (theta, 2)); 'przed pętlą i użyj' vararray (j) 'wewnątrz pętli, dla prędkości. –