2014-04-08 156 views
1

我使用Matlab輸入一個4x4的彩色方塊網格,並輸出顏色列表。我的程序工作正常的方塊,但我無法適應它旋轉的圖像:用Hough變換在Matlab中進行圖像投影

Rotated 1

Rotated 2

和投影圖像:

Projected


我有被建議使用霍夫變換,我能使用這個用下面的代碼訪問圖像中的臺詞:

[H, theta, rho] = hough(image,'RhoResolution',0.1,'Theta',-90:0.5:89.5);  
peaks = houghpeaks(H,4);  
lines = houghlines(dilated, theta, rho, peaks, 'MinLength', 40) 

figure, imshow(dilated), hold on; 

max_len = 0; 

for k = 1:length(lines) 

    xy = [lines(k).point1; lines(k).point2]; 

    plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); 

    % Plot beginnings and ends of lines 
    plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');  
    plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); 

    angle = atand(((xy(1,1)-xy(2,1))/(xy(1,2)-xy(2,2)))); 

end 

所以現在我想用這些線,並相應地把我的形象,使圖像邊緣平行用這些線。但是,我不知道如何去做這件事。我很感謝關於如何做到這一點的建議。謝謝。

回答

0

dilated從哪裏來?如何計算黑白圖像及其邊緣?精明?索貝爾?普魯伊特?

也許你正在使用一個衍生濾波器,它依賴於邊緣的角度,因此你可能不會得到一個好的邊緣圖像,這將使Houghtransformation失敗,因爲它只能處理好的圖像界限清楚的邊緣可能具有封閉邊緣(或者至少有小間隙)。

所以作爲一個提示:只需通過imshow(dilated)輸出您的黑白圖像,並觀察它看到的邊緣有多清晰,特別是與沒有旋轉的圖像邊緣相比。