资源描述:
《用cpld实现嵌入式平台上的实时图像增强》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用CPLD实现嵌入式平台上的实时图像增强
2、第1内容显示中lunouseg(this)">1改进的图像增强算法图像增强是图像处理中用于改善图像质量以及图像视觉效果的一种方法。在DSP平台上采用直方图均衡实现实时图像增强是一种常用的方法。对一幅连续图像,其具有灰度G的阈值面积(所有轮廓线所包围的面积)为A(G),则其直方图H(G)定义为:500)this.style.ouseg(this)">对于数字图像,G为整数,A(G)表示灰度值大于等于G的象素个数,当ΔG=1,H(G)=A(G+1)-A(G)。如果对A(G)做一次系数为Gm/A0的比例变换,Gm表示灰度的最大值,A0表示图
3、像的面积(在数字图像中为象素总数)。这就是种线性直方图均衡。这种直方图均衡的具体实现如下:(1)对于图像{Pi,j
4、i=1,2,...,n;j=1,2,...,m},就灰度G,G=0,1,...255,求出直方图H(G);500)this.style.ouseg(this)">(2)由A(G+1)=A(G)+H(G)求出阈值面积A(G),G=1,2,...,255;(3)求出变换后的灰度分度值hne;(4)Pij=hneouseg(this)">,取其一阶近似ΔPi,j=2Pi,j-Pi,j-Pi-1,j,可得图像{Pi,j
5、i=1,2,...,n;j=1,2,...,m}在
6、(i,j)的边缘信息。如果不计Pi,j的取值范围,可直接对图像{Pi,j
7、i=1,2,...,n;j=1,2,...,m}进行修正:500)this.style.ouseg(this)">其中,P′i,j表示Pi,j修正后的值。显然,图像{Pi,j
8、i=1,2,...,n;j=1,2,...,m}按此规则修正后边缘值的变化更为强烈,边缘更为突出,可达到边缘增强的效果。同时,由于在原图像上叠加了梯度值,使得修正后的图像的频谱有一定的扩展。但由于没有对Pi,j的取值作约束,这样处理后的象素值可能会溢出,例如对于每个色彩通道为8位的图像,处理后的数值可能会大于255或小于0。因此,
9、通常要对其进行归一化处理,即:500)this.style.ouseg(this)">。但用硬件实现乘除运算可能会占用很多资源,上述公式即便以运算实现都是很不经济的。本文采用预拉伸加饱和/截止的方法,在不牺牲频率特性的基础上达到减少计算量的目的。考察ΔPi,j与Pi,j的直方图,分别取得它们的右峰值所对应的横座标,记为GΔ和G,并找到k,使得kGΔ+G=255,则修正公式变为500)this.style.ouseg(this)">。其中kΔPi,j可以LUT实现。修正后的P′i,j可在[0,255]上进行饱和/截止运算。2用CPLD实现实时的图像增强本文所采用的改进图像增强算
10、法的主要成份是差分、累加以及饱和/截止。这些运算都是加减法及逻辑运算,都属于ALU的简单操作,适合硬件实现。本文采用CPLD实现所提出的算法。以对具有30fps的1280x1024RGB图像计算ΔPi,j为例,每计算一点ΔPi,j需要4次加(减)运算,即总的需要1280x1024x3x30x4=471,895,200次加(减)运算。如果采用的DSP的速度是100MHz,且假定所有运算都是单周期的,则仅仅该运算就需要4.7s,所以采用CPLD实现某些运算是必需的。500)this.style.ouseg(this)">采用CPLD实现运算(例如边缘处理中涉及的求梯度运算),还需
11、解决数据的暂存问题。本文以一片高速SRAM作为数据缓冲区。由于图像数据的采样输入的频率也很高,需要充分合理地安排好每一次操作的时序,充分利用已参与运算的数据及中间结果,减少数据进出SRAM的次数。2.1基于E1-DSP的网络图像采集平台在分析具体实现方法前,先简要介绍所采用的硬件平台。该平台主要用于远程图像采集和以太网传输,其图像通道结构如图1所示。OV9620是CMOS的数字图像传感器,负责采集连续的数字图像;中央处理器使用德国HYPERSTONE公司的E1系列RISCDSP,它集DSP和RISC于一身,可以加载OS,方便地实现任务调度、内存管理等功能,大大提高系统的总体性
12、能;CPLD的基本功能是作为E1总线接口控制模块,本文还将用它实现图像增强运算。2.2算法的总流程为了实现实时的读写和运算,需要由外部电路产生24MHzx4的时钟EXCLK作为读写时钟,所有时序都由CMOS时钟和EXCLK控制,可以做到完全同步。具体流程如图2所示。(1)在CMOS时钟到来时,从CMOS传感器的数据输出口采集Pi,j,并实现加法运算RESULT=Pi,j+Pi,j,同时用EXCLK的第0个时钟向SRAM写入P′i,j-1或P′i,m-1(本行最后一个数据,下一次操作应换行);500)th