sobel算子在智能小车巡线中的运用
来源:互联网 发布:178软件源地址 编辑:程序博客网 时间:2024/06/08 08:23
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 - 1Gx = (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);endendsubplot(1,4,2);imshow(im2uint8(uSobel));title('边缘检测后'); %画出边缘检测后的图像%%%%%%%二值化%%%%%%%for i = 2:high - 1for j = 2:width - 1if uSobel(i,j)<150 %阈值可调uSobel(i,j)=0;elseif uSobel(i,j)>=150 %阈值可调uSobel(i,j)=255;endendendsubplot(1,4,3);imshow(im2uint8(uSobel));title('threshold');%%%%%%%画出中心线%%%%%%%for i = 2:high - 1k=0;K=[];u=[];for j = 2:width - 1if uSobel(i,j)>=200k=k+1;K(k)=uSobel(i,j);u(k)=j;endendp=length(u);if p>0;P=ceil((u(1)+u(p))/2);uSobel(i,P)=255;endendsubplot(1,4,4);imshow(im2uint8(uSobel));title('center line');
效果如图:
参考文献
【1】蒋旭 . 两点算法求智能车赛道曲率 . 新技术新工艺 . 2014 . 32-33
【2】 第九届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告 北京邮电大学
【3】冈萨雷斯 数字图像处理 第二版 463-470
阅读全文
0 0
- sobel算子在智能小车巡线中的运用
- sobel算子原理以及运用
- itk中的Sobel算子
- Sobel算子
- Sobel算子
- sobel算子
- Sobel算子
- Sobel算子
- sobel算子
- Sobel算子
- sobel算子
- Sobel算子
- sobel算子
- opencv中的Sobel算子及编码实现
- matlab中的Sobel算子C程序源码
- opencv提取图像边缘特征sobel算子的运用
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
- 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)
- 网格离散曲率算法(二次曲面拟合)
- Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)
- POJ 2110 Mountain Walking 笔记
- 230. Kth Smallest Element in a BST
- jsp内置对象
- sobel算子在智能小车巡线中的运用
- 读书笔记《Effective C++》条款44:将与参数无关的代码抽离template
- 第三篇 ME909s-821设备描述符分析
- 最小生成树-Prim算法
- linux 的一些命令
- Java输入输出流详解
- java并行
- Codeforces Round #416 (Div. 2) C
- 关于SSH框架的一些整合要点