sobel算子在智能小车巡线中的运用

sobel的数学公式表达

(1)离散表达


(2)矩阵表达


(3)梯度的近似表达(滤波后的灰度值)


背景,在巡线中经常有一些轨迹鉴别的问题存在。如果不想随大流用普通的灰度传感器,又或者路面比较复杂的情况下。可以使用摄像头采集画面,对每一帧进行边界的识别(个人建议因为在巡线小车这样小巧的物体上不能放置电脑,所以采用51单片机或者stm32单片机的小伙伴们可以各帧采样或者隔合适帧采集,毕竟单片机的运算慢。)那么根据上面的公式我们可以得到轨迹的路线。其实还有其他的算法,不过呢,相比sobel算子,其他的算子计算量大,或者对于噪点的处理不佳。比较对于小车来说,先滤波什么的是不存在的,精度没这么高。


在得到轨迹线了之后就要循迹了,那么怎么循迹呢?最简单的是pd算法循迹,pd算法是pid算法除去了积分过程,只留下普通项与微分项。根据论文2,舵机的延时偏转就相当于一个积分过程。

pd算法

舵机PWM占空比=KP*偏心距+KD*偏心距变化率


舵机PWM占空比=KP*偏心距+KD*偏心距变化率+KA ∗V2/R

R为轨道半径;l:为前瞻;h为前瞻离轨道距离如图所示



如果想程序更好自动化水平高,那么可以考虑这样的特殊情况



程序

下面是给出静态图片的sobel轨迹识别的程序(matlab)

%%%%%%%边缘识别与画出中心线%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
imag = imread('D:\广东工业大学机器人学院\数字图像处理\1.jpg');  %读取关键帧,写上你的文件名
imag = rgb2gray(imag);        %转化为灰度图
subplot(1,4,1);imshow(imag);title('原图');
[high,width] = size(imag);   % 获得图像的高度和宽度
U = double(imag);
uSobel = imag;
%%%%%%%sobel边缘检测%%%%%%%
for i = 2:high - 1   %忽略边缘行以防溢出
for j = 2:width - 1
Gx = (U(i+1,j-1) + 2*U(i+1,j) + U(i+1,j+1)) - (U(i-1,j-1) + 2*U(i-1,j) + U(i-1,j+1));
Gy = (U(i-1,j+1) + 2*U(i,j+1) + U(i+1,j+1)) - (U(i-1,j-1) + 2*U(i,j-1) + U(i+1,j-1));
uSobel(i,j) = abs(Gx) + abs(Gy);
end
end
subplot(1,4,2);imshow(im2uint8(uSobel));title('边缘检测后');  %画出边缘检测后的图像
%%%%%%%二值化%%%%%%%
for i = 2:high - 1
for j = 2:width - 1
if uSobel(i,j)<150    %阈值可调
uSobel(i,j)=0;
elseif  uSobel(i,j)>=150   %阈值可调
uSobel(i,j)=255;
end
end
end
subplot(1,4,3);imshow(im2uint8(uSobel));title('threshold');
%%%%%%%画出中心线%%%%%%%
for i = 2:high - 1
k=0;K=[];u=[];
for j = 2:width - 1
if  uSobel(i,j)>=200
k=k+1;
K(k)=uSobel(i,j);
u(k)=j;
end
end
p=length(u);
if p>0;
P=ceil((u(1)+u(p))/2);
uSobel(i,P)=255;
end
end
subplot(1,4,4);imshow(im2uint8(uSobel));title('center line');

效果如图:



参考文献

【1】蒋旭 . 两点算法求智能车赛道曲率 . 新技术新工艺 . 2014 . 32-33

【2】 第九届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告 北京邮电大学 

【3】冈萨雷斯 数字图像处理 第二版 463-470


  • 8
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值