可编程逻辑
FPGA图像处理之路,从此开始,接下来,让我们把时间交给“图像处理”。 在动笔之前,一直在犹豫,反复思考着一个问题,这个问题一直困扰着我,“FPGA在图像处理领域中的地位?”
按照惯例,我们先暂且不直说这个问题的答案,让我们先谈谈图像处理技术。在 我个人看来,图像处理就是对图像进行操作以得到自己想要的结果。图像处理,它是一个非常广义的概念,它包含图像增强,图像复原,图像重建,图像分析,模式识别,计算机视觉等N多个应用方向。这些应用技术有许多在本质上是相通的,但是不同应用领域的关注点往往是不同的。
当我们升入研究生阶段,或者进入公司,如果从事图像处理相关的工作,也就有了自己涉猎的领域了。在此, 主动交代一下, 现阶段主要关注的领域为图像重建。
好了,闲话不多说,我们来说说大实话。在我之见下的图像处理,作为一个“半职业”的FPGAer,用FPGA做图像处理相关的开发时,我们往往首先要考虑的就是FPGA处理板的性能了,因为做图像处理是一个十分消耗资源的事情。打开淘宝,我们可以搜索到很多图像处理FPGA开发板,有些开发板上的资源十分丰富,可以满足我们前期试验的需求。可是令人感到尴尬的是,用FPGA做图像处理也是一件十分困难的事。 从网络上的开源情况来看,FPGA在图像处理方面的主要应用一直处于图像的预处理阶段。
什么叫图像的预处理?例如图像的畸变校正,滤波器处理,边缘检测、颜色检测和阈值处理等。这些预处理都有一些共同的特征,算法较为简单,操作重复性强等。但是,除了预处理,FPGA就不能做点别的吗?有的哦,图像处理类似一个三层金字塔,分为底层,中间层,高层。
图像处理金字塔有三层,分别针对的是像素级、特征级和目标级。一个成熟的图像处理应用应该同时涵盖这三层。
在像素层,我们可以对图像做一些变换,目的是增强图像的有用信息,同时抑制任何不相关的信息(如噪声)。然后通过对预处理后的图像做分割操作实现图像从像素级到特征级的过度,分割操作可以理解为检测图像中具有一些共同性质的区域。针对这些区域,依据一个或多个分类法则,将区域归类到一些预先设定的特征类型中作为后期识别的数据集。此时的数据已经不仅仅是图像了,其中包含了丰富的特征信息,如物体的位置信息等。在金字塔高层,依靠获取的特征,如有必要还可以将这些特征集作为学习的训练集来创建专用的模型,借助模型来实现识别,进而用来对实时采集的图像进行描述。
好了,刚才说了一大堆 不擅长的大片理论的“教科书式”定义后, 继续讲大实话。一言以蔽之,FPGA在图像处理中的应用尚处于未成熟状态,网络上可供借鉴的大多是预处理方面的资源,而关于使用FPGA去做特征和目标层次的处理还是十分复杂的,大多数高层次的应用还处于研发阶段,具体说吧,主要是高校和大公司会去做这方面的研究与应用,而且因为是研发阶段,所以使用的FPGA套件是十分昂贵的,不计成本。显然这种实现方式是不符合商用的。因此,当你真正用一个全新的“较低廉”的“高效”的硬件方式实现了一个效果十分出色的图像处理算法,那么你当真是非常了不起的了。
说了这么久,关于“FPGA在图像处理领域中的地位?”这个问题,想必各位心中已经有了属于你们自己的那份答案了。
不妨再来和 的答案比较下。用FPGA做图像处理往往需要考虑除算法之外的更多问题,如时序约束,存储器带宽不足,资源不足,计算问题,这些问题都制约着FPGA在图像处理领域的发展。试想一下,本就复杂的图像处理算法,再加上这些有待解决的难题,这也就是我们经常遇到的困境。幸好,科技是在不断进步的,当现有的技术不能很好的解决当前的应用难题时,一定会新的技术诞生,专为处理这些问题而是的技术。这也就是,我们需要不断学习,不断充电的原因。
DDR2、DDR3、Zynq、PCIE、USB3.0、千兆网、LVDS、CORDIC,这些新技术的出现为我们提供了新的思路与解决方案,让FPGA拥有更大的潜能,FPGA将会在图像处理领域有更加卓越的表现。
全部0条评论
快来发表一下你的评论吧 !