2016-04-12 20 views
0

Görüntüdeki satırları bulacağınız ve bulunan satırların üzerinde kırmızı bir çizgi çizecek bir kod yazmaya çalışıyorum. Bunu Hough dönüşümünü kullanarak yapmayı başardım ama benim problemim sadece yatay ve dikey çizgiler bulmak ve diğer tüm yamaçlardan çizgiler çıkarmak için buna ihtiyacım var.Filtreleme Yalnızca yatay ve dikey çizgileri bulmak için Hough dönüşümü Matlab

Kodun bulduğu satırların eğimini bularak ve bir if ifadesi kullanarak yalnızca yatay ve dikey çizgiler üzerinde kırmızı çizgiler görüntülediğimi çözebileceğimi düşünüyorum, ancak nasıl ayıklanacağını bulmakta zorlanıyorum. Bulduğum noktalardan x ve y değerleri.

Bu sorunun nasıl çözüleceği konusunda herhangi bir öneri var mı?

function findlineshv(I) 

% Read Image 
img = imread(I); 

% Convert to black and white because 
% edge function only works with BW imgs 
bwImage = rgb2gray(img); 

% figure(1),imshow(bwImage); 

% find edges using edge function 
b=edge(bwImage,'sobel'); 

% show edges 
% figure(1),imshow(b); 


% compute the Hough transform of the edges found 
% by the edge function 
[hou,theta,rho] = hough(b); 

% define peaks, x and y 
peaks = houghpeaks(hou,5,'threshold',ceil(0.3*max(hou(:)))); 

x = theta(peaks(:,2)); 
y = rho(peaks(:,1)); 


lines = houghlines(bwImage,theta,rho,peaks,'FillGap',5,'MinLength',7); 

figure, imshow(bwImage), hold on 

for k = 1:length(lines) 
    xy = [lines(k).point1; lines(k).point2]; 
    plot(xy(:,1),xy(:,2),'LineWidth',3,'Color','red'); 
end 
+0

Sadece bir ipucu: Görüntünüzü de paylaşırsanız daha hızlı yanıt alabilirsiniz. – tfv

cevap

0

Sadece Hough işlevinde istenilen teta değerlerini ayarlayarak bunu yapabilirsiniz:

İşte aşağıda benim kodudur.

start_angle = 80; 
end_angle = 100; 
theta_resolution = 0.5: 

[H,T,R] = hough(b, 'Theta', start_angle:theta_resolution:end_angle);