2010-06-07 5 views
0
img=imread('img27.jpg'); 

%function rectangle=rect_test(img) 

% edge detection 

[gx,gy]=gradient(img); 

gx=abs(gx); 
gy=abs(gy); 
g=gx+gy; 

g=abs(g); 

% make it 300x300 

img=zeros(300); 

s=size(g); 

img(1:s(1),1:s(2))=g; 

figure; 
imagesc((img)); 
colormap(gray); 
title('Edge detection') 


% take the dct of the image 

IM=abs(dct2(img)); 
figure; 
imagesc((IM)); 
colormap(gray); 
title('DCT') 

% normalize 

m=max(max(IM)); IM2=IM./m*100; 

% get rid of the peak 

size_IM2=size(IM2); 
IM2(1:round(.05*size_IM2(1)),1:round(.05*size_IM2(2))) = 0; 

% threshold 
L=length(find(IM2>20)) ; 


if(L > 60) 
    ret = 1; 
else 
    ret = 0; 
end 
+2

Vous aurez besoin d'être beaucoup plus spécifique - qu'est-ce qui ne fonctionne pas? –

+0

le rectangle de la fonction ne fonctionne pas – raju

+1

Ne fonctionne pas comment? Qu'avez-vous fait jusqu'ici pour le déboguer? – Donnie

Répondre

2

Je suppose que la fonction ne fonctionne pas si vous décommentez la ligne function rectangle=rect_test(img). C'est très probablement parce que dans votre fonction, la variable rectangle n'est jamais définie. Probablement vous voulez écrire ret=rect_test(img) à la place.

+0

Ce serait probablement le faire. Lors du débogage, essayez de ne pas transformer les fonctions en scripts. Cela peut devenir follement confus. –