• STM32F 32位ARM微控制器应用设计与实践》,里面专门一章帮着入门,稍稍懂点的都能看得懂。 然后我自己用骑飞的板子做过简单的灰度化、二值化、拉普拉斯得边界,简单的寻找已知目标,meanshift等等,后来还做了下...

    突然意识到自己这块东西没有发过,所以补上一发,之前搜过淘宝,这次搜了CSDN发现写着这个的还真不多,用过淘宝骑飞和战舰家的配套例程,自己学习的时候看的是红白皮的《

    STM32F 32位ARM微控制器应用设计与实践》,里面专门一章帮着入门,稍稍懂点的都能看得懂。

    然后我自己用骑飞的板子做过简单的灰度化、二值化、拉普拉斯得边界,简单的寻找已知目标,meanshift等等,后来还做了下怀旧色、复古色的滤镜切换。最终考虑到f103的资源、运算速度跟不上图像处理,果断点到为止了。

    再之后有帮人弄了下战舰的例程,个人表示不是很理解战舰家的库函数封装,但勉强也能做简单的处理。

    有试过C++写算法,忘记有没有尝试类了,以后有机会试试吧。

    个人对103的熟悉程度一般,信号采集、电机控制类接触过,但不深,图像这块还是有好好研究过,毕竟当初属于启蒙阶段。

    所以,简单的指引,小弟愿意为大家服务,但复杂的东西,考虑到个人学习的偏向因素,不能满足各位需求也请海涵~~

    最后,有图有真相~

    2014/11/6

    ========================分割线========================================

    写在2018/12/14

    每年都会有学生加我,然而99%都是伸手党,作者也是从零开始过来的,虽然现在不做嵌入式这一块了,但还是奉劝各位,自己动手丰衣足食。

    展开全文
  • 摄像头配置  用i2c总线往摄像头寄存器中写寄存器;  i2c总线为:一条时钟线,一条数据线,遵循i2c协议来写;  摄像头的sccb接口对应i2c接口;两协议类似;  其中涉及的主要内容是i2c协议读写数据的时序;开始...

    1  摄像头配置

           用i2c总线往摄像头寄存器中写寄存器;

          i2c总线为:一条时钟线,一条数据线,遵循i2c协议来写;

          摄像头的sccb接口对应i2c接口;两协议类似;

          其中涉及的主要内容是i2c协议读写数据的时序;开始信号、终止信号、设备地址;

          写入信号后可以再用i2c读取信号的内容,以确定的确写入了;

          用示波器测量摄像头的输入时钟(xclk)、输出像素时钟(pclk)、行同步信号(hs)、场同步信号(vs)、输出数据管脚;如果管脚和预期类似说明摄像头已经开始工作了;

          gpio模仿i2c也很简单,就是符合协议的控制电平跳变;

              

        


    2 摄像头数据读取

    单片机的DCMI口对接摄像头的输出口;

    摄像头配置的输出时序为数字摄像头时序;

    摄像头接口也stm32的DCMI接口对接;

    DCMI接口配置时要小心其读取视频数据的中断函数是高电平有效还是低电平有效;

             DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;//DCMI_VSPolarity_High;
             DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;//DCMI_HSPolarity_Low;  

    DCMI中的FIFO缓冲接收到的数据、重组数据;比如摄像头口是8位的,而DCMI的数据寄存器是32位的,FIFO将接受到的八位的数据缓存为32位的;而在液晶上显示的是rgb565的是16位的,在DMA传输时一次传输16为,数据才不会乱;这种情况下DMA传输的源数据宽度为32、目的数据宽度为16位;

    DCMI有帧中断、行中断;其中断服务函数都指向DMA传输;

    摄像头的原始数据是RGB RAW格式,这个原始数据的排列格式是 RGRG/GBGB排列的,我们叫做 Bayer pattern(这个最最常见)。





    3 DMA传输视频数据到显存

    DMA是从DCMI的数据寄存器(0x50050028)搬移数据到显存地址(液晶会自动显示该地址的内容);

    DCMI中的FIFO缓冲接收到的数据、重组数据;比如摄像头口是8位的,而DCMI的数据寄存器是32位的,FIFO将接受到的八位的数据缓存为32位的;而在液晶上显示的是rgb565的是16位的,在DMA传输时一次传输16为,数据才不会乱;这种情况下DMA传输的源数据宽度为32、目的数据宽度为16位;一次传输16位(一个RGB)可以防止像素乱序;

    我们在编程时一般都会明确指定一个传输数量,在完成一次数目传输后DMA_SxNDTR计数值就会自减,当达到零时就说明传输完成。
        /*行中断到来时、一行一行将数据传输到显存,行中断来了一定是新一行的数据,FSMC_LCD_ADDRESS + lcd_width*2*line_num保证为液晶屏的新一行的开始地址;一行图像的字节为 
    img_width*2/4;*/

        OV2640_DMA_Config(FSMC_LCD_ADDRESS + lcd_width*2*line_num,img_width*2/4);  //  +(lcd_width*2*(lcd_height-line_num-1))
        DCMI_ClearITPendingBit(DCMI_IT_LINE); 

       ///液晶屏的分辨率
         uint16_t lcd_width=800, lcd_height=480;
       ///摄像头采集图像的大小
          uint16_t img_width=1280, img_height=800;






    4 stm32时钟树

    倍频器形状:

    分频器形状;

    选择器形状:




    展开全文
  • 接上一篇基于STM32图像处理的机器人自动充电解决方案---二  第4章 自主导航与避障设计  4.1自主导航设计  如果图像处理的结果表明标注不在视野范围内,则按照顺时针调整装置的方向,直至发现标志物。如果图像...

     

    接上一篇基于STM32图像处理的机器人自动充电解决方案---二

                                                                                  第4章 自主导航与避障设计

     4.1自主导航设计

     如果图像处理的结果表明标注不在视野范围内,则按照顺时针调整装置的方向,直至发现标志物。如果图像处理结果表明,标志物在视野范围内,则启动电机,使装置向前进。如果在此过程中发现标志物脱离了视野范围,则以最后一次视角为对称中心,先顺时针调整装置的位置,如果发现标志物,则恢复前进状态,如果没有则继续顺时针调整,如果调整三次后还未发现标志物,则逆时针调整装置,如果发现标志物,则恢复前进状态,如果没有则继续逆时针调整,直至左右调整的最大角度对称。

    流程如下图4-1所示:

     

     

     

    4.2避障处理

    如果检测到红外传感器的电平从高电平变为低电平,则表示红外传感器有感应到物体。如果在此之前预充电标志没有被置位过,则表明此物体是障碍物,应使整个装置后退一定距离,并向右调整方向,然后向前直走一段距离,最后向左调整方向,继续搜索标志物或自主导航任务。

    设计流程如下图4-2所示:

    4.3 本章所遇难点与解决方案

      4.3.1 所遇难点

    在进行自主导航的过程中,会经常遇到标志物脱离摄像头中央区域的情况,而且没法判断标志物在脱离视野的时候是在左方向还是右方向。如果脱离后搜寻标志物的方法还是按照一开始的一样,即顺时针搜寻,有时候会遇到方向逆向的问题。即标志物脱离视野的时候刚好在视野左方向,搜寻方法确实顺时针,那么搜寻接近一周后才能捕捉到标志物,这样会很耗时间,效率极其低下。

    还有一方面,在自主导航的过程中也会有遇到障碍物的情况,阻挡机器人的前进。如果要避开障碍物,识别障碍物是关键点。单纯地利用红外线传感器感应,无法判断,检测到的是障碍物还是充电装置。

       4.3.2 解决方案

    为解决上面所遇到的标志物脱离视野后的再次搜寻问题和障碍物判断的问题,本文设计采用了下面的解决方案步骤:

        4.3.2.1 标志物脱离解决方案:

    1. 标志物脱离视野后,立即停止机器人的前进行动,保证标志物脱离视野的范围不会很大。
    2. 在上一步的前提下,先逐步顺时针方向调整机器人三次,如果在调整的过程中再次捕捉到标志物,则退出整个调整状态,恢复自主导航前进状态。
    3. 如果逐步顺时针方向调整机器人三次后,还没有搜索到标志物,那么说明标志物脱离的时候是处在摄像头视野的左方向。接下来进行第(4)步。
    4. 逐步逆时针方向调整机器人六次,进行左右对称扫描,如果在调整过程中再次捕捉到标志物,则退出整个调整状态,恢复自主导航前进状态。

    4.3.2.2 障碍物判断与避障解决方案:

    1. 单单只用红外线传感器,无法判断检测到得是障碍物还是充电装置,所以结合红外线传感器和图像处理来进行判断。
    2. 如果红外线传感器有感应,则先查看再次之前图像处理结果是否显示机器人已经很接近充电处。
    3. 如果图像处理结果表明没有靠近充电处,即机器人处于微调状态,那么判断红外线检测到的物体是障碍物,需要进行避障处理。
    4. 如果判断红外线检测到的是障碍物,先顺时针调整机器人三次。
    5. 顺时针调整机器人三次后,利用红外线传感器检测,如果红外线传感器有感应,则继续调整,直至没有没有感应。
    6. 后退一段距离,以便留出足够的空间。
    7. 向右再一定角度。
    8. 向前进一定距离。
    9. 向左调整,使机器人恢复到避障处理前的平行方向,最后继续自主导航。

     

     

     

                                                             第5章定位充电与各阶段LED显示设计

    5.1单目视觉定位与充电

    利用图像处理进行导航,是装置逐渐靠近标志物,也就是充电站附近。如果标志物的像素面积超过设定的阈值,则说明整个装置已经很靠近充电处,初步定为成功,接下来进入微调模式,也就是精准定位模式。减少装置的前进量和方向调整量。如果在精准定位模式过程中,红外传感器的电平从高变为低,则说明已经精准定位到充电站处,可进行后续的充电操作。

         在装置进行精确定位后,使能串口舵机模块,推出充电头进行充电。如果检测到电量充满,则收回充电头,离开充电站。

    具体的流程图如下图5-1所示:

     

     

    5.2各功能阶段LED显示设计

    为了使整个自动充电装置能更加智能形象化,在各功能阶段设置LED显示不同的颜色,并且搭配不同的状态,表示不同的状态信息。颜色和状态方面符合平时的电器使用习惯。

    下表5-1是各阶段的LED显示设计:

    功能阶段

    LED颜色

    状态

    标志物搜寻

    蓝色

    闪烁

    捕获标志物

    蓝色

    常亮

    电量低

    红色

    闪烁

    充电中

    红色

    常亮

    充满电

    绿色

    常亮

                          表5-1 各功能阶段LED显示设计表

    当机器人在搜索标志物,即自主导航的状态时,将LED灯显示成蓝色,并且将其状态设置成闪烁,表示在搜索中。

    当机器人有捕获到标志物时,将LED灯显示成蓝色,并且将其状态设置为常亮,表示获取到标志物。

    当机器人的电量低于阈值时,将LED灯显示成红色,并且将其状态设置成闪烁状态,符合我们日常电器使用指示习惯,表示机器人已经快没电了,需要进行充电。

    当机器人处在充电的状态时,将LED灯显示成红色,并且将其状态设置成常亮,符合我们日常电器使用指示习惯,表示机器人正在进行充电。

        当机器人的电量达到阈值,充电完成了,将LED灯显示成绿色,并且将其状态设置成常亮状态,表示机器人充电完毕,即将离开充电处。

     

     

    5.3 本章所遇难点与解决方案

       5.3.1 所遇难点

        摄像头受焦距条件的限制,在很近的距离上无法成像,或者成像的效果很差,严重失真。在最后的精准定位阶段,接近标志物到一定程度后,摄像头将失去作用。如果只用摄像头,无法判断是否已经到达充电处,只能判断已经很接近充电处了,接近程度无法量化,也无法进行最终的定位。

       5.3.2 解决方案

    为了解决摄像头在最终定位阶段失去作用,无法进行最终定位的问题,本文设计采用了以下的解决方案步骤:

    1. 摄像头捕捉到标注物所占面积比例超过阈值后,将机器人调整为微调模式,减少机器人前进的量,也缩小图像处理的有限区域。在软件上给于范围限制,提高定位的精准度。
    2. 启用红外线检测,进行检测。
    3. 利用图像处理结果和红外线传感器检测结果结合进行判断。
    4. 如果机器人处在微调整状态,且红外线传感器有感应,则说明已经到达了充电处,进行最后的精准定位。

     

     

     

     

     

                                                                                        第6章 研究展望

     在往后的发展中,机器人自动充电技术的研究也会越来越深,智能化也会越来越高,能应对各种场合和不同的复杂环境,进而解决目前在机器人自动充电技术上所存在的问题。本文对机器人自动充电技术后续的研发工作展望如下:

    1. 充电座容错性设计。因为时间有限,本文没有对充电座进行设计。我们日常使用的充电座插孔范围有限,如果定位不精准,会导致充电插头和我们日常使用的插座对接不成功,从而导致充电失败,所以在后续的课题研究中,应该设计一个具有一定容错性的配套插座,弥补有时定位不精准带来的错误。
    2. 图像处理算法的改进。在机器人自动充电技术上,目前还没有利用STM32进行图像处理的,所以本文在提出这一方法后,在图像处理方面主要考虑图像处理的信息量。在图像处理算法方面只使用了RGB模式。RGB图像模式会容易受到光照的影响,其对应的分量灰度值会随着光照有一定的变化,所以在后续的研究中,可以将RGB图像中间处理区域的像素转换为HSV图像模式[6],在保证能在STM32上正常进行图像处理下,排除光照的影响。

     

    此系列文章为本人毕业设计稿,转发时请注明转发来源。谢谢

    展开全文
  • 硬件为正点原子战舰板,其实STM32103和STM32104都差不多一样用,摄像头为07725.(硬件都是小事,原理都一样) ①识别物体形状(目前矩形和圆形) ②识别物体颜色(颜色可以识别多种,(可调控...

    哔哩哔哩视频连接 演示视频 https://b23.tv/FGqzuE
    程序资料连接:https://market.m.taobao.com/app/ … 65&forceFlush=1
    硬件为正点原子战舰板,其实STM32103和STM32104都差不多一样用,摄像头为07725.(硬件都是小事,原理都一样)
    ①识别物体形状(目前矩形和圆形)
    ②识别物体颜色(颜色可以识别多种,(可调控))
    ③可以一次识别多个物体(可调控)
    ④可以一次识别多个物体颜色

    识别物体形状数量可以根据自己需要来改就行了,很方便。
    识别物体颜色数量也是可调的。
    当前图片识别到的东西都会在LCD显示出来(物体形状、物体颜色、物体坐标)
    学懂了识别这两种物体形状,后面你就肯定会识别其他的形状物体。

    尊重知识产权,致敬我们头发!!!
    加油各位在这里插入图片描述

    undefined

    在这里插入图片描述

    展开全文
  • 最近学了一点stm32图像处理的皮毛. 做了个小玩意儿,用了stm32做了灰度化,二值化,从而找到一条路线的中点,然后根据偏差对输出相应的pwm。 适合初学者看看,很浅层。f1带图像有点吃力,所以分别把图像和控制...

    最近学了一点stm32做图像处理的皮毛.

    做了个小玩意儿,用了stm32做了灰度化,二值化,从而找到一条路线的中点,然后根据偏差对输出相应的pwm。

    适合初学者看看,很浅层。f1带图像有点吃力,所以分别把图像和控制分成了两块32,这样速度快一点。

     

     

    这是图像处理的代码。https://download.csdn.net/download/weixin_42521239/10493831

    这是控制部分的代码。https://download.csdn.net/download/weixin_42521239/10493835

    没有积分的可以在评论中留下你的邮箱,我发给你。

    展开全文
  • 经过几天的努力,实现了在stm32单片机的RGB565图像简单处理,识别橘黄色乒乓球,同时单片机通过串口向上位机输出,乒乓球的重心坐标,和与图像中心线的夹角,在者可以输出的RGB565数据,通过c++读取输出的数据,转化...
  • 嵌入式 poll函数常识

    2015-03-05 15:49:43
    # include sys/ poll. h>  int poll ( struct pollfd * fds, unsigned int nfds, int timeout) ;  和 select()不一样,poll()没有使用低效 的三个基于位的文件描述符set,而是采用了一个单独的...
  • 硬件为正点原子战舰板,其实STM32103和STM32104都差不多一样用,摄像头为07725.(硬件都是小事,原理都一样) ①识别物体形状(目前矩形和圆形) ②识别物体颜色(颜色可以识别多种,(可调控...
  • MDK不像CCS一样集成图像调试相关工具,导致在基于STM32开发的时候,如果过程中并不直接将摄像头数据显示到LCD上,过程调试就会变得很困难,不知道图像亮度是否OK,对焦是否正确。 查询了一些资料,整理出来一个办法...
  • 使用正点原子探索板 STM32F4 摄像头为秉火OV7725,摄像头采集图像,并显示在LCD屏上,RGB565转成灰度图像,可进一步转换为二值化图像
  • 该工程基于原子STM32F4的摄像头与网络通信实验,在此基础上,将其整合。 1.预期功能: 摄像头拍取的内容实时传输至LCD进行显示 通过网络通信C/S方式将STM32摄像头拍取的照片传输到电脑端 在PC端开发可视化界面接受...
  • 在各类信息中,图像含有最丰富的的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在安防、探险、以及车牌检测等场合。其按照输出信号的类型可以分为数字和模拟摄像头,按照材料构成可以分为CCD和CMOS。 ...
  • stm32f103zet6+摄像头颜色识别
  • 通过摄像头采集物体坐标,利用舵机转动使小球在木板上滚动。 通过摄像头采集物体坐标,利用舵机转动使小球在木板上滚动。 通过摄像头采集物体坐标,利用舵机转动使小球在木板上滚动。
  • STM32F407+ov2640图像处理,图像经过二值化处理,通过迭代阀值,完美实现图像的二值化,可以通过按键更新阀值需求,图像侦率较高无卡顿,注释非常非常详细.
  • 平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线+鹰眼OV7725摄像头(注意,为了减少摄像头连线的麻烦,建议初学者选取单片机时选用带有摄像头接口的板子)工程介绍:需要移植FatFs文件系统,同时需要了解BMP...
  • 采用秉火STM32开发板 Cortex-M4小型系统板 STM32F407ZGT6核心板 ov2640介绍: OV2640是OmniVision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器。该传感器体积小、工作电压低,提供单片UXGA摄像头和...
  • 一、OV7670模块: ... 大致工作过程:光照射到感光阵列产生相应电荷,传输到相应的模拟信号处理单元,再由AD转换为数字信号,在经由数字信号处理器插值到RGB信号,最后传输到屏幕上...... 先了解一下基础知...
  • 摄像头侧CY7C68013A硬件电路板连接被测试应用的摄像头sensor模块,电路板为摄像头提供3.3v的电源,通过IIC总线为sensor配置初始化参数,通过USB 2.0高速接口将图像数据传输给STM32单片机,迚行显示。USB摄像头支持...
  • STM32F103上用uip传送视频,上位机用QT实现,详细步骤可参考http://blog.csdn.net/zhqh100/article/category/2622075
1 2 3 4 5 ... 20
收藏数 623
精华内容 249