改进灰度级量化演示系统的设计

2017-10-20 10:11华国栋徐志超缪治康许长勇
丝路视野 2017年14期

华国栋 徐志超 缪治康 许长勇

【摘要】依据改进灰度级量化方法的基本原理,提出一种步骤分解演示改进灰度级量化过程的方法,并使用MATLAB图形界面设计方法设计改进灰度级量化演示系统,促进提高课堂教学效率。

【关键词】IGS;演示程序;图形用户界面程序

一、引言

人类的视觉系统并非对所有视觉信息都有相同的敏感度。和计算机处理图像不同,人类对图像所传达信息的感知和理解并不需要对图像中每个像素值进行定量分析。这意味着,在正常的视觉处理过程中各种信息的相对重要程度并不是完全相同的。术语“心理视觉冗余”指的是图像中那些不是那么重要的信息。在不对图像观感造成负面影响的前提下,这些冗余是可以消除的。

改进的灰度级量化(Improved gray-scale quantization, IGS)是一种消除心理视觉冗余的方法。IGS量化方法的算法复杂,学习时难度大。基于此,本文在分析IGS量化原理的基础上,提出一种步骤分解演示IGS量化编码过程的方法,并设计MATLAB图形用户界面程序实现IGS量化编码过程的步骤演示,从而帮助降低用户学习IGS量化方法的难度,促进用户对知识的理解和消化。

二、IGS量化方法的基本原理

IGS量化方法根据人眼对边缘的固有敏感,通过对每一个像素值增加一个伪随机数,将边缘“拆散”。这个伪随机数是根据表示相邻像素值的低位生成的。由于相邻像素值的低位是随机的,所以这样做相当于增加了与伪轮廓相关的人工边缘随机性的灰度级。

图1、图2、图3、图4比较了IGS量化和均匀量化的处理效果。在图1和图3中,人物头顶附近有明显的高亮度伪轮廓。比较两幅图还可以发现,量化位数越低,伪轮廓越明显。使用IGS量化方法的图2、图4则明显削弱了伪轮廓。可见,在量化位数相同的情况下,使用IGS量化方法较均匀量化有更佳的视觉效果。

三、MATLAB图形用户界面程序设计

(一)算法描述

假设量化位数为b位,所处理的图像均为8位图像,那么IGS量化编码的过程可描述如下:

1.设定初始的“和”s为(00000000)2;

2.如果当前像素p的值的高b位全為(1)2,那么直接取出当前像素的高b位作为当前像素的编码值;

3.如果当前像素的高b位不全为(1)2,那么令s等于当前像素p的值与原来的s的低(8-b)位相加之和;所得新的s的高b位作为当前像素的编码值;

4.处理下一个像素。如果没有下一个像素,表示图像已经处理完毕;否则将下一个像素视为当前像素,回到步骤(2)。

以上文字表述的算法亦可翻译为流程图,如图 5所示。图中的符号采用了C语言风格的运算符,“<<”表示逻辑左移,“&”表示按位进行逻辑“与”运算,“=”表示向左侧的变量赋值,“==”表示判断两侧的变量是否相等。

(二)步骤分解演示IGS量化编码过程的基本思路

本设计实现步骤演示的基本思路是:用户点击开始演示按钮时,启动演示并对输入的第一个像素进行IGS量化编码。用户点击下一步按钮时,程序处理下一个像素。换言之,当前待处理像素在2.1节的描述中本来是由程序“自动”控制的,而本设计则把这种自动控制改成了由用户“手动”控制,从而能实现逐步演示。

量化過程的展示是在MATLAB GUI表格对象中进行的。图 6展示了本程序利用表格演示IGS量化编码的实施思路。如图 6,本程序借助三个矩阵(元胞)来进行量化过程的演示。这三个矩阵(元胞)第一列表示当前处理像素的值,也就是灰度级,第二列表示IGS量化过程中“伪随机数”与当前像素之和,第三列表示当前像素的IGS量化编码值。

矩阵MAT_IGS_DEMO存储“原始”表格数据。其中表格的第二、第三列数据通过2.1节所描述的算法处理得到的。

元胞IGS_DEMO_DATA存储中间结果,也就是十进制数值转二进制字符串函数dec2bin在输入参数为MAT_IGS_ DEMO时的输出。函数dec2bin产生的字符串长度未必是8位,故对于产生的长度少于8位的字符串,要在其中添加前导的“0”以补成8位。

元胞demo_data_html存储具有富文本样式的演示数据,这些富文本样式是通过对IGS_DEMO_DATA中的某些元素添加HTML标签实现的。使用HTML标签实现控件文本的样式控制是MATLAB GUI程序设计的常见手段。

使用富文本标记能够更清楚地让用户理解当前的IGS量化编码的输出是怎样得到的,“伪随机数”是如何生成的,从而能够使用户更容易理解IGS量化编码的过程。如图 7,当前像素的高位不全为“1”之时,高位用绿色标出。同时,与当前像素相加的二进制位用蓝色标出。如图 8,当前像素的高位全为“1”之时,高位的全“1”则用红色标出。编码结果对应的二进制位用下划线划出。

(三)设计结果

设计得到的用户界面程序如图 9所示。用户界面左上角的输入框允许用户输入待量化像素值的二进制形式,右上角使用滑动条让用户决定量化位数。右下角的三个按钮“开始演示IGS量化过程”、“下一步”和“重置”分别控制演示过程的启动、演示过程中的步进和恢复程序为默认状态。界面左下角的表格用来显示IGS量化过程中每一步的输出结果。

四、结束语

IGS量化编码的编码过程较难理解,学习者面对课本上的文字描述往往绞尽脑汁却仍一知半解。本文设计的图形界面程序能让用户观察到IGS量化编码方法的逐步演示,能有效帮助用户理解IGS量化方法,降低学习难度。

参考文献

[1] 冈萨雷斯.数字图像处理[M].北京:电子工业出版社,2005.

[2] 张庆丰.弱数学要求的数字图像处理教学[J].大学教育,2014(02):75~77.

[3] 吴峰,朱锡芳,刘浩,徐志超,赵越.“图像信息处理”课程教辅软件的设计[J].电气电子教学学报,2015(06):117~120.

[4] 罗华飞.MATLABGUI设计学习手记(第2版)[M].北京:北京航空航天大学出版社,2011.

[5] 张鑫,吴娱,平子良,丁启兰,金小溪.基于MATLABGUI的数字图像处理实验平台设计[J].现代电子技术,2014(18):6~8.

[6] 李磊.基于MATLABGUI的数字图像处理系统设计[D].成都:成都理工大学,2012.