原创 LED图像识别原理

2012-4-4 12:07 2738 25 30 分类: 消费电子

作者:下家山(转载,请注明)

 

一:专业图像识别方法

           专业图像识别技术常用:OpenCV和MatLab;

           OpenCV

1:是由Intel公司资助的开源计算机视觉库;

2:包含300多个C/C++函数的跨平台的中高层API。它不依赖于其他外部库,但也可以使用某些外部库。

3:对非商业应用和商业应用都是免费的。

         MatLab

                 1:Mathworks公司开发的一款工程数学计算软件。

2:对数学操作(矩阵变换,正,反余玄函数等)进行更直接的描述。它也是一种语言,但不同于C,C++,Java等高级语言是对机器行为进行描述。

                 //Matlab的for语句

                 for I =1:1:5

                      //循环体

         End

            VC

                 但并不是说不能用VC,如果掌握成像规律,bmp图片格式原理,用什么语言都可以。VC中的CImg类可以很方便的操作位图文件。

2222.jpg

    图像识别说到复杂会很复杂,比如人脸识别,要红外成像,要做很多模板匹配,两个瞳孔之间的距离,颧骨之间的距离,眉骨之间的距离等等很多个人特征值要做很细致的分析。

  说到简单,其实很简单,比如下面我在实际工作中做得一个led自动测试(应用在路由器生产线中判别led灯态),我什么工具(matlab,opencv,vc)都没有用完全是C++来实现的。

二:我们要识别的图形

23.jpg

三:第一步去杂讯

       用专业术语说就是“二值化”,其结果如下:

24.jpg

四:行分割

       定格每一行led的上下边缘,结果如下:

25.jpg

五:列分割

       定格每一列led的左右边缘,结果如下:

26.jpg

六:行列分割结果

27.jpg
 

从上面这个图,我们可以取得每个LED四个顶点坐标

七:LED框定结果

28.jpg

八:LED坐标精确定位结果

      在第六步得到的结果中,有些位置不够精确,如第一行的第四个,其右边缘框定结果并不精确,可以往左移。

29.jpg

九:使用接口部分

      只要在配置文件里面给出要识别的是几行几列,每个灯的颜色。

如:有12个灯(最多可以识别12个灯);

       那么在配置文件里应该写成

      [OCRConfig]

LedLn = 3

LedCol = 4

LedLnColor_1 = 0x67676767

LedLn1Color_2 = 0x72727272

LedLn1Color_3 = 0x67676767

这里67为’g’的ASCII码,72为’r’的ASCII码,这样每行可以用一个32位16进制数来表示,其中32为可以表示4个字节,每个字节代表一列。

转载:请注明,作者,下家山   请尊重原创!

  

 

 

文章评论5条评论)

登录后参与讨论

dwwzl 2014-6-6 11:44

不错,常用串口调试助手

用户1395246 2014-6-6 11:42

学习了

用户1069018 2014-6-6 10:39

学习了

用户1540383 2012-10-11 10:13

不知所云

allen_zhan_752827529 2012-2-13 18:29

强烈反对万恶的截图! 恢复 lena 的真相啊!

用户1638263 2011-12-15 00:20

第一幅圖經典啊

用户1398524 2011-12-14 17:02

比较高深

keendawn_745908826 2011-12-13 14:15

关于你发的那个美女图,是图像处理识别领域的常用示范图. 其中有个有趣的典故. 这是花花公子的封面图,全图是全裸的.这个美女记得好像叫lena.

用户1369767 2011-12-3 11:41

一直用丁丁的SSCOM,总的来说挺好的,但有一个比较大的问题,对于虚拟串口,比如从USB转接,如果拔掉USB前忘记先关闭串口,虚拟串口失效后软件就死掉了

用户1626152 2011-9-24 13:50

支持一下
相关推荐阅读
用户1037328 2016-04-17 17:59
好的理论可以避免犯错——读《丈量世界》有感!
     《丈量世界》,早就因为仰慕高斯而想看这本书      1.殊途同归      这本书写的是高斯和洪堡两个人,为什么要把这两个人放在一起写呢?因为高斯是一个宅男,不喜欢什么旅游,考察!他觉得...
用户1037328 2016-04-05 09:10
叛逆在爱因斯坦性格中的重要性(一)
叛逆在爱因斯坦性格中的重要性(一) 《爱因斯坦传》读书笔记      昨天晚上,读完了2016年书单的第二部书,《爱因斯坦传》。我想梳理一下自己读这本书的收获,或者说感悟!在读这...
用户1037328 2016-04-05 09:09
叛逆在爱因斯坦性格中的重要性(二)
叛逆在爱因斯坦性格中的重要性(二) 《爱因斯坦传》读书笔记                                四  叛逆性 在爱因斯坦的同时期科学家中,我想比他IQ...
用户1037328 2014-07-09 19:55
RTEMS系统时钟原理
作者,下家山(转载请注明作者及出处,请尊重原创)   专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训 一:从应用看原理      每个...
用户1037328 2014-07-09 19:47
RTEMS在S3C2410上的移植(一)
作者:下家山(转载,请注明) 1:RTEMS开发环境建立 1.1开发环境建立前的准备工作 因为RTEMS开发环境主要用的是GNU的工具链,所以需要一台装有Linux的HOST. 1.2...
用户1037328 2014-07-09 19:45
深入浅出学Makefile<三,如何自动生成Makefile>
(请尊重原创,转载请注明,作者:下家山) 五: 运行make编译得到可执行文件 root@parson-desktop:/home/parson/tmp/automk# make gcc ...
我要评论
5
25
关闭 站长推荐上一条 /2 下一条