基于Matlab的Hough变换提取车道线遇到的问题,求大佬指点

毕设要利用Matlab设计一个直线车道线检测算法,其核心部分是利用Hough变换对Canny算子处理后的图像进行直线边缘提取,在此过程中自己网上参考了一些资料设计了一个简单的算法,但处理效果不太理想。
(1)代码部分:

function HoughTrans(oldbuf)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数名称:
% HoughTrans() “Hough变换”函数
%参数:
% oldbuf 原图像数组
%说明:
%读取图像数据,通过Hough变换提取图像中的直线
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
imshow(oldbuf);hold on
[H1,T1,R1] = hough(oldbuf,‘Theta’,5:0.1:70);%左方直线检测与绘制
Peaks = houghpeaks(H1,3);
lines = houghlines(oldbuf,T1,R1,Peaks);
for k = 1:length(lines) %绘制线段
xy = [lines(k).point1;lines(k).point2];
plot(xy(:,1),xy(:,2),‘LineWidth’,1,‘Color’,‘red’);
end

[H2,T2,R2] = hough(oldbuf,‘Theta’,-70:0.1:-5);%右方直线检测与绘制
Peaks1=houghpeaks(H2,3);
lines1=houghlines(oldbuf,T2,R2,Peaks1);
for k=1:length(lines1) %绘制线段
xy1=[lines1(k).point1;lines1(k).point2];
plot(xy1(:,1),xy1(:,2),‘LineWidth’,1,‘Color’,‘red’);
end

hold off
end
(2)实验处理结果:
基于Matlab的Hough变换提取车道线遇到的问题,求大佬指点_第1张图片
上图可以看出处理效果(如红线所示)并不理想,原因应该是背景边缘线的干扰以及车道虚线处理效果不佳(未能检测出车道虚线),同时在其他一些图像经过canny算子边缘提取后车道线会呈现锯齿状(如图中黄线圈出),此时也无法检测出这些目标车道线(在上图中黄线圈出的不是目标车道线,但也应该要检测出来)。针对以上疑惑我相应的提出三个问题,希望大神能帮我解答:
<1>背景边缘线(尤其是自然风光)对实验结果影响非常大,有没有有效的方法来抑制这一干扰;
<2>有什么方法能加强对虚直线的检测;
<3>Canny算子边缘提取后图像中的锯齿状“直线”有没有比较好的处理办法。
自己学习Matlab不久,在做Hough变换处理图像时遇到很多问题,在网上查了很多资料都没有找到比较好的解决办法,第一次在SCDN上发表文章,希望哪位大神能帮我解答疑惑,不胜感激!

你可能感兴趣的:(基于Matlab的Hough变换提取车道线遇到的问题,求大佬指点)