基于MATLAB数字图像GLCM纹理分析软件实现
2019-01-08王辉丛榆坤陈金阳王敏
王辉 丛榆坤 陈金阳 王敏
摘要:结合数字图像处理技术课程与科研实验的需要,针对图像灰度共生矩阵纹理二次特征提取问题的需求,本文使用MATLAB语言设计了灰度共生矩阵图像处理及特征提取程序,并给出了软件算法在MATLAB开发平台上程序的源代码。
关键词:图像处理技术;纹理特征;灰度共生矩阵;软件设计;MATLAB
中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2019)10-0146-03
1 图像处理技术与灰度共生矩阵
数字图像处理技术(Digital Image Processing)主要讨论用计算机对数字图像进行去除噪声、图像增强、图像复原、图像分割、图像提取特征等处理的加工方法和分析技术。纹理特征是数字图像处理分析中的常用的重要特征,它描述了数字图像中重复出现的局部模式以及排列规则,常用于图像分类和场景识别。本文结合数字图像处理技术课程与科研实验的需要,针对图像灰度共生矩阵纹理二次特征提取问题的需求,本文使用MATLAB语言设计了灰度共生矩阵图像处理程序,并给出了软件算法在MATLAB开发平台上程序的源代码。
2 灰度共生矩阵MATLAB软件程序设计
2.1 函数程序和软件使用方法
软件主函数为function GLCM_FAST(path_of_image,seq,step, gray_level),其中,Path_of_Image图像存储路径,string格式;Seq批处理图像序号,Seq=[first last],first是首图片编号,last是尾图片编号;Step灰度共生矩阵生成步长,Step=1、2、3...整数;GRAY_LEVEL图像灰度级数,GRAY_LEVEL一般取值为16,32,64,128,256;函数返回值为灰度共生矩阵14个特征参数及程序运行时间。
软件子函数计算θ=0°、45°、90°、135°四个方向灰度共生矩阵函数分别为function GCLM_P=Cal_Co_Matrix_0(DATA,GRAY_LEVEL,STEP)、functionGCLM_P=Cal_Co_Matrix_45(DATA,GRAY_LEVEL,STEP)、function GCLM_P=Cal_Co_ Matrix_90(DATA,GRAY_LEVEL,STEP)以及function GCLM_P=Cal_Co_Matrix_135(DATA,GRAY_LEVEL,STEP),其中,DATA已经读入的图像数据,Step、GRAY_LEVEL同上。软件子函数计算灰度共生矩阵14个特征参数函数为function Parameter= Cal_Para(GCLM_P,GRAY_LEVEL),GCLM_P待处理的灰度共生矩阵,其函数返回值为灰度共生矩阵14个特征参数,软件程序流程图如图1所示。
软件使用方法如下:(1)将文件置于MATLAB软件默认调用函数目录中;(2)将待处理图片,依次按数字编号1,2,3...,修改文件名;(3)打开MATLAB程序,在命令窗口中,分别给Path_of_Image、Seq、Step、GRAY_LEVEL赋初始值;(4)在命令窗口中,输入“GLCM_FAST(Path_of_Image,Seq,Step,GRAY_LEVEL);”即可运行程序。待弹出窗口后,程序结束,在命令窗口中,显示程序运行时间,并将所得特征参数写到当前目录下相应的“WH_4_ Angles.txt”、“WH_AVR.txt”和“WH_4_Angles_Gui.txt”等3个数据文件中,分别对应灰度共生矩阵4个方向特征參数值数据文件、4个方向特征参数平均值数据文件和4个方向归一化后特征参数值数据文件。
2.2 主函数程序程序代码
function GLCM_FAST(path_of_image,seq,step, gray_level)
clc;
t=cputime;
Seq= seq;
STEP=step;
GRAY_LEVEL=gray_level;
PATH_OF_IMAGE= path_of_image;
YDT=fix(clock);
time=[num2str(YDT(4)),':',num2str(YDT(5)),':',num2str(YDT(6))];
disp(time)
eval(['cd' ' ' PATH_OF_IMAGE]);
ff0=fopen('WH_4_Angles.txt','w');
ff1=fopen('WH_AVR.txt','w');
ff2=fopen('WH_4_Angles_Gui.txt','w');
Image_First=Seq(1);Image_Last=Seq(2);
name=int2str(Image_First);
for Image_number=Image_First:Image_Last
x=imread(name,'bmp');
data=rgb2gray(x);
DATA=double(data);
GCLM_P1=Cal_Co_Matrix_0(DATA,GRAY_LEVEL,STEP);
Parameter(1,:)=Cal_Para(GCLM_P1,GRAY_LEVEL);
GCLM_P2=Cal_Co_Matrix_45(DATA,GRAY_LEVEL,STEP);
Parameter(2,:)=Cal_Para(GCLM_P2,GRAY_LEVEL);
GCLM_P3=Cal_Co_Matrix_90(DATA,GRAY_LEVEL,STEP);
Parameter(3,:)=Cal_Para(GCLM_P3,GRAY_LEVEL);
GCLM_P4=Cal_Co_Matrix_135(DATA,GRAY_LEVEL,STEP);
Parameter(4,:)=Cal_Para(GCLM_P4,GRAY_LEVEL);
PARAMETER=mean(Parameter);
P_SUM=sum(Parameter);
Parameter_Gui=Parameter;
for iii=1:14
Parameter_Gui(:,iii)=Parameter(:,iii)/P_SUM(iii);
end
for J=1:4
for I=1:14
String=[num2str(Parameter(J,I)),' '];
fprintf(ff0,'%s',String);
String2=[num2str(Parameter_Gui(J,I)),' '];
fprintf(ff2,'%s',String2);
if J==1
String1=[num2str(PARAMETER(I)),' '];
fprintf(ff1,'%s',String1);
end
end%
fprintf(ff0,'%s\n',';');
fprintf(ff2,'%s\n',';');
end%
fprintf(ff1,'%s\n',';');
name=str2double(name);name=name+1;name=int2str(name);
fprintf(ff0,'%s\n','');
fprintf(ff2,'%s\n','');
end
fclose(ff0);
fclose(ff1);
fclose(ff2);
YDT=fix(clock);
time=[num2str(YDT(4)),':',num2str(YDT(5)),':',num2str(YDT(6))];
disp(time)
disp(cputime-t)
Figure
3 結语
本文使用MATLAB语言设计了灰度共生矩阵图像处理及特征提取程序,给出了软件算法在MATLAB开发平台上程序的源代码。该软件应用于机器视觉、智能控制与模式识别研究领域,获取已知图像的灰度图像共生矩阵,能够反映图像灰度关于方向、相邻间隔、变化幅度的综合信息。通过灰度共生矩阵可以分析图像的局部模式和排列规则等。还可以提取其角二阶矩、对比度、相关、熵、方差、均值和、方差和、逆差矩、差的方差、和熵、差熵、聚类阴影、显著聚类和最大概率共14个纹理特征参数。该程序使用灵活,设有6个输入形式参数,输入图像格式兼容范围广,输出为灰度共生矩阵及其特征参数,可以根据需要设置灰度共生矩阵及其特征的获取参数,以满足不同需求下的纹理参数获取。此外,本软件还可以计算程序执行时间,能够解决图像灰度共生矩阵纹理二次特征提取问题的需求,同时能够满足数字图像处理技术课程与科研实验的需要。
参考文献
[1] 王辉,白雪冰,丁金华,等.基于贝叶斯理论集成网络分类器在板材识别中的应用[J].大连工业大学学报,2015,34(3):231-234.
[2] 兰蓉,母保洋.二级分区下颜色融合纹理的刑侦图像检索[J].计算机应用与软件,2019,36(8):181-188.
[3] 芦兵,孙俊,杨宁,等.基于荧光透射谱和高光谱图像纹理的茶叶病害预测研究[J].光谱学与光谱分析,2019,39(8):2515-2521.
[4] 肖志云,刘洪.小波域马铃薯典型虫害图像特征选择与识别[J].农业机械学报,2017,48(9):24-31.
[5] 基于MATLAB语谱图的声乐研究[J].软件工程,2019,22(9):1-4.