前提・実現したいこと
画像のエッジ処理を、matlabを用いて行っています。
流れとしては、画像をグレースケール化した後、cannyフィルタを用いてエッジ処理を行います。
その後、hough変換で直線検出を行い、グレースケール画像に重ねて表示する、という感じです。
その際、検出したい直線が画像中心付近に集中しているため、トリミングを行ってからhough変換を行い,
元画像と同じ場所(中心付近)にhough変換の結果を貼り付けたいです。
試したコード
matlab
1clear all; 2close all; 3 4I = imread('a.bmp'); %画像ファイル読み込み 5I = rgb2gray(I); 6BW = edge(I,'canny'); 7 8%トリミングを行う 9rect = [200 200 500 200]; 10BW = imcrop(BW,rect); 11 12%hough変換 13[H,T,R] = hough(BW); 14imshow(H,[],'XData',T,'YData',R,... 15 'InitialMagnification','fit'); 16xlabel('\theta'), ylabel('\rho'); 17axis on, axis normal, hold on; 18 19% hough変換のピークの特定 20P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); 21x = T(P(:,2)); y = R(P(:,1)); 22plot(x,y,'s','color','white'); 23 24lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); 25figure(2), imshow(I), hold on 26max_len = 0; 27for k = 1:length(lines) 28 xy = [lines(k).point1; lines(k).point2]; 29 plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); 30 31end
発生している問題・エラーメッセージ
中心部分のhough変換には成功したのですが、元のグレースケール画像に貼り付ける際に、
元あった部分(中心部分)に貼り付けられませんでした。
グレースケールの左上(画像の原点)に貼り付けられてしまい、うまく行きません。
中心に貼り付ける方法を教えてください。
お願いします。
補足情報
車道のレーンをhough変換で検出する作業を行っています。
回答1件
あなたの回答
tips
プレビュー