5

Próbuję wyodrębnić obiekt z obrazu waluty papierowej. Na oryginalnym obrazie zastosowałem detekcję krawędzi potępienia. Oto zdjęcie:Wykrywanie i segmentacja krawędzi

enter image description here

Moje pytanie brzmi w następujący przyciętego obrazu Chcę mieć tylko numer 100 wyświetlane na innych odgłosów. Jak mogę to zrobić, proszę?

enter image description here

Kod Kiedyś tak daleko jest:

close All; 
clear All; 
Note1 = imread('0001.jpg'); 
Note2 = imread('0007.jpg'); 
figure(1), imshow(Note1); 
figure(2), imshow(Note2); 

Note1=rgb2gray(Note1); 
Note2=rgb2gray(Note2); 
Edge1=edge(Note1,'sobel'); 
Edge2=edge(Note2,'sobel'); 
figure(5), imshow(Edge1),title('Edge sobel1'); 
figure(6), imshow(Edge2),title('Edge sobel2'); 

rect_Note1 = [20 425 150 70]; 
rect_Note2 = [20 425 150 70]; 
sub_Note1 = imcrop(Edge1,rect_Note1); 
sub_Note2 = imcrop(Edge2,rect_Note2); 
figure(7), imshow(sub_Note1); 
figure(8), imshow(sub_Note2); 

Dla kompletności obrazu oryginału:

+0

Czy trzeba rozpoznać tylko 100 notatek Birr, lub dowolną ilość Birr? Czy wyszukiwanie ogranicza się do Birr, czy powinno mieć zastosowanie do dowolnej waluty używającej cyfr arabskich na banknotach? –

+0

Czy możesz również opublikować oryginalny obraz? – kkuilla

+0

@Rody Mam zamiar rozpoznać wszystkie nuty Birr. Chciałem, aby obiekt 100 w przyciętym obrazie liczył liczbę białych pikseli w obiekcie. Jako technikę rozpoznawania wykorzystam liczbę białych pikseli w odpowiednich nutach, tj. 1,5,10,50 i 100 nut. Oprócz tego będę przycinał niektóre ważne cechy każdej notatki, aby wiedzieć, że jest to prawdziwa lub fałszywa waluta, stosując tę ​​samą technikę, o której wspomniałem wcześniej. Jestem bardzo nowy w mat-lab i uznałem tę technikę za jakąś łatwą do opanowania. – user3472037

Odpowiedz

3

użyć filtra Gaussian oczyścić hałas przed nałożeniem detektor krawędzi:

% Create the gaussian filter with hsize = [5 5] and sigma = 3.5 
G = fspecial('gaussian',[7 7], 3.5); 
Note1f = imfilter(Note1,G,'same'); 
Edge1f=edge(Note1f,'sobel'); 
sub_Note1f = imcrop(Edge1f,rect_Note1); 
figure(6), imshow(sub_Note1f); 

Wynika to w znacznie czystsze 100 obrazek enter image description here

Można również użyć canny zamiast Sobel przekształcać.

Edge1c = edge(Note1,'canny', [0.2, 0.4] , 3.5); 
sub_Note1c = imcrop(Edge1c,rect_Note1); 
figure(7), imshow(sub_Note1c); 

enter image description here