报告数图Word格式.docx
《报告数图Word格式.docx》由会员分享,可在线阅读,更多相关《报告数图Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
用
表示。
若己知线圈的圈距为A,则
或者
(2-1)
纵向密度(简称纵密)是沿线圈纵行方向,规定长度(粗针型为100mm,细针型为50mm)内的线圈横列数。
若己知线圈的圈距为B,则
(2-2)
由于针织物在加工过程中容易受到拉伸而产生变形,因此原始状态对某一针织物来讲不是固定不变的,从而影响实测密度的正确性。
因此在测量针织物的密度之前应该将试样进行松弛,使之达到平衡状态,减少测量误差。
织物密度的测试:
在机织物经纬密计算机自动测量中,通常采用的方法是快速傅立叶变换(FFT)。
图像进行FFT分析后得到光谱能量图,从能量谱图中周期性变化的高能量部分,识别出织物的基本组织,对图像一定方向上取高频信号得到织物经纱和纬纱的细度。
通过对织物图像频谱特征的提取,确定经纬纱的频率,进而得到机织物经纬密度。
最近也有学者利用自适应正交小波实现自动测量机织物的密度,本文正是采用这种方法,详细步骤将在下文中论述。
织物的单元组织的结构与周期的测试:
在织物中任何方向的结构重复,在其功率谱图中都会出现一组与该方向相垂直的亮带组,通过选取这些亮带的频率成分进行变换,就可以清楚的恢复图像的基本结构。
2.2数字图像处理技术及MATLAB的实现方法
2.2.1数字图像处理技术的发展概况
数字图像最初应用在新闻业,首批图片是通过海底光缆在伦敦和纽约之间被传送的。
20世纪20年代初期Bart1ane光缆图片传输系统的引入,使得一幅图片穿过大洋洲所用的时间由原来的一个星期减少到3个小时;
20世纪40年代,数字计算机的出现,使得用计算机处理图像成为可能;
60年代早期,能够进行大量图像处理的计算机出现,使得图像处理技术得到发展。
今天,数字图像处理技术广泛应用于科学研究、工农业生产、医疗保健、航空航天、军事等各个领域,在国民经济中发挥着越来越大的作用。
2.2.2数字图像处理方法及内容
数字图像处理[2]方法大致可分为两大类,即空域法和变换域法。
(1)空域法
这种方法是把图像看作平面中各个像素组成的集合,然后直接对这一二维函数进行相应处理。
空域处理法主要有下面两大类。
一是邻域处理法。
其中包括梯度运算、拉普拉斯算子、平滑算子运算和卷积运算。
二是点处理法。
其中包括灰度处理、面积、周长、体积、重心运算等。
(2)变换域法
这种方法首先对图像进行正交变换,得到变换系数阵列,然后对变换后的图像在频域中进行各种再处理(往往相对于空间域内更方便快捷),最后把处理结果逆变换到空间域,从而得到处理后的目标图像。
数字图像处理概括的讲主要包括以下几项内容:
几何处理、算术处理、图像增强、图像复原、图像重建、图像编码、图像识别、图像理解。
2.2.3MATLAB在图像处理中的应用
数字图像处理工具箱函数包括以下15类:
(1)图像显示函数;
(2)图像文件输入、输出函数;
(3)图像几何操作函数;
(4)图像像素值及统计函数;
(5)图像分析函数;
(6)图像增强函数;
(7)线性滤波函数;
(8)二维线性滤波器设计函数;
(9)图像变换函数;
(10)图像邻域及块操作函数;
(11)二值图像操作函数;
(12)基于区域的图像处理函数;
(13)颜色图操作函数;
(14)颜色空间转换函数;
(15)图像类型和类型转换函数。
图像的读写与显示操作:
用imread()读取图像,imwrite()输出图像,把图像显示于屏幕有imshow(),image()等函数。
图像格式转换函数:
rgb2grey()将真彩色图像转换成灰度图像,ind2grey()将索引图像转换成灰度图像,im2bw()将灰度、真彩、索引图像转换成二值图像。
MATIAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。
MATLAB可操作的图像文件包括BMP、HDF、PJEG、PCx、TIFF、XWD等格式。
下面就课题所涉及的图像处理内容以及利用MATLAB实现的函数和功能做详细的介绍。
2.3设计方案
(1)读取已获得的需要测量的织物的图像或从计算机上联接的图像获取设备中获得实际图像;
(2)对图像进行任意角度旋转,使织物纬线方向呈水平;
(3)根据图像质量对对图像进行去噪和对比度增强;
(4)再进行小波变换将织物径向和纬向信息分离出来,然后进行二值化处理、平滑处理,得到与背景完全分离的纱线分布信息;
(5)编程实现自动检测织物经、纬纱数目;
(6)横向织物根数采用和纵向相同方法计数。
设计流程图如下:
图2-1系统流程图
三、课程设计的步骤和结果
3.1图像的输入
图像输入设备是对模拟形式的图像进行数字化,从而产生计算机可用的离散图像数据的设备,常用的有平台式微密度计、扫描仪、数字照相机、数字摄像机等。
它们在输入速度、空间分辨率、信号幅值分辨率等方面各具特色。
或者采用直接打开现有图像进行处理,MATLAB程序如下:
[fname,pname]=uigetfile('
*.jpg'
'
请选择图片'
)%选择图片
rgb=imread(fname);
%读入图片
3.2图像的预处理
在对织物图像进行处理之前需要对图像进行一些预处理,主要包括图像旋转,灰度化,平滑处理和对比度增强。
3.2.1图像旋转
由于输入图像的位置不利于进行图像处理,因此对图像进行任意角度旋转,使织物纬线方向呈水平。
如图3.1。
实现语句如下:
p1=str2num(get(handles.xuanzhuandushu,'
string'
));
%输入角度
rgb2=imrotate(rgb,p1);
图3-1原始图像与旋转后图像
3.2.2灰度化
针织物的样片通常并不是单一的黑色或白色或灰色,而是各种颜色都有的,当光谱采样限制到三个波段,即对应于人类视觉系统敏感的红、绿、蓝光谱段时,称其为彩色图像,对于所摄入的针织物的图像其实就是彩色图像。
一般可以认为灰度图像是一个二维图像,图像上某点的坐标为(i,j),这一点的灰度值f(i,j)是(i,j)的函数;
对于彩色图像,可以将其看为令灰度值是两个空间变量和一个光谱变量的函数,将其直接推广到三维。
一个三维图像的生成不仅要在光学图像的两个空间坐标上采样,也要在每一点的光谱上采样。
处理此类图像的有关过程一般称为多光谱图像分析,多光谱分析中研究最多的集中于遥感领域。
这种方法数据处理较多,处理过程复杂。
本系统需要的信息根据图像明暗程度的变化就可以获得,所以在进行小波变换前将彩色图像转化为灰度图像,这样可以节省数据空间,加快处理速度。
处理后结果如图3.2。
其语法格式为:
I=rgb2gray(RGB)%其中RGB为原始图像的矩阵,I为灰度化后的矩阵
图3-2原始图像与灰度化图像对比
3.2.3平滑处理
扫描后的图像有噪音即对于图像有干扰作用的信息点,所以需要除去噪音使得图像更适合人的视觉特性或机器的识别系统。
同时在进行小波变换之前,对图像空间域进行增强处理,可以更容易地提取特征信息,本系统采用中值滤波去除噪声。
MATLAB图像处理工具箱中,使用medfilt2函数来进行中值滤波,选择默认的3x3邻域。
处理后结果如图3.3。
其语法格式为:
K=medfilt2(X,[5,5]);
%采用中值滤波对图像进行平滑
图3-3索引图像与平滑后图像对比
3.2.4对比度增强
图像增强的目的是提高图像的质量,使其更容易被视觉系统所接受,或者是为后续的图像处理任务(如图像分割等)提供一个较好的初始点。
为了使机织物的纹理更加突出,需要增强图像的对比度。
对比度增强是增强技术中一种比较简单但又十分重要的方法。
这种方法是按一定的规则逐点修改输入图像每一像素的灰度,从而改变图像灰度的动态范围。
直方图表明了图像中灰度值的分布情况,因此可以通过改变直方图的形状来达到增强图像对比度的效果。
常用的方法有直方图均衡化和直方图规定化两种。
本系统采用直方图均衡的方法增强图像的对比度。
处理后结果如图3.4。
J=histeq(M);
%采用直方图均衡的方法对图像进行对比度增强
图3-4平滑后图像与对比度增强后的图像对比
3.3小波变换
与Fourier变换相比,小波变换[3]是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题。
小波变换的基本原理是使用一族函数去表示或逼近一信号,这一族函数称为小波函数系。
连续小波是由一个原型小波基函数
作平移和尺度变换得到的,如果平移和尺度因子分别为a和b,则其定义为:
(3-1)
则对于任意的函数
的连续小波变换为:
(3-2)
将参数a与b离散化,令
,对应的离散小波函数表示为:
(3-3)
离散化小波变换系数为:
(3-4)
小波变换可实现二维图像的迅速分解,原图像经一层分解后,分别得到低频、垂直高频、水平高频和对角线高频分解图像,对低频图像又可再一次重复上述分解。
理论上讲,分解可以无限进行,实际分析的时候则应选择适当的标准进行合适的分解。
机织物图像中的经纱与纬纱的变化信息在某一层的高频垂直重构图和高频水平重构图中得到最佳保留。
在小波变换时,选择小波基要恰当,不同的小波基对应的分解分量清晰程度不同,小波分解的层次不同,清晰程度不同。
经实验证明,在经过3次分解和重构后,能使反应经纬方向的高频垂直重构图和高频水平重构图细节比较清晰,可以满足以后处理的需要。
处理后结果如图3.5。
[C,S]=wavedec2(J,3,'
bior5.5'
);
%图像的多尺度分解
cA1=appcoef2(C,S,'
1);
%提取分解后的近似和细节信息
cA2=appcoef2(C,S,'
2);
cA3=appcoef2(C,S,'
3);
[cH3,cV3,cD3]=detcoef2('
all'
C,S,3);
[cH2,cV2,cD2]=detcoef2('
C,S,2);
[cH1,cV1,cD1]=detcoef2('
C,S,1);
A1=wrcoef2('
a'
C,S,'
H1=wrcoef2('
h'
V1=wrcoef2('
v'
D1=wrcoef2('
d'
A2=wrcoef2('
H2=wrcoef2('
V2=wrcoef2('
D2=wrcoef2('
A3=wrcoef2('
H3=wrcoef2('
V3=wrcoef2('
D3=wrcoef2('
axes(handles.axes7);
image(wcodemat(H3,255));
title('
横向细节'
%显示水平信息
setappdata(gcbf,'
Data1'
H3);
%两个变量的参数传递
axes(handles.axes8);
image(wcodemat(V3,255));
纵列细节'
%显示垂直信息
Data2'
V3);
图3-5小波变换后图像的横向纵列信息
3.4特征提取
在对图像进行小波分解与重构后,垂直分量和水平分量重构后的图像即可反映纱线的排列,但还不是十分清晰,必须进行进一步的处理,使图像更清晰,就是进行二值化处理和平滑处理。
3.4.1图像二值化处理
二值化就是以黑白两色来表示灰度图像,图像的像素只能在0和1两个值中取。
本文采用误差扩散抖动法实现图像的二值化处理。
误差扩散抖动法[4]的原理是把灰度图像中的像素与预先规定的阈值进行比较,将它转换成0或1的单色像素,但该点的灰度值与0或1的灰度值存在着很大的误差,为了减轻误差的影响,再将误差按Burkers过滤器的误差分配表分配给相邻像素。
用误差扩散抖动法对重构后的垂直分量和水平分量进行二值化后得到的二值化图像与二值化前的灰度图像很接近。
[x,y]=size(V3);
%求出图像大小
T0=max(max(V3));
%求图中最大灰度
T1=min(min(V3));
%求图中最小灰度
T=(T0+T1)/2;
%求阈值
fori=1:
x%用误差扩算抖动法分配误差,及确定灰度值
forj=1:
y
if(V3(i,j))>
T
b=255-V3(i,j);
V3(i,j)=1;
elseb=0-V3(i,j);
V3(i,j)=0;
if(j<
=(y-1))
V3(i,j+1)=V3(i,j+1)+1/4*b;
end
=(y-2))
V3(i,j+2)=V3(i,j+2)+1/8*b;
if(i<
=(x-1)&
j>
=3)
V3(i+1,j-2)=V3(i+1,j-2)+1/16*b;
=2)
V3(i+1,j-1)=V3(i+1,j-1)+1/8*b;
=(x-1))
V3(i+1,j)=V3(i+1,j)+1/4*b;
j<
V3(i+1,j+1)=V3(i+1,j+1)+1/8*b;
V3(i+1,j+2)=V3(i+1,j+2)+1/16*b;
end
3.4.2平滑处理
为了更清楚地反映纱线的排列,需要进行平滑处理。
平滑处理的原理是以图像中处于多数的灰度值(0或1)代表这一行或列的具体形态(黑或白),使纱线平滑,以方便计算纱线数量。
BW1=V3(1:
x,1:
y);
[x1,y1]=size(BW1);
forj1=1:
y1
s1=0;
s2=0;
fori1=1:
x1
if(BW1(i1,j1)==0)
s1=s1+1;
else
s2=s2+1;
if(s1>
s2)
BW1(1:
x1,j1)=0;
x1,j1)=1;
axes(handles.axes9);
imshow(BW1(1:
x1,1:
y1));
平滑处理后的垂直细节信息'
Data3'
BW1);
H3=getappdata(gcbf,'
[x2,y2]=size(H3);
T2=max(max(H3));
T3=min(min(H3));
T4=(T2+T3)/2;
x2
y2
if(H3(i,j))>
b=255-H3(i,j);
H3(i,j)=1;
elseb=0-H3(i,j);
H3(i,j)=0;
=(y2-1))
H3(i,j+1)=H3(i,j+1)+1/4*b;
=(y2-2))
H3(i,j+2)=H3(i,j+2)+1/8*b;
=(x2-1)&
H3(i+1,j-2)=H3(i+1,j-2)+1/16*b;
=2)
H3(i+1,j-1)=H3(i+1,j-1)+1/8*b;
=(x2-1))
H3(i+1,j)=H3(i+1,j)+1/4*b;
=(y2-1))
H3(i+1,j+1)=H3(i+1,j+1)+1/8*b;
=(y2-2))
H3(i+1,j+2)=H3(i+1,j+2)+1/16*b;
BW2=H3(1:
x2,1:
y2);
[x3,y3]=size(BW2);
fori1=1:
x3
forj1=1:
y3
if(BW2(i1,j1)==0)
s2)
BW2(i1,1:
y1)=0;
y1)=1;
axes(handles.axes10);
imshow(BW2(1:
x3,1:
y3));
平滑处理后的水平细节信息'
3.5织物经纬密度的算法
平滑后的二值图像,经纬向就很明显,只要对平滑后的二值图像取一行(一列),计算其中连续黑色像素的个数累加和sxt,sxt除以图像宽度,即为每根纱线所含的黑色像素数sxmd。
如果扫描仪分辨率为p(ppi)/inch,sxmd×
p×
10/2.54即为机织物密度(根/10cm)。
如图3.6。
[x4,y4]=size(BW1);
sj=0;
forj4=1:
y4-1
if(BW1(10,j4)~=BW1(10,j4+1))
sj=sj+1;
elsesj=sj;
sxt=floor(sj/2)+1;
sxmd=sxt/x4;
%计算垂直方向织物密度(sxt除以除以图像宽度)
p=437;
%单位CM的像素数
W=sxmd*p*10/2.54;
%sxmd*p为织物密度(根/10in),再除以2.54,乘以10转换为标准密度单位(根/10cm)
n=floor(W);
m=W-n;
ifm>
0.5
m=0.75;
else
m=0.25;
W=n+m;
set(handles.edit2,'
W);
BW2=getappdata(gcbf,'
Data4'
[x4,y4]=size(BW2);
fori4=1:
x4-1
if(BW2(i4,10)~=BW2(i4+1,10))
sxmd=sxt/y4;
set(handles.edit3,'
图3-6特征提取后计算经纬密度
3.6GUI界面设计
3.6.1GUI界面简介
GUI是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。
GUI的广泛应用[6-7]是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。
人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。
而嵌入式GUI具有下面几个方面的基本要求:
轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
3.6.2GUI设计思路
在设计的这个名为“织物密度检测”的GUI界面时,使用了MATLAB提供的可视化的界面环境Guide。
相比较通过编写程序进行GUI的设计,可视化的界面环境更加方便快捷。
界面分为三个区域,一个为读取图像,一个为显示图像处理结果,另一个为计算织物经纬密度。
一个功能按钮对应一幅坐标轴,简洁明了。
最终设计的GUI界面如图3-7所示
图3-7织物密度检测GUI界面
通过加载程序,最终运行后界面如图3-8。
图3-8亚麻织物经纬密度检测
图3-9纱布织物经纬密度检测
表3-1不同织物的经纬密度
通过查阅相关织物密度资料,如图3.10,此系统计算出的经纬密度在实际数值范围内。
第二张纱布的密度明显大于第一张纱布密度,系统运算出第一张纱布的经密度为79.25根/10cm,纬密度为43.75根/10cm;
第二张纱布的经密度为120.25根/10cm,纬密度为118.25根/10cm,符合实际情况。
亚麻织物的经密度为99.75根/10cm,纬密度为159.75根/10cm,明显大于纱布的经纬密度,符合实际情况。
4.课程设计总结
本设计采用基于MATLAB语言的计算机数字图像处理技术,对织物的经纬密度的检测进行了研究探讨,通过实验及实验分析,得出织物的经纬密度的自动测试方法,测量精度较高,检测方便,工作效率高,完成了预期的任务。
这次课设是我第一次做数字图像的编程工作,对数字图像的结构,存储方式,识别都有了更深入的理解。
对课本上的RGB模型,二值化处理,模板处理,直方图均衡化等对图像的处理操作,有了