On the road......
日历
网志分类
· 所有网志 (59)
· 心情 (27)
· 文學 (2)
· 電影 (9)
· 音樂 (1)
· 圖片 (8)
· 關註范植偉 (5)
· 专业 (5)
· 未分类 (2)
最新的评论
站内搜索
友情链接
· 我的歪酷 非非共享界
· 我的相册
· 微涼的亭~
· 聽~花開的聲音
· 粉红菲菲

订阅 RSS

0008976

歪酷博客

2005年的最后一天,开了自己的blog。
时常自己在路上会有些想法,提笔后却始终不是原来的感觉,
希望网络能够捕捉这些片刻,留下一串深深浅浅的脚印......
umi @ 2009-01-01 19:04

08年果然是大事年,起起伏伏,非常精彩。
期待09年。



 
umi @ 2008-11-12 20:25

(转)机器视觉与计算机视觉 (2007-08-03 00:04:55)
thanks to http://blog.csdn.net/byxdaz/archive/2006/03/10/620888.aspx
 
 
初识机器视觉和计算机视觉这两个名词,感觉是差不多的,都是视觉,而且计算机也是机器,研究计算机视觉不就是研究机器视觉吗?也许很多人都跟我同感,但通过涉入这一领域,在通过系统的学习之后,我发觉它们两者既有许多相同点,但若把两者等同起来,就会束缚你的视野,它们属于不同的学科。我们研究计算机视觉的目的就是根据人类的视觉特性来给计算机带来“光明”,让它更好的来替代人来工作或者完成人类不能完成的工作,更好的为企业减少劳动力,也更大的提高生产效率,同时也不断在提高人们的生活质量。研究机器视觉是更好为工业中的制造业提供更多有利于提高产品质量和提高生产效率的支持。
机器视觉中把计算机作为载体或者说是工具,主要是利用计算机高效率的CPU,因为视觉里看到的都是图像,而对图像的处理往往比较耗时,所以能更快的完成图像处理,为以后的控制赢得时间,计算机是“当仁不让”了,而随着大规模集成电路的发展,FPGADSP等这些具有处理能力的芯片也在不断的提高性能,以后的机器视觉会不会把它们作为载体而产生FPGA视觉或DSP视觉呢?
 
什么是机器视觉?
"机器视觉",即采用机器代替人眼来做测量和判断。
  机器视觉系统是指通过机器视觉产品(即图像摄取装置,分CMOSCCD两种)把图像抓取到,然后将该图像传送至处理单元,通过数字化处理,根据像素分布和亮度、颜色等信息,来进行尺寸、形状、颜色等的判别。进而根据判别的结果来控制现场的设备动作。
  机器视觉伴随计算机技术、现场总线技术的发展,技术日臻成熟,已是现代加工制造业不可或缺的产品,广泛应用于食品和饮料、化妆品、制药、建材和化工、金属加工、电子制造、包装、汽车制造等行业。[摘自工控论坛:http://bbs.gongkong.com/detail.asp?id=232610]
机器视觉是个相对较新的技术,它为制造工业在提高产品质量、提高生产效率和操作安全性上提供了许多技术。机器视觉越来越受欢迎有这样一个主要原因:光学传感具有与生俱来的清洁、安全性和通用性。用视觉有可能去做其他人不知道用传感方法可以做到的事情,比如识别污点、铁锈或者表面腐蚀等等.
在其他相关技术中,机器视觉包括图像数字化、图像操作和图像分析,通常使用计算机来完成,它是一门覆盖图像处理和计算机视觉的专业。然而,我们强调机器视觉、计算机视觉和图像处理不是同义的。它们其中之一都不是任何其他两个的子集。计算机视觉是计算机科学的一个分支,而机器视觉是系统工程一个特殊领域。机器视觉没有说明要使用计算机,但是在获取高速处理速度上经常会使用特殊的图像处理硬件,这个速度是普通计算机所不能达到的。
尽管早在20世纪30年代用于工业监测的视频系统就已被使用,但工业机器视觉系统首次引起关注是在20世纪70年代中期。在整个20世纪80年代早期,机器视觉发展的很缓慢,主要就是学术研究,很少引起工业兴趣。到了20世纪80年代中期,机器视觉有了一个很大推动力,这个就是主要美国汽车制造商对视觉系统产生了较大兴趣。然后,在美国经历了一段严重的幻觉时期,许多视觉公司纷纷倒闭。而到了80年代末期和90年代早期,由于处理速度的大大提升,机器视觉系统引起了广泛关注。在90年代中期,随着现代RISC处理器提供了在标准计算平台的高处理速度,于是具有通用目的的处理器的角色被修改。在这个时期,学术工作者一直在大范围的产品中稳步地提高灵活性,这个取代了制造工业的主要分支的所有研究。[引自:http://www.eeng.dcu.ie/~whelanp/resources/r_preface.html]
 
什么是计算机视觉?
计算机视觉是指用计算机实现人的视觉功能――对客观世界的三维场景的感知、识别和理解。这里主要有两类方法:一类是仿生学的方法,参照人类视觉系统的结构原理,建立相应的处理模块完成类似的功能和工作;另一类是工程的方法,从分析人类视觉过程的功能着手,并不去刻意模拟人类视觉系统内部结构,而仅考虑系统的输入和输出,并采用任何现有的可行的手段实现系统功能。[摘自《图像理解与计算机视觉]
计算机视觉是一个处于指示前沿的领域。我们认为计算机视觉,或简称位“视觉”,是一项事业,它与研究人类或动物的视觉是不同的。它借助于几何、物理和学习技术来构筑模型,从而用统计的方法来处理数据。因此从我们的角度看,在透彻理解摄像机性能与物理成像过程的基础上,视觉对每个像素进行简单的推理,将在多幅图像中可能得到的信息综合成和谐的整体,确定像素集之间的联系以便将它们彼此分割开,或推断一些形状信息,使用几何信息或概率统计技术来识别物体。[摘自《计算机视觉――一种现代方法》]
计算机视觉成为一门独立的学科,至少可以从美国麻省理工学院Marr教授这一代人所做的奠基工作开始,因此计算机视觉这门学科至少已有2030年的历史。在此期间,由于计算机视觉具有的潜在应用十分广泛,所涉及的学科知识极其繁多,研究的问题又几富挑战性,因此它一直是计算机学科中的一门热门学科,并吸收了许多从事心理学、神经科学、生理学、生物物理学、数学与计算机学科等各种学科研究人员的关注,从而把图像处理、模式识别、人工智能、数学、认知科学、机器学习、计算机图形学等各方面的研究成果融会进来。
计算机视觉是人工智能的一个子领域,它的目的是让计算机理解图像中的一个场景或者特征,它包括以下几个方面的解释:[摘自machine vision的网上定义]
1. 为了控制目标而获取所需数据通过图像的自动获取和分析
2. 给一个有能力去做事和反应的机器人提供导航系统使之能改变位置
3. 用视频摄像机、机器人或者其他设备的一个系统,并且用计算机去做可视化的分析操作或行为。典型应用包括自动监测、光学字符识别和其他的非接触应用。
   www.bridgefieldgroup.com/glos6.htm
4. 机器视觉是计算机视觉在工厂自动化的一个应用。正如监视员在一个装配线上工作,可视地监视物件并判断其质量,因此机器视觉系统使用照相机和图像处理软件来完成类似的监视。一个机器视觉系统是一个在基于数字图像分析上作决定的计算机。
  http://en.wikipedia.org/wiki/Machine_vision
   通过上面的定义,其实机器视觉和计算机视觉并没有很清晰的界限,而是紧密的联系在一起,它们有着相同的理论,只是在应用中根据具体实际应用目标的不同而不同。计算机视觉与机器视觉都是要从图像或图像序列中获取对世界的描述,因此,对基本层的图像获取、图像处理,中层的图像分割、图像分析和高层的图像理解这些理论知识的掌握对两者来说都是“万变不离其宗”。
   正是有了前面的问题,才使得我去找答案,不管答案是否正确,在这过程当中我已经学到了知识,正如这样一句话:”The important thing about a problem is not its solution, but the strength we gain in finding the solution.” 其实做研究很重要的就是要发现问题,只有发现了问题,才能竭尽所能去找寻解决方法。如果你们有什么好的看法,或者有什么不对的地方,可以不妨提出来交流一下,希望能在交流中获得新的知识,鼓励自己去继续学习研究!



 
umi @ 2008-03-05 17:42

一 首先说说ARM的发展

    可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。
广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。
    客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。
    DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
    FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!
    值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。


二 ARM是硬件还是软件

    很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。
    实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。
    在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师”


三 要不要买开发板 买哪家
   
    我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。

1 买
    买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。总体下来 元件+LCD屏+PCB=11XX块!够2410的了。
    再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。


2 做
    自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。
      当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。
    再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。
      网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人!
但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。


3 买哪家
  个人感觉分3类吧
    1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。
但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实精神感动!你看人家那代码写的。
    2)感觉立宇泰的44B0不错
硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~
    3)找个最便宜的
好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。


四 要不要有51 AVR等单片机基础
      有更好,但没有也无所谓。
    两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧?
但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写


五 开发都需要学习哪些软件
总结起来最主要的有以下几个吧

1 ADS调试用
确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。


2 PLASHPGM
FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。
同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。


3 BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)
调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。
调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。
需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。


4 ARM-ELF-TOOLS工具链
里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。
另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。


5 U-BOOT
大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)
生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了
有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)
最新版本是1.1.4 具体使用方法看我另一篇笔记吧。


6 UCLINUX包
UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。


7 VMWARE
老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。


六 有哪些书推荐
    主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错

1 ARM嵌入式LINUX系统构建与驱动开发,北航版
驱动写的很详细,前期开发介绍也很好

2 ARM 嵌入式系统实验教程(二),北航版
有ZLG2200的原理图,实验程序和注释,了解人家是怎么开发的。

3 ARM嵌入式系统基础教程
最重要的是体系结构,汇编部分介绍,看看吧,增加理论素质。

4 44B0数据手册
写在这里是强调它的重要。


不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的
写的太多,看烦了。
其他的书没了几本,没看见好的,大家有看过的推荐吧。


七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用
    1 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。
    2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX
    3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵
    4 VXWORKS
学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。
  5 当单片机用
不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)
有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵
哈哈。这个是必须做的,但一带而过。目标放的远一点。


八 学习要用多长时间
    我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。
再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”
我相信良好的态度+合适的方法+及时的总结=成绩


九 ARM都玩什么
就几点
1 硬件设计
2 系统移植
3 驱动开发
4 应用开发
没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。


十 我用的什么板子
很多人问我这个问题,我特意写过一个的。再说一次吧。
我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。
1 加了串口通信的GPS模块、 GPRS模块
一个UART0,一个UART1,当与要用超级终端时用跳线切换。
2 SD卡,和7843触摸屏
同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。
3 扩了个IIC的35个键子的键盘
用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。
4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。
所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)


十一 开发流程
这里是我的开发流程
1 设计原理图(含WIGGLER的JTAG访真器)
2 设计PCB(含WIGGLER的JTAG访真器)
3 制版
4 焊接电压,确定电压没问题
5 焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题
6 焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了
7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题
可以用这个命令“setmem 0xc000000,0xffffffff,32”
我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得改。
8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。
9 把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下
10 按照《UBOOT 移植操作》移植UBOOT
11 按照《UCLINUX下载简单说明》下个UCLINUX
12 看看驱动开发的方法,自己写个驱动看看
13 还有很多事东西着你玩 呵呵


十二 关于JTAG访真器
JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。
按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个网上多的是,不多说了。
值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以控制44B0复位。
当然,板子上的复位信号跳线也不用跳。


十三 哪个公司的ARM
这个是问题比较简单。

1 ARM7主要就几个公司的
三星,PHILIP,ATMEL的
ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。
其他两家上面说了的不多说了吧


2 ARM9
这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了
但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)
其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。
但是INTEL的TI的入门材料少,价格高,自己看情况定吧。



 
umi @ 2008-03-05 17:39

1.为什么要选择XX公司(单位)? 2.你期望做什么性质的工作? 3.你认为XX期间最大的成就是什么,并描述之? 4.你认为自己最大的优点、缺点是什么? 5.和别的应聘者相比,你认为自己的优势所在? 6.如果进公司后,你怎么做你的五年规划/发展目标是什么? 7.怎么看待大公司小公司的区别? 8.做1分钟/3分钟/5分钟自我介绍.



 
umi @ 2008-01-04 09:08

终于跨进了2008年,想必对于中国来说这是个热闹的一年。