看着大家在寒假还在实验室大秀操作,回家党真的不能忍了,已经不能继续再坐等过年,必须要冒个泡 好久都没有看见技术分享交流贴了,知道寒假里面每天水论坛的人也很多,我来跟大家分享分享做摄像头的一些看法,顺便跟好多新手扫扫盲,我不是大神,有意见或者错误的地方赶快喷我 我用的ov7620摄像头,模拟摄像头第一个麻烦问题就是像素分辨率,我看见论坛好多新手都说减少像素点怎么视野偏左了,这是你们的第一个错误认识,改变DMA采集像素点数并没有改变分辨率,仅仅就只是采集了一整幅图左边的部分,所以想改变分辨率要么软件配置sccb要么硬件分频。(当然还有好多人用for循环隔几行或者隔几列赋值压缩像素矩阵,测试过不是太稳定) 软件配置sccb不会用,改过0x11、12、14地址寄存器分辨率都没有变化。会的教我一下 硬件分频才是正道,不过我不是搞硬件的,具体怎么弄也不是很清楚。不过貌似大神们都是用的74ls74芯片,据说用D触发器分频会发生锯齿波形,所以用集成芯片。我以我现在摄像头的分辨率为例子,600列*240行(我也不知道为什么不是资料上面的640*480),计划对于PCLK六分频(大部分都是四分频,这里我想大胆创新)得到100列像素,对于HREF四分频得到60行,综上所述这样采集回来的像素就是100*60,而且是整个摄像头的视野。 对于HREF的分频方法也可以用软件的方式在中断中用更改,即行中断来时标志位+1,实现隔行进中断采集。 顺便提一下,我用的是岱默科技的摄像头历程,他的历程中对于sampleflag的处理不够完善,所以发送到上位机的图像会发生抖动以及重复等一些情况。 重点来了,黑线提取算法 我用的是跟踪边缘提取,用最简单的相邻像素做差就行,跟踪就是在上行黑线位置附近搜索下行黑线位置。相比于去年做光电组用阈值法感觉鲁棒性好的多,可是由于是在家用matlab做仿真,真的不知道具体效果怎么样,贴上几张图求大神吐槽。由于还没有做逆透视,所以现在只用了斜率还没有用曲率,斗胆问下北科车切内弯切的那么溜就是用的曲率么? 十字弯也是一个问题,只做了正入补线的算法,由于不在实验室就暂时没考虑斜入的情况,但是看到车友发的斜入十字的图,感觉不容乐观啊~~目前觉得其实斜入或者大弯道貌似可以根据左右两边黑线的斜率来判断,如果斜率同向,就需要舵机大幅度转弯了。 十字 斜入的情况 还有传说中的直角弯,感觉跟容易判断成十字,然后直冲就悲剧了,看来前面的黑线提醒很有必要作为特征纳入算法。 中心引导线也是,用跟踪算法的话此时左右两边肯定是都丢线的(十字弯道也是两边丢线),可以在两边黑线丢线的时候在上行左右黑线中间的位置重新跟踪搜索,找到找不到黑线就能把十字弯和中心引导线区分开, 时序控制也是难点,现在初步考虑在每幅图像采集完成后进行黑线提取,然后运用pit得到10msflag以及20msflag,在主函数中运用if判断对舵机20ms控制一次,电机10ms控制一次。 哎不在实验室就是不方便,想尝试下算法还有时序行不行的通都不知道,只有每天苦逼的做仿真调模块,最近调sd卡模块也是不容乐观,敢问大神怎么将数组保存成bmp格式 貌似今天说的有点太详细了,做车就是要沉的下气,静的下心尝试新算法慢慢撸程序,别人的程序远远没有自己写的程序好,只是很多思路可以借鉴,程序就是要多写多试,从感性到理性的一个升华,多看看技术报告,做车也是不要怕自己动手能力低,什么东西都要去试试,不要轻易否定自己的一个想法 大家闲着也是闲着,快粗来交流交流
|