基于MatlabGUI的数字图像信息统计
2017-09-03英昌盛
英昌盛
(吉林师范大学计算机学院,吉林四平136000)
基于MatlabGUI的数字图像信息统计
英昌盛
(吉林师范大学计算机学院,吉林四平136000)
在光电成像系统获取数字图像过程中,由于输入光子起伏、CCD暗电流及CCD读出噪声等原因使图像质量退化,数字图像需要经过处理后才能获得比较理想的效果。信息统计是对降质图像进行预处理的一个重要环节。本文应用MatlabGUI设计了数字图像信息统计处理程序,为图像去噪及增强等后期工作提供必要数据支持。
噪声;正态分布;GUI;筛选;填充
随着光电成像技术的不断发展,数码相机、手机等成像设备在人类生活各个领域中的应用越来越广泛。成像设备将拍摄的场景以数字形式保存在其存储器中,用户既可以在设备上进行浏览,亦可使用和开发专门的图像处理软件来对这些数字图像进行加工、处理以获得更好的用户体验。
便携数码相机、手机等非专业成像设备在实际使用过程中所获得的数字图像并不理想,往往伴随着大量噪声[1]。导致数字图像中出现的噪声原因多种多样,除了器件自身的缺陷、设备中电子器件特性等原因外,光照条件是影响成像质量的重要因素。只有获得与数字图像噪声相关的统计信息,才能有的放矢地对图像进行去噪和增强等后期处理。
1 数字图像的噪声
对于数字图像Z而言,可将其看作理想图像Y与具有某种统计特征的噪声η的线性叠加,表述如下[2]:
Z(x,y)=Y(x,y)+η(x,y).
其中,Z为经过实际观测并获取的数字图像,Y为理想的不含噪声数字图像,η为具有某种统计特征的加性噪声。通常情况下,可认为加性噪声为服从标准正态分布N(0,σ2)的高斯白噪声。
服从正态分布N(μ,σ2)的数据满足3σ原则[3],即数据分布在以均值μ为中心1个标准差范围内的概率为0.6526;分布在以均值μ为中心2个标准差范围内的概率为0.9544;分布在以均值μ为中心3个标准差范围内的概率为0.9976。
2 数字图像信息统计实现
Matlab是美国MathWorks公司出品的商业数学软件,向量化编程是Matlab语言的精髓,通过向量化处理与运算可以极大提高程序运行效率。用户既可以通过脚本控制Matlab软件进行科学计算,也可通过GUI工具开发带用户界面的科学计算软件。
2.1 数字图像信息统计程序界面设计
在Matlab中,使用GUIDE创建如图1所示的应用程序界面。界面左侧是图像的选择部分,用于打开图像文件夹和筛选指定类型的数字图像,将筛选后图像添加到列表。界面中间部分则用于显示数字图像的统计信息,包括均值、最值、标准差、众值等,同时还可根据标准差或指定数值对数据进行筛选,并显示筛选结果。界面右侧部分则用于显示选定图像的直方图。
图1 数字图像信息统计程序界面
2.2 数字图像信息统计的实现
“选择图像文件夹”按钮的事件处理程序将用户指定文件夹下与设定类型匹配的所有图像添加到列表中。在处理程序中,需要设定用于保存图像文件路径及图像文件名的全局变量,然后取用户指定的文件类型,再对图像文件夹下的所有文件进行筛选,并将筛选结果保存到全局变量列表中。
function btnSelectFile_Callback(hObject, eventdata, handles)
global folderPath;
global imgFiles;
folderPath=uigetdir(”,’请选择图像文件所文件夹’);
fileType=get(handles.editFileType,’String’);
imgFiles=dir([folderPath ’’ fileType]);
strNames={imgFiles.name};
set(handles.lsbImages,’String’,strNames);
……
axes(handles.axesHist);%获取界面中的axes句柄
cla reset;
当选择某一图像时,需要对图像进行信息统计并显示其直方图。均值、标准差、最值、中值和众数等信息需在各个模块间共享,因而声明为全局变量。针对用户选择的图像,统计上述信息并将统计后的结果保存到相应位置,同时还需要将指定范围外的数据填充到相应的数据列表中。
function lsbImages_Callback(hObject, eventdata, handles)
……
sel=get(gcf,’SelectionType’);
if strcmp(sel,’normal’)
index=get(hObject,’Value’);
pathName=folderPath;
%取出索引对应的图像文件名
fileName=imgFiles(index).name;
imageFile=fullfile(pathName,fileName);
img=double(imread(imageFile));
imgMean=mean(img(:));%均值、标准差、最小值、最大值、中位数、众数
imgStdDev=std(img(:));
imgMin=min(img(:));
imgMax=max(img(:));
imgMedian=median(img(:));
imgMode=mode(img(:));
axes(handles.axesHist);%获取界面中的axes句柄
hist(img(:),imgMin:imgMax);
%将取得的统计信息输出到表格
set(handles.tbStat,’Data’,[imgMean imgStdDev imgMin imgMax imgMedian imgMode imgMax-imgMin]);
set(handles.tbOutNum,’Data’,[]);
set(handles.tbOutLower,’Data’,[]);
set(handles.tbOutLarger,’Data’,[]);
……
end
为实现代码重用,对筛选后数据的填充工作通过一个公共函数来完成。根据全局变量和用户指定的标准差范围,筛选并提取符合条件的数据,之后将数据填充到列表中。
function Process_LowerUpper(handles)
global img;
global imgMean;
global imgStdDev;
global stdSelect;
str=get(handles.editStdDev,’String’);
stdSelect=str2double(str);%获取用户指定的标准差
[rowLarge,colLarge,valLarge]=find(img>(imgMean+stdSelect*imgStdDev));
lenLarge=size(rowLarge,1);
pixsLarge=zeros(lenLarge,1);
for i=1∶lenLarge
pixsLarge(i)=img(rowLarge(i),colLarge(i));
end
set(handles.tbOutLarger,’Data’,[rowLarge,colLarge pixsLarge]);
[rowLow,colLow,valLow]=find(img<(imgMean-stdSelect*imgStdDev));
lenLow=size(rowLow,1);
pixsLow=zeros(lenLow,1);
for i=1∶lenLow
pixsLow(i)=img(rowLow(i),colLow(i));
end
set(handles.tbOutLower,’Data’,[rowLow colLow pixsLow]);
height=size(img,1);
width=size(img,2);
totalPixels=height*width;
ratioLower=100*lenLow/totalPixels;
ratioLarger=100*lenLarge/totalPixels;
set(handles.tbOutNum,’Data’,[totalPixels lenLow ratioLower lenLarge ratioLarger]);
4 结语
在实验过程中,本文以便携数码相机拍摄的数字图像为例展示了获取图像统计信息的过程,程序运行结果如图2所示。在图2中,由均值及方差等统计数据可知图像亮度整体较暗,但从数据列表和图像直方图可以看出图像中存在一部分高亮度值数据。根据上述信息可以推断图像是在环境照度较低条件下拍摄获得,光子噪声和CCD暗电流噪声是图像的主要噪声源。
图2 数字图像信息统计程序运行结果
经实际测试,软件有效获取了数字图像的统计信息,为进一步有针对性地对图像进行去噪和增强等处理过程提供了必要支持。
[1]Rafael C Gonzalez,Richard E Woods,Steven L Eddins,等.数字图像处理(MATLAB版)[M].北京:电子工业出版社,2013.
[2]Dabov K,Foi A,Egiazarian K.Image denoising with block-matching and 3D filtering[J].Proceedings of SPIE - The International Society for Optical Engineering,2006(6064):354-365.
[3]盛骤.概率论与数理统计[M].3版.北京:高等教育出版社,2001.
Digital Image Information Statistics Based on MatlabGUI
YING Chang-sheng
(Jilin Normal University, Siping Jilin 136000,China)
In the process of acquiring digital images in photo-electric imaging system, degraded images must be technically processed because of the impact introduced by photon shot noise, CCD dark current noise, CCD readout noise and so on. Information statistics is an important pre-processing step in digital image processing. In the article, we have designed an information statistics program of digital images using MatlabGUI, and it provided necessary data for further processing step, such as image denoising and image enhancement etc.
noise; normal distribution; GUI; filtering; filling
2017-03-20
英昌盛(1979- ),男,讲师,从事计算机应用研究。
TP312
A
2095-7602(2017)08-0055-04