前言:
实现了铁轨的轨道检测,但现在只能检测直线,弯曲的铁轨检测下一步会实现,实现之后会更新的,敬请期待。
一直以来,铁路异物问题.直威胁着铁路的运行安全。
依靠传统的检测方法和司机视觉对铁路异物进行识别很难彻底解决这一问题。
所以,利用机器视觉,设计出一种有效的铁路异物检测系统,能实时准确地检测出异物,并及时发出警报,这对保证铁路运行安全有很大帮助。
铁路监控视频图像由于采集环境的变化导致图像质量下降的情况,如光照强度变化,摄像机出现抖动等原因,使得到的视频图像往往存在含有噪声、对比度较小、图像失真等不足,对之后的异物检测造成影响。
为了解决这些问题,对图像了进行预处理:运用图像滤波、灰度图像对比度增强对图像进行了优化,分别选择应用了时域递归低通滤波法、直方图均衡化法;图像预处理方法能够很好地提高铁路图像质量,降低检测错误率,有效的提高系统准确率和可靠性。
在MATLAB仿真平台下分别对时域递归低通滤波法、直方图均衡化、基于Harris角点特征的图像配准算法、Hough直线检测和背景差分法进行验证,实验结果表明,所用算法能够有效地达到其设计目的,准确而快速地检测出异物,并且能够有效地分辨异物性质,检测准确率高,实时性好,适用于铁路异物检测。
人话就是,用MATLAB,做了铁轨识别+异物报警
原图:
部分参考代码:
[H,T,R]=hough(BW);
subplot(2,2,3);
imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
title('霍夫变换图');
xlabel('\theta'),ylabel('\rho');
axis on , axis normal, hold on;
P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x=T(P(:,2));y=R(P(:,1));
plot(x,y,'s','color','white');
lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
subplot(2,2,4);imshow(rotI);
title('霍夫变换图像检测');
axis([50,250,50,200]);
grid on;
axis on;
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(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
len=norm(lines(k).point1-lines(k).point2);
if(len>max_len)
max_len=len;
xy_long=xy;
end
end
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
效果图:
检测出铁轨后,异物识别就比较简单了,代码就像呼吸一样简单。
所以省略。。。