中文 1.docx
《中文 1.docx》由会员分享,可在线阅读,更多相关《中文 1.docx(18页珍藏版)》请在冰豆网上搜索。
![中文 1.docx](https://file1.bdocx.com/fileroot1/2023-1/30/07634c01-5ff9-4e90-bfcb-c96b1e71d469/07634c01-5ff9-4e90-bfcb-c96b1e71d4691.gif)
中文1
一种能够重建立的彩色图像嵌入分割系统
摘要:
图像分割是图像分析和计算机视觉第一重要和最困难的步骤之一,它也被认为是机器视觉中最古老的问题之一。
最近,几个分割算法已经迅速发展起来,包括制定阈值,边缘定位和区域增长,这些为更快的图像/视频分析和识别系统的发展提供了很好的机会。
此外,模糊分割算法本质上有助于区域的合成,地显示物体。
这些算法有着细微的差别,但是都还不错。
因此,算法的选择是基于主观标准的,或者基于应用程序本身。
在这里,我们针对模糊推理分割(FRS)提出一种低成本的嵌入式可重构体系结构。
FRS有三个阶段(平滑,边缘检测和实际分割)。
初始的平滑操作是为了去除噪点,平滑和边缘检测算法也包括在这个程序步骤中。
分割算法利用了边缘信息和平滑后的图像,用来找到图像中的区域。
在这项工作中FRS分割算法被选择是依赖于它在一些列应用中展现的可靠性能。
(面部检测,运动检测,自动目标识别(ATR)),并且它开发成本低,有着可重构的计算平台,旨在低成本的应用。
特别要提的是,本文提出的实现平滑,边缘检测和颜色的分割算法,使用StretchS5000处理器,并且通过使用Matlab软件实现,最后对它们进行对比。
在本文中,这种新的体系结构和替代技术、基准测试和比较结果,都进行了详细介绍。
这是第一次我们看到了同时具有高吞吐量,出色的性能(至少在基准测试中)和低成本的实现。
关键字:
可重构,图像分割,可嵌入式系统,架构
1介绍
1.1分割
在过去的三十年中,许多计算机视觉,模式识别,图像分析和目标提取系统已开发。
同时,模糊和半模糊聚类算法也提出了提取和识别定义对象的功能。
为了让这些算法和系统成功,它们一般都拥有强大的平滑或分割技术做开始。
因此,几乎所有的视觉和模式识别方法中,图像分割都是一个重要的开始步骤。
一些研究已经把分割算法归类,如阈值或聚类,边缘检测,区域增长/合并和其他分割算法。
特别地,S.U.Lee和S.Y.Chung表明,双峰图像,就是只有一个对象,其余是它的背景这种图像,阈值方法会显示较好的效果。
然而,当对象区域相比背景区域显得很小的时候,或者当对象和背景的灰度范围在同一水平时,选择一个好的阈值是很困难的。
这种技术的另一个缺陷是,当图片中存在多个对象时也会出现问题。
在这种情况下,寻找骤变的峰谷直方图使方案进一步复杂化,分割的结果可能会很差。
边缘检测是相关的图像分割的另一种方法。
边缘被定义为被检测到的灰度级或色彩急剧变化的位置。
然而,在此操作中,很难保持检测到的边缘的连续性,区域必须始终由一个连续的边缘包围。
区域增长/合并是第三种图像分割的方法。
在这种情况下,大的区域很容易被检测到,之后,小的区域可以使用相同的标准合并。
区域增长/合并一个不利的地方在于,这种方法固有的有序性。
通常情况下,各区域产生的顺序取决于这些区域的增长和合并的顺序。
1.2颜色分割架构
文献中报道了许多不同的颜色分割的方法。
其中一个重要的方法是双色反射模型发展而来的。
它描述了颜色的反射——光的表面反射(亮点)和物体的反射(物体颜色)的线性组合。
使用这种模式,区域增长和合并法显示出了令人印象深刻的结果。
在该方法中,一个物体上高亮度的区域和无光泽的区域合并了。
然而,使用不恰当的阈值会使它的性能退化。
有一些分割方法,它们不在RGB空间里分割彩色图像,因为它们和色彩的理解模型不切合。
相反的,它们选择其他的颜色空间,比如HIS或者YUV,这些都比RGB色彩空间显示出了更好的效果。
这些图像分割过程融合了边缘检测方法来产生更好的结果。
基于近似推理或模糊推理的分割产生了可喜的成果。
Huntsberger定义颜色的边缘为每个像素成员函数值的差异为零。
通过使用了C迭代分割算法得到了模糊算法成员函数值,尽管C迭代算法由于本身性质来说是耗时的。
Lim提出了一种自动化的从粗到细的分割方法。
这种方法基于阈值直方图和C迭代算法。
Lambert和Carron提出了一个有趣的方法,结合色彩空间(根据相关色度处理和明确色相的界定),以系统规则为基础用符号表示(使用颜色和亮度功能,以确定像素的同质性)。
近年来,更多的基于色彩和纹理的分割技术被引入用作于大多数图像研究中,尤其是在彩色纹理的自然场景图像中。
许多著作和文献中都有大量的对人类颜色和纹理感知的研究结果和应用,例如均匀的色彩空间和滤波器。
因此,大部分的分割方法都把色彩和纹理作为图像分割功能实现的关键。
最近,把色彩和纹理结合起来,试图增强色彩和纹理分割性能的方法正在努力研究中,也就是颜色纹理分割,其中包括区域增长法,分水岭技术,边缘流技术,基于模型的随机分割法。
Markov模型的色彩分割应用也被研究。
最后,Boyokov等人基于图像分割技术原理提出了一种颜色-纹理分割方法,把它看做一个加权图中最小的切割问题,来找到一个最佳的色彩纹理切割。
文献中有很多色彩分割算法的架构和硬件实现。
Perez和Koch提出了一种简化的适合执行在模拟集成电路上的色相描述。
他们首次设计、制造并模拟了CMOS超大规模集成电路来计算标准化色相和色调。
Stichling和Kleinjohann提出用硬件实现颜色分割算法,通过使用区域增长和合并法在飞利Trimedia微控制器上实现。
这种系统每秒可处理25帧小图像,使用HW-SW系统。
Leclerq和Braun在一个32位的摩托罗拉的控制器上实现了颜色分割算法,处理了一张80*60的图像。
该系统用于机器人杯比赛,能在大约0.02秒内识别小物体。
Saffiotti提出了种子区域增长算法的实现,用特定的使用了阈值技术的CDT设备在索尼AIBO机器人身上实现。
Johnston等人做了一个系统,使用了FPGA,实现了颜色分割和对象跟踪并提供实时处理。
Koo等人做出了一个系统,用来分析磁共振图像。
该系统是一个高性能的可重构的系统,在使用了4个FPGA的计算机上实现,并达到了五倍的加速比。
Dillinger等人建立了一个基于FPGA的程序,实现了三维的分割,并且实现了高性能。
Yamaoka等人提出了一种新的算法,在FPGA上实现在80*60的视频图像上对象。
1.3图像分割系统
图像处理系统,如自动目标识别(ATR),脸部识别,运动检测等,都需要一个强大和快速的分割算法。
因此,这些系统在使用过程中的特征提取和识别的对象只适用于静止图像或视频。
例如,一个ATR系统包括许多算法的组合,启发式分割,平缓,边缘检测,细化,区域增长,分形等,在不同的条件下选择合适的算法来识别目标。
这些算法,特别是平滑、分割和边缘检测,在ATR系统中软件完成所需要的时间里,它们占有了显著的时间量。
颜色分割是一个研究较多的问题,它在像脸部识别这样的应用程序中使用。
因此,这项工作的贡献就是为实现三个耗时部分的FRS方法(平滑,边缘检测和色彩分割)提供了架构和硬件的细节设计,它被开发为一个独立的硬件来执行特定的程序,称为“黑盒子”。
最终的结果是图像中相同颜色的部分被分割为一个目标物体。
这一部分的信息可以被随后的ATR系统执行对象在图像中的特征提取这一步骤所利用。
一个完整的系统是一个可重构设计、使用扩展技术的程序。
这是一项低成本的技术,可以产生一个嵌入式的子系统。
如本文所示,我们将会看到一个嵌入式处理器,紧密耦合的、可重新配置的架构使一个有效的算法得以实现。
然而,大量的数据需要在内存、处理器和可重配置的部分之间传送,将对这项工作的深入提出了挑战。
Stretch公司已经开发出S5000和S6000系列软件配置处理器,这都是基于Tensilica的核心RISC处理器,开发出来的一个小的嵌入式可重构的部分。
整个设计在C/C++平台上开发,包括剖析代码、映射关键部分的可重构性、使硬件实现指令等。
C/C++编程主要用于控制S5000处理器。
StretchC是一种类似C的语言,其中包括一些硬件的扩展实现。
StretchC主要作为设计处理器中可重构部分的编程语言。
本文其余部分安排如下:
第2节描述FSR分割方法的实施。
第3节描述新的体系结构,其中包括它主要的子系统,它们的互连以及它们在扩展技术上的映射。
第4节有以前公布的结果和现在实现的效果的一个详细比较。
最后,第5节会对本工作做出结论。
2FRS分割方法
分割是图像处理使用的步骤之一,目的是在图像中提取一个对象。
FRS,本文中所 研究的方法,包括三个步骤(在它自我识别之前):
平滑,边缘检测和颜色分割。
分割过程的数据流说明如图1所示。
在这项工作中,下面将要详细展示,使用了从原始RGB 图像得来的HIS(色调,亮度,饱和度)模型,这种
方法是很典型的,已经被证明可以工作的很好。
(见第1节)。
2.1平滑算法
摄影图像包含由相机或嘈杂介质中的图像传输而引入的噪点。
在任何情况下,任何进一步的图像处理应用之前,都必须先移除噪点。
最常用的方法是使用过滤器的噪点消 除。
平滑算法中一个重要思想就是平滑两个相邻像素。
该算法允许相邻像素之间有一个模糊算子,其中为每个相邻像素的领域都设置了相应的算子,如图2所示。
每个像素的颜色都与它每一个相邻块的颜色进行比较,如图3所示。
我们实的块的大小为3*3,这样对图像可以达到高度平滑的效果。
每一个领域块 的平均颜色都按照下面所示的函数公式
(1)来进行计算。
要做到平滑,必须测量中心像素和所有周围像素域之间的颜色对比度。
像素(i,j)和领域块b之间的颜色对比,从 原始图像RGB数值中用这些参数通过几何学来表示为下面的式子:
在这项工作中平滑算法的实现步骤如图4所示,并且展示了具体分析。
2.2边缘检测
边缘检测是把组成图像的物体分开,且界定边界、区域的一个程序。
色相,强度和饱和度(函数的传递参数为h,i和s),它们是用来评估图像内像素边缘强度的一组参数。
这些参数是从原始图像的RGB值由以下公式算得的:
在该算法的第一个步骤中,h,s和i的值都用来计算像素周围的八个3*3的领域块(图3)。
一个物体,无论是色调,亮度,或者是阴影的差异,都具有相同的色相贯穿始终。
另一方面,色相在低饱和度和强度下是不稳定的,因此色相应该被标准化。
这三个值(色调,亮度和饱和度)关系到物体边缘算法中边缘的像素值。
边缘检测算法的流程图如图5所示。
2.3颜色分割算法
该分割算法利用了边缘信息和图像平滑信息来找到分割段。
这个分割过程遵循以下几个步骤:
1找到大且易碎的区域
2基于同质性标准扩展各区域。
3基于两色反射模型扩展各区域
4基于算子扩展各区域
5应用一个迭代的过滤器
颜色分割算法的第一个步骤就是找到大且易碎的区域。
一旦一个图像的边缘检测被执行,易碎的区域就被边缘像素或图像边界包围。
易碎的区域可以被定义为一组完全被边缘像素包围的像素并且只属于一个对象。
分割算法的下一个步骤是对区域进行基于特定标准的同构扩展。
现在的区域被增添了与原来有很高相似度的像素点来扩展,这些区域被边缘检测录入信息且作为最初的图像被扫描。
第三步的颜色分割是基于两色反射模型进行区域扩张的过程。
使用两色反射模型,一些相邻像素可能与此前根据模糊算法的区域合并,比如自定义像素与集群的色彩范围的差距。
为了进一步扩张区域,“远近程度”这一措施被使用。
一个未选派的像素可以在两种意义上逼近邻近的区域:
逼近空间域(物理逼近);或逼近集群域的颜色立方体(几乎相同的颜色)。
一个像素领域的远近程度被定义为这两个措施的产物。
具体来说,远近程度为任何给定像素,使用的是绝对的色彩对比乘以(在像素中)给定的像素和区域边缘之间的几何距离。
最后,在区域扩张完成后,得到的区域的边缘要使用一个迭代的过滤器来平滑。
这个过滤器用作三大小分别是3*3,5*5,7*7的块,最小的一个被最先应用。
根据上述标准,图像中的所有像素在最后都被分为各个区域。
图像中的每个区域都被认为是一个独立的对象,都用相同的颜色表示。
每个图像的颜色都被计算为图像中像 素点的平均颜色。
该颜色分割算法的细节在后文中有详细介绍。
3一种对于平滑、边缘检测和分割的架构
本节描述了平滑、边缘检测和颜色分割算法利用扩展技术来开发的架构。
该系统实现了ATR算法的前三个步骤,其中还包括三个子系统,每一个都为一个算法的主要方面来工作。
该系统的系统框图如图6显示。
体系架构的每一个
每个子系统由串行C代码运行在StretchS5000处理器和硬件结构上,用StretchC编写的语言,映射在可重构的部分,就是处理器上所谓的ISEF。
每个使用可重构开发功能资源的可重构处理器和它的代码是并行执行的。
每次串行程序调用一个硬件功能,处理器加载其硬件在ISEF上的映射并使用各自的输入数据运行它的代码。
并行代码完成后的结果返回到程序,串行代码继续执行。
实现模块之间的通信将通过具有内部记忆功能的S5000处理器。
最初,彩色图片像素的RGB值存储在处理器的内部存储中,平滑模块通过读取这些值进行处理,再次存储在系统内存中。
这个流程将继续其他两个系统的模块读取输入数据的内存和存储处理过的数据。
最后,检测出图片上的对象用相同的颜色标出系统输出分割后的图像。
3.1平滑子系统架构
平滑子系统需要原始像素的RGB值作为输入和平滑后的图像数值作为输出。
该平滑算法分为七个小步骤,每一个都被设计为一个单独的模块。
结构如图7所示。
最初,根据平滑算法,每一个像素都有8个3*3的邻域窗口,如图3所示。
这些块的颜色C(i,j),b的值,依据公式
(2),用于寻找处理的像素和周围块的颜色差异。
C(i,j),b的计算发生在处理器重可重构的部分,如图7所示。
S5000处理器可重构部分的限制之一是,用来在可重构的部分和处理器的软件部分之间进行通信的I/O寄存器(128位*3=384位)数量很小。
I/O寄存器的限制每次都会引起相邻两个窗口之间的颜色计算,两个相邻的3*3窗口包含了15个不同的像素(有一个重叠的3像素),这就意味着15*8*3(像素的颜色为RGB模式)=360位<384位。
这对算子块对C(i,j),b值的计算如图3所示。
同时,子窗口的方向对窗口的颜色的计算是非常重要的,这导致了两个不同模块计算子窗口的实现,一个为水平方向另一个为垂直方向。
对C(i,j),b的计算模块在可重构结构上的设计要通过以下几个方面的观察:
一是C(i,j),b的值包含乘法,这是对软件来说是一个很重的任务。
二是这个计算的实现,每一对C(i,j),b子窗口仅需要三个硬件时钟周期。
最后,需要提及的是作为可重构部分的处理器不支持浮点运算,定点算法被用于值的加权表。
平滑算法的下一步是利用公式(3)计算每一个相邻窗口和处理过的像素之间的颜色差异。
在这一阶段中,一个新的可重构的逻辑模块被开发。
该模块把8个邻域子窗口的C(i,j),b的值,处理的像素的颜色和它们之间的差异计算值作为输入,完成这个计算后,这个模块对软件返回两个值:
第一个是标志位,显示三个案例中哪一个算法为真,如图7所示,第二个是将要被处理的子窗口的ID号。
这个过程中每个计算需要9个时钟周期。
这个算法之前的步骤定义了三种情况中哪一个为真(依赖于计算后的值和临界值之间的差异,如图7所示)。
计算的过程是一个繁重的问题,因此它发生在S5000中可重构的部分。
这一选择对可重构部分的可通过的像素值的数量又加大了难度。
(7*7=49像素*3RGB=147*8=1176位)。
为了处理这个问题,我们考虑到一个有利条件就是,四个拐角窗口的值C(i,j),b的在第一步的平滑算法中已经被可重构的硬件计算过了。
在这种情况下,我们用这四个在拐角的3*3的窗口已被计算过的值和剩下的7*7的窗口的像素值相加。
最后的结果被7*7窗口的加权和所相除。
最后,如果最低和最高限度的差异比预定的值要大的话,算法的另外一个繁重计算就要开始执行了。
在这种情况下,一个新的硬件模块要被开发出来,它把C(i,j),b的值和四个窗口的方向(东南西北C(i,j),b的RGB*4个窗口=12*8=96位)作为输入,这些都是之前计算过的。
这个模块的输出是处理像素和领域的窗口像素差异最小的那个子窗口的方向。
颜色平滑模块的最后一个阶段是把新的平滑过的像素颜色值存储在S5000处理器的中央存储器中。
3.2边缘检测子系统
设计的第二个子系统是把图像平滑单元平滑过的像素值进行处理,以便找到图像的边缘。
边缘检测单元包括三个子单元:
局部差异计算单元,色调计算单元和边缘候选单元。
如图8所示。
最后,为了弄清楚一个像素点是不是边缘,候选边界单元的计算就会一直重复。
检测一个像素点属不属于边缘是被一个软件控制器来完成的。
如果一个像素不能够被确定是不是属于边缘的一部分,这个系统的子单元就会重复执行。
局部差异计算单元把处理过像素周围的7*7窗口的像素值作为输入。
用颜色平滑单元设计的Cbs计算模块,来计算被处理过的像素和周围3*3的子窗口的颜色差异。
如图3所示的四个方向的每一个方向的颜色差异,被暂时存储起来,被用于色调,饱和度和强度的每一个方向的计算。
最后得出的值被当做色调差异模块的输入值存储在表中。
色调差异标准化单元把四个方向的色调,饱和度和强度的值作为输入,并且计算被处理过像素和它周围子窗口像素的色调的标准差异值。
标准化的色调差异值包括软件的乘法和除法,因为饱和度和强度的值都是浮点数,它们不能被S5000处理器的可重构部分利用。
最后的边缘的值被边缘检测子系统的最后一个单元,边缘候选单元计算得出。
这个单元都是可重构的逻辑结构。
计算色调差异平均值的硬件加法器和驱动也在候选单元实现。
另外,两个硬件比较器在这个单元里实现是为了找出处理像素周围四个方向中候选边缘的最大值。
当边缘检测子系统处理完成的时候,一个新的图像通过边缘像素的定义从原始图像中产生了。
这个信息被存储在S5000处理器的中央存储器中,并且作为下一个步骤——颜色分割子系统的输入。
3.3颜色额分割子系统
颜色分割子系统实现的是算法的另一个方面,如同在第3节中所描述的那样。
颜色分割算法可以分为6个阶段。
这个子系统的结构示意图如图9所示。
颜色分割子系统把S5000处理器中央存储器中的边缘检测像素值作为输入,并且把图片中的对象用每个对象的平均颜色来表示,以示区分。
这个子系统的输出就是一张被用不同颜色标注了对象的图片,这个图片可以用于下一步的图像处理系统,比如ATR算法。
该系统第一个要实现的是基于边缘检测子系统输出的图片上的区域分割。
图像分割单元包括三个小的系统:
边缘像素检测单元,分割后的像素集成单元和分割颜色计算单元。
边缘像素检测单元在Stretch处理器上的可重构部分来执行。
它的输入包括处理后的像素值和周围有3*3窗口的像素值,并且给出信号值显示该像素是否可以被用作区域中。
分割后像素的集群是执行在软件中的。
这个软件单元把能放在同一个区域的像素集中起来,根据这个处理的信息把每一个区域添加一个ID。
最后,区域平均颜色的计算也在软件中执行,因为之前每一个区域的像素点数目没有给出任何信息。
因此那些区域中通过的像素的颜色值应该是动态的,这些工作在现在的Stretch技术中可能会有限制。
颜色分割子系统的第二个项目是同性质的扩展单元。
这个单元根据同质标准对来自图像分割单元的图像实现扩展算法。
同质扩展单元被分为两个部分:
对比属性性质单元和计算局部的绝对相似单元。
一般这个单元的架构要包括软件控制单元,去检查任意四个被处理过的相邻像素是否属于一个区域,这个控制过程在硬件单元上执行,为颜色差异的计算服务。
否则这个被处理过的像素就不予处置。
颜色分割算法的第三个步骤是基于颜色反射标准的颜色分割算法。
对于一个像素的颜色反射的计算,需要像素和领域之间的局部相似度的计算。
第二个执行的是重要计算单元,这个单元执行每一个区域或者像素在RGB模式上的级数。
另外,软件乘法器和加法器被设计用于计算颜色反射值和每一个被扩展后的区域的颜色。
最后的扩展算法根据区域周围没有被分割的像素的远近程度来进行。
距离扩展单元把没有被分割的像素区域的值作为输入,并且检测出哪个区域是被处理过的像素的最近区域,然后对这个区域进行扩展,以便它可以把那个像素包含进来。
最后,算法的下面两个步骤,过滤和对象的着色,全部是在软件中执行的。
每一个区域的大小都没有经过演绎推理,所以不能高效地在硬件上一一对应。
3.4FRS方法和Stretch技术的对比
在先前的章节中描述了FRS方法在SW/HWStretch处理器上的实现。
这个算法的一部分被作为可重构的模块在S5000处理器嵌入式的FPGA结构上建立,另外这个算法的其他部分被串行的C代码在嵌入式的Stretch处理器上执行。
这个小节描述了这个工作中最重要最核心的部分,就是Stretch可重构处理器能用于实现FSR算法的方法。
如上所述,像素或子窗口程序,和许多算法的不同阶段。
这些都导致了FPGA上可重构的模块可以和每一个子程序并行执行。
同样,FSR算法对一些值的计算不止一次(在图片上的不同地方)。
例如,Cbs,或候选边缘的值。
这又导致了可重构的结构可以在FRS方法中重新设置。
同样,FSR方法的低存储使用或存储的重新利用适用于在低存储的平台上实现。
最后,该算法属性的优点,那就是在某些阶段不需高精度计算,数字的精确度简化成了定点计算,更快地使可重构模块执行。
最后,FPGA和处理器之间的数据通信带宽较窄,也不允许这样类似的高精度。
4.性能和对比
这一节主要阐述该系统的性能表现和其他硬件软件在图像分割算法方面的显示效果。
在本文中,之前没有FRS算法的平滑、边缘检测和颜色分割的硬件执行,然而一个新的该算法的软件执行被设计出来了,用MatlabR2008来运行,为的是对比显示结果。
Matlab的显示效果和硬件的解决方案的对比在第4.1节中有描述。
同样,4.2对比了一系列颜色分割算法在Stretch架构的显示效果和硬件、软件的显示效果。
4.1平滑、边缘检测和色彩分割系统的显示效果
这一节详细介绍了这个嵌入式系统的显示结果,该系统设计的是用Stretch技术在S5000处理器上根据精确的时钟周期运行。
另外,这里还有个吞吐量的对比,在嵌入式系统结构和Matlab实现的算法之间。
我们使用了一张使用UCBerkeley作为颜色分割法基准的图片对该系统进行了测试。
我们使用的这张图片,是280*280的中等颜色分解的图片,如图10所示。
这张图片之所以被选用是因为它里面的对象(辣椒),相同颜色的部分有相互接触,因此,这是对该算法的一个比较困难的在图片中精确分离出对象的例子。
这些图片用Matlab软件运行并展示了算法的每个步骤(平滑,边缘检测和颜色分割),如图11、13和15所示。
另外,Stretch系统的演示结果在图12、14和16中。
此外,还有四张分别使用了这两种系统的对比图片,如图17所示。
经过比对这些图像我们可以观察到Matlab处理过的图像与Stretch处理过的图像有轻微的差别。
这都是由于FRS算法的属性,在一些子计算里用了浮点数计算。
硬件在执行算法时,用定点数计算,与Matlab处理方法相比,这就导致少部分的精度损失。
选用定点数算法有两个原因:
第一,采用定点数计算的算法执行时间要少于浮点数计算的算法;第二,S5000处理器的可重构部分不支持浮点数的算法。
尽管这两种颜色分割技术最后的显示效果有轻微差别,但是分割区域