APP下载

基于Qt的数字图像处理实验演示系统

2018-07-27吴龙飞

实验室研究与探索 2018年7期
关键词:灰度级均衡化霓虹

陈 龙, 吴龙飞

(杭州电子科技大学 电子信息学院,杭州 310018)

0 引 言

数字图像处理是指利用计算机处理数字图像信号的过程,实现提高图像质量、提取特征信息、图像编码和压缩等效果[1-2]。随着模式识别、机器学习等学科的迅速发展和应用,数字图像处理作为先导课程在教学中显得尤为重要[3-6]。目前数字图像处理课程教学中相关算法设计和效果演示主要在Matlab环境下编程实现,此方法依赖于安装有Matlab软件的计算机环境[7-8]。Matlab软件庞大的安装包限制了软件的通用性和可移植性,同时,采用Matlab编程具有算法执行效率低、交互性弱等缺点。

本文基于Qt图形用户界面应用程序开发框架,设计了数字图像处理实验演示系统,具有友好的用户交互界面,实现了对数字图像在空间域、频率域进行处理的功能,增加了雕刻、霓虹、漫画等图像特效处理。软件窗口中处理前后的图像并列显示,直观地展示算法效果,方便进行比对分析,加深学生对算法的理解和认识,增加教学中的趣味性,提高学生的学习热情。此外,Qt图形用户界面应用程序开发框架为跨平台库,增强了软件的可移植性,系统软件封装后不依赖于计算机编程环境即可运行,使用方便、快捷[9-12]。学生可在开放的软件接口基础上编写程序、扩展系统功能,为提高学生实践动手能力提供了新的思路。

1 系统软件设计

Qt是基于C++的跨平台图形用户界面开发框架,具有模块化程度高、软件接口丰富,用户开发方便快捷等特点。Qt环境下开发的应用程序可以在很少改动的情况下运行于Windows、Linux等系统中,极大地增强了代码的可移植性和通用性。

使用Qt开发数字图像处理实验演示系统需要对图片进行输入、显示、处理和保存等操作,并在软件界面中添加不同的功能按键实现不同图像处理操作的切换功能。系统图形界面设计框架如图1所示,使用Qt框架中QFileDialog类创建文件选择对话框,获取图像文件路径,实现图片输入功能;QPixmap类的实例加载路径中的图像文件,在界面中使用两个QLabel控件分别显示原图和处理效果图;QImage类的实例实现图像保存到本地路径的功能,功能按键由QToolBar中的QAction控件实现,对每个QAction控件通过信号与槽机制连接到相应的图像处理函数,实现功能切换;图像处理函数使用C++编程完成[13-15]。系统操作界面实现效果如图2所示,菜单栏包含了文件的输入、保存等选项,工具栏按照类别包含了空域操作、频域操作、特效处理等功能按键,主界面左边显示加载的图像原图,右边显示处理完成的效果图,方便对不同图像处理算法进行对比分析。

图1 系统图形界面设计框架

图2 系统操作界面实现效果

2 实例分析与演示

本系统实现了数字图像处理技术中对图像的空域操作、频域操作的基本功能,其中,空域操作包括图像的点操作和模板操作两部分。在基本操作实现的基础上,通过设计算法对图像进行浮雕、霓虹、底片等特效处理,展示图像处理算法的部分应用场景。系统图像处理功能框架结构如图3所示。选取图像处理中空间域操作—图像直方图均衡化处理、频域操作—图像傅里叶变换处理、特效处理—图像霓虹特效处理3种功能进行系统实例分析和演示。

图3 系统图像处理功能框架结构

2.1 图像直方图均衡化处理

直方图均衡化是利用直方图对图像的对比度进行调整的方法,其实现简单、高效,能够增加图像的局部对比度,被广泛应用于图像增强处理中。

(1) 原理分析。对于灰度级为[0,L-1]的图像,灰度直方图表示某个灰度级的像素点在图中的个数,假设灰度级为rk的像素点个数为nk,则直方图为h(rk)=nk,归一化表示为:

(1)

式中,n表示总的像素点个数。归一化直方图0≤p(rk)≤1,直方图和等于1。对于动态范围小、灰度级集中分布导致图像显示效果差的情况,可进行直方图均衡化处理,拉伸图像灰度值的分布范围,达到增强图像、优化显示的效果,其处理过程表示如下:

(2)

式中:sk为转换后的图像灰度级;rk为原图像灰度级;T为转换函数。原图中灰度级为rk的的像素点映射到转换后的图中灰度级为sk的像素点。处理完成后图像直方图近似均匀分布。

(2) 实现步骤。①遍历输入图像像素点,统计不同灰度级像素点个数,计算图像的直方图P;②根据式(2)计算各灰度级直方图,创建灰度级映射表rk→sk;创建与原图大小相等、类型相同的空图用于存储处理效果图。对输入图像每一大小个像素点,查询映射表进行图像转换,转换完成后像素值存储在效果图对应像素点位置。

(3) 效果展示。图像直方图均衡化处理效果如图4所示,直方图均衡化处理后图像更为鲜明、局部细节有了很大的改进,表现力得到优化。图5所示为直方图均衡化处理前后图像直方图对比图。处理前,图像灰度级分布在狭窄的一段灰度范围内;处理后,图像动态范围得到扩展,像素值分布较为均匀。

图4 图像直方图均衡化处理效果

图5 直方图均衡化处理前后图像直方图对比图

2.2 图像离散傅里叶变换处理

图像的频域操作是指将图像转换到频率域空间进行处理,完成后再从频率域转换到空间域显示的过程。在频率域中分析图像能够直观地得到图像频率成分与图像空间域显示效果间的关系,在对图像进行增强处理时可方便地确定需要保留或滤除的频率,设计滤波器更为直接。

(1) 原理分析。离散傅里叶变换将一幅图像分解为正弦和余弦两部分,实现了图像从空间域到频率域的转换。二维图像的离散傅里叶变换公式如下:

(3)

eix=cosx+isinx

(4)

式中:f(i,j)为空间域像素值;i、j分别为空间域X轴、Y轴坐标;F(u,v)为频率域值,u、v为频率变量。图像经过离散傅里叶变换后频域值为复数(实部R(u,v)和虚部I(u,v)),频谱和相位分别定义为:

(5)

φ(u,v)=arctan[I(u,v)/R(u,v)]

(6)

频率域中图像由幅度图和相位图共同表示。实际应用中,由于幅度图包含了原图像中几乎所有有用的几何信息,因此只使用幅度图对图像进行分析。在频率域转换为空间域时,需要同时使用幅度图和相位图进行转换才能够保证图像信息的完整性。

(2) 实现步骤。①读入原图,通过添加新边缘像素方法扩展图像至合适尺寸(当图像尺寸为2、3的倍数时,离散傅里叶变换计算速度最快);②分配频率域复数存储空间;③进行离散傅里叶变换运算;④根据式(5)计算频率域幅度值并取对数进行缩放;⑤剪切幅度图,对图像象限重新调整,使原点位于图像中心;⑥归一化幅度图像素值到[0,1],显示转换完成的频谱幅度图像。

(3) 效果展示。傅里叶变换处理效果如图6所示,展示了图像经过离散傅里叶变换后的频谱幅度图。在频率域中,高频信号代表了图像中的纹理和细节部分,低频信号代表了图像中的轮廓。频谱幅度图中心为低频信号,四周为高频信号。低频信号处亮度较高,高频信号处亮度较低,表示原图中灰度值变化平缓的地方较多,出现灰度变化剧烈(边缘)的地方较少。

图6 傅里叶变换处理效果

2.3 图像霓虹特效处理

图像特效处理是PhotoShop、美图秀秀等图像处理软件的常见功能,在对图像的空域操作、频域操作的基础上设计算法实现,以图像霓虹特效为例介绍图像特效处理的原理和实现。

(1) 原理分析。霓虹特效是指绘制图像的边缘部分,增强图像中颜色变化的过渡边缘,使得图片产生物体、人物轮廓发光的绚丽效果。

获取图像边缘是图像霓虹特效处理的前提和关键,本系统通过计算图像当前像素与其同行右侧和同列下方的像素梯度值获取图像边缘,梯度值越大表示该像素点处颜色变化越明显,则该处像素值亮度需要增强,以梯度值与常数相乘更新当前像素带点值实现该效果。假设图像当前像素点为P1,RGB通道值分别为r1、g1、b1。与当前像素点同行下一个像素点为P2,与当前像素点同列下一个像素点为P3,RGB通道值分别为r2、g2、b2;r3、g3、b3。图像转换式为:

(7)

式中:r1(new)、g1(new)、b1(new)为当前像素点RGB通道的更新值;t为常数,调节新的像素值在灰度级范围内。

(2) 实现步骤。假设一幅图像像素点个数为M×N(M行N列),RGB三通道,Img变量存储原图像矩阵,与Img等大小的变量newImg存储处理完成的图像,主要处理程序如下:

for(int i=0;i

{

for(int j=0;j

{

//Img表示原图像矩阵

//获取图像第i行j列像素点RGB通道值

r1 = img[i,j].r();

g1 = img[i,j].g();

b1 = img[i,j].b();

//获取图像第i行j+1列像素点RGB通道值

r2 = img[i,j+1].r();

g2 = img[i,j+1].g();

b2 = img[i,j+1].b();

//获取图像第i+1行j列像素点RGB通道值

r3 = img[i+1,j].r();

g3 = img[i+1,j].g();

b3 = img[i+1,j].b();

//计算更新后RGB通道值

newR= t*

sqrt((r1-r2)*(r1-r2)+(r1-r3)*(r1-r3));

newG = t*

sqrt((g1-g2)*(g1-g2)+(g1-g3)*(g1-g3));

newB = t*

sqrt((b1-b2)*(b1-b2)+(b1-b3)*(b1-b3));

//newImg表示处理完成后图像矩阵

//限制幅值在[0,255]

if(newR >255)

newImg.r() = 255;

else

newImg.r() = newR;

if(newG >255)

newImg.g() = 255;

else

newImg.g() = newG;

if(newB >255)

newImg.b() = 255;

else

newImg.b() = newB;

}

}

(3) 效果展示。图像霓虹特效处理效果如图7所示,处理完成后图像中人物和物体的边缘(梯度幅值大)亮度增强,表现出闪光的效果,而人物和物体表面颜色变化缓慢的区域(梯度幅值小)亮度减小,衬托闪光的边缘,使得图像表现出夜晚霓虹的特效。

图7 霓虹特效处理效果

3 结 语

本文基于Qt图形用户界面开发框架设计了数字图像处理实验演示系统,实现了数字图像处理课程中图像的空域操作、频域操作、特效处理等基本算法,具有良好的用户交互界面,方便对图像处理技术的不同算法进行效果演示和分析对比,将该软件系统应用于数字图像处理课程教学中,达到了以下教学目的:

(1) 掌握数字图像的基本处理原理和方法,图像处理演示过程直观形象地展现了不同图像处理算法的实现效果,使学生能够深入了解图像处理算法在不同情况下的应用;

(2) 通过对图像的读取、存储以及空域操作、频域操作等基本处理方式的实现,掌握编程环境中图像的表达方式以及算法实现过程和方法;

(3) 分析对比图像处理中不同算法的实现方法和处理效果,为以后再图像处理应用中设计处理算法拓宽思路,缩短算法设计周期。

数字图像处理实验演示系统的应用可以激发学生学习兴趣,开阔学生的眼界,提倡学生能够学以致用,锻炼动手能力,提升专业技能,为以后工作奠定扎实的理论基础和实践技能。

猜你喜欢

灰度级均衡化霓虹
夜雨之下,霓虹闪烁
人眼可感知最多相邻像素灰度差的全局图像优化方法*
霓虹摄影
流光溢彩
基于灰度直方图的单一图像噪声类型识别研究
PSO约束优化耦合直方图均衡化的图像增强算法
制度变迁是资源均衡化的关键
直方图均衡化技术在矢量等值填充图中的算法及实现
基于混沌加密的DCT域灰度级盲水印算法
基于实测校正因子的实时伽马校正算法