首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用CPLD实现嵌入式平台上的实时图像增强

用CPLD实现嵌入式平台上的实时图像增强

通常,在拥有DSP或FPGA的嵌入式平台上,有关图像信号处理的算法部分都由DSP和FPGA完成。但是相对于标准的PC平台来说,嵌入式平台的资源有限得多,而且由于成本的原因,中央处理器的速度也通常无法与PC相比。因此,在PC机上用软件可以轻易实现的图像处理算法,完全移植到嵌入式平台上就要颇费一番周折了。
为了达到实时图像处理的目的,除了最大限度地发挥中央处理器的图像处理能力外,还需要合理地分配任务。DSP芯片的优势在于乘除运算的能力,由于其特殊的流水线结构和处理单元,大部分DSP都能在单周期内完成在PC上需若干个周期才能完成的乘法运算,所以在进行诸如FFT、DCT等运算时优势明显;相反在进行简单的加减运算时,由于时钟频率和总线宽度都无法与PC机相比,效率不高。因此,如果能用硬件实时实现这些相对简单却又繁琐的运算,就可以大大提高系统的总体性能。

1 改进的图像增强算法

图像增强是图像处理中用于改善图像质量以及图像视觉效果的一种方法。在DSP平台上采用直方图均衡实现实时图像增强是一种常用的方法。对一幅连续图像,其具有灰度G的阈值面积(所有轮廓线所包围的面积)为A(G),则其直方图H(G)定义为:
H(G)=lim[A(G+ΔG)-A(G)/ΔG=d/dcA(G),
ΔG→0
对于数字图像,G为整数,A(G)表示灰度值大于等于G的象素个数,当ΔG=1,H(G)=A(G+1)-A(G)。
如果对A(G)做一次系数为Gm/A0的比例变换,Gm表示灰度的最大值,A0表示图像的面积(在数字图像中为象素总数)。这就是种线性直方图均衡。这种直方图均衡的具体实现如下:
(1)对于图像{Pi,ji=1,2,...,n;j=1,2,...,m},就灰度G,G=0,1,...255,求出直方图H(G);

(2)由A(G+1)=A(G)+H(G)求出阈值面积A(G),G=1,2,...,255;
(3)求出变换后的灰度分度值hnew(G)=255 A(G)/A0,A0=nm;
(4)Pij=hnew(Pij)。
借助LUT,可使运算以最快速度实现。
考察直方图均衡的实现过程可以发现,这是一种有限区间内的单调变换。从其频域特性看,直方图均衡改变了已有频率成分的分布,使它们分布得更加均匀,但并不增加新的频率成分。直方图均衡对于彩色(灰度)值集中在低端的图像,可起到较明显的视觉改善作用。但对于那些色彩分布很不均匀、频带较窄,特别是整体偏亮的图像,效果就不明显了。
本文采用一种新的图像增强方法,将对图像的边缘增强处理与均衡结合起来,并且这些运算最终可由硬件实现。
对于连续图像P,其局部边缘可由对应空间梯度的幅值,取其一阶近似ΔPi,j=2Pi,j-Pi,j-Pi-1,j,可得图像{Pi,ji=1,2,...,n;j=1,2,...,m}在(i,j)的边缘信息。
如果不计Pi,j的取值范围,可直接对图像{Pi,ji=1,2,...,n;j=1,2,...,m}进行修正:
P′i,j=Pi,j+ΔPi,j,
其中,P′i,j表示Pi,j修正后的值。显然,图像{Pi,ji=1,2,...,n;j=1,2,...,m}按此规则修正后边缘值的变化更为强烈,边缘更为突出,可达到边缘增强的效果。同时,由于在原图像上叠加了梯度值,使得修正后的图像的频谱有一定的扩展。但由于没有对Pi,j的取值作约束,这样处理后的象素值可能会溢出,例如对于每个色彩通道为8位的图像,处理后的数值可能会大于255或小于0。因此,通常要对其进行归一化处理,即:
Pnew=255×(P′-P′min)/(P′max-P′min)。
但用硬件实现乘除运算可能会占用很多资源,上述公式即便以运算实现都是很不经济的。本文采用预拉伸加饱和/截止的方法,在不牺牲频率特性的基础上达到减少计算量的目的。
考察ΔPi,j与Pi,j的直方图,分别取得它们的右峰值所对应的横座标,记为GΔ和G,并找到k,使得kGΔ+G=255,则修正公式变为P′i,j=Pi,j+kΔPi,j。其中kΔPi,j可以LUT实现。修正后的P′i,j可在[0,255]上进行饱和/截止运算。
2 用CPLD实现实时的图像增强
本文所采用的改进图像增强算法的主要成份是差分、累加以及饱和/截止。这些运算都是加减法及逻辑运算,都属于ALU的简单操作,适合硬件实现。本文采用CPLD实现所提出的算法。以对具有30fps的1280×1024 RGB图像计算ΔPi,j为例,每计算一点ΔPi,j需要4次加(减)运算,即总的需要1280×1024×3×30×4=471,895,200次加(减)运算。如果采用的DSP的速度是100MHz,且假定所有运算都是单周期的,则仅仅该运算就需要4.7s!所以采用CPLD实现某些运算是必需的。



(3)求出变换后的灰度分度值hnew(G)=255 A(G)/A0,A0=nm;
(4)Pij=hnew(Pij)。
借助LUT,可使运算以最快速度实现。
考察直方图均衡的实现过程可以发现,这是一种有限区间内的单调变换。从其频域特性看,直方图均衡改变了已有频率成分的分布,使它们分布得更加均匀,但并不增加新的频率成分。直方图均衡对于彩色(灰度)值集中在低端的图像,可起到较明显的视觉改善作用。但对于那些色彩分布很不均匀、频带较窄,特别是整体偏亮的图像,效果就不明显了。
本文采用一种新的图像增强方法,将对图像的边缘增强处理与均衡结合起来,并且这些运算最终可由硬件实现。
对于连续图像P,其局部边缘可由对应空间梯度的幅值,取其一阶近似ΔPi,j=2Pi,j-Pi,j-Pi-1,j,可得图像{Pi,ji=1,2,...,n;j=1,2,...,m}在(i,j)的边缘信息。
如果不计Pi,j的取值范围,可直接对图像{Pi,ji=1,2,...,n;j=1,2,...,m}进行修正:
P′i,j=Pi,j+ΔPi,j,
其中,P′i,j表示Pi,j修正后的值。显然,图像{Pi,ji=1,2,...,n;j=1,2,...,m}按此规则修正后边缘值的变化更为强烈,边缘更为突出,可达到边缘增强的效果。同时,由于在原图像上叠加了梯度值,使得修正后的图像的频谱有一定的扩展。但由于没有对Pi,j的取值作约束,这样处理后的象素值可能会溢出,例如对于每个色彩通道为8位的图像,处理后的数值可能会大于255或小于0。因此,通常要对其进行归一化处理,即:
Pnew=255×(P′-P′min)/(P′max-P′min)。
但用硬件实现乘除运算可能会占用很多资源,上述公式即便以运算实现都是很不经济的。本文采用预拉伸加饱和/截止的方法,在不牺牲频率特性的基础上达到减少计算量的目的。
考察ΔPi,j与Pi,j的直方图,分别取得它们的右峰值所对应的横座标,记为GΔ和G,并找到k,使得kGΔ+G=255,则修正公式变为P′i,j=Pi,j+kΔPi,j。其中kΔPi,j可以LUT实现。修正后的P′i,j可在[0,255]上进行饱和/截止运算。
2 用CPLD实现实时的图像增强
本文所采用的改进图像增强算法的主要成份是差分、累加以及饱和/截止。这些运算都是加减法及逻辑运算,都属于ALU的简单操作,适合硬件实现。本文采用CPLD实现所提出的算法。以对具有30fps的1280×1024 RGB图像计算ΔPi,j为例,每计算一点ΔPi,j需要4次加(减)运算,即总的需要1280×1024×3×30×4=471,895,200次加(减)运算。如果采用的DSP的速度是100MHz,且假定所有运算都是单周期的,则仅仅该运算就需要4.7s!所以采用CPLD实现某些运算是必需的。
继承事业,薪火相传
返回列表