条纹图像的特征检测方法与程序设计.docx

上传人:b****6 文档编号:6290489 上传时间:2023-01-05 格式:DOCX 页数:9 大小:151.94KB
下载 相关 举报
条纹图像的特征检测方法与程序设计.docx_第1页
第1页 / 共9页
条纹图像的特征检测方法与程序设计.docx_第2页
第2页 / 共9页
条纹图像的特征检测方法与程序设计.docx_第3页
第3页 / 共9页
条纹图像的特征检测方法与程序设计.docx_第4页
第4页 / 共9页
条纹图像的特征检测方法与程序设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

条纹图像的特征检测方法与程序设计.docx

《条纹图像的特征检测方法与程序设计.docx》由会员分享,可在线阅读,更多相关《条纹图像的特征检测方法与程序设计.docx(9页珍藏版)》请在冰豆网上搜索。

条纹图像的特征检测方法与程序设计.docx

条纹图像的特征检测方法与程序设计

条纹图像的特征检测方法与程序设计

实验报告七

实验名称:

条纹图像的特征检测方法与程序设计

课程:

图像检测与处理

专业:

测控技术与仪器

实验日期:

2015年12月4日

1、实验目的

通过图像处理算法的设计和程序编写调试,掌握采用数字图像处理技术实现工业目标对象特征检测的基本方法和过程。

2、实验原理

在相对亮的背景下,对较暗的目标对象(线缆)进行检测,得到有一定对比度的数字图像。

首先,根据所采集的图像质量判断是否需要进行图像增强,根据图像增强原理分析和实验结果选用增强算法;为检测线缆的直径尺寸,方法之一是用行方向上线缆所覆盖的像素数来描述线径,为实现线缆覆盖像素数的度量,需要先将线缆目标从背景中分离出来,即进行二值化处理,选择二值化处理算法和门限值,对增强后的灰度图像进行二值化处理;然后,统计各个像素行线缆直径方向上所覆盖的像素数N,对各行覆盖像素数求平均

,作为检测结果值(单位:

像素)。

在检测系统的成像放大率不变的情况下,通过数字图像像素当量

(毫米/像素)的标定,即对每个像素代表的实物尺寸的测定,则可以得到线径的实际尺寸

:

3、实验指标及要求

自行设计图像处理程序和算法,实现给定条纹图像中的条纹中心线和条纹宽度的检测,并以像素为单位给出宽度检测结果。

4、实验设备

PC计算机,MATLAB程序开发软件,PHOTOSHOP图像处理软件,被处理的数字图像文件等。

5、实验及结果分析

(1)叙述实验设计过程中需要考虑的图像处理步骤;

解:

读取待处理图像;对图像进行中值滤波处理;采用最大类间方差法选取一个合理的二值化分割阈值;按照阈值进行二值化处理;闭运算处理;统计每一行含有目标对象的像素数目,并出其平均值,得到以像素为单位的条纹宽度检测结果;找到目标图像每一行的中心位置,将其连接起来,即得到了条纹中心线。

(2)简述在所设计的程序实现中所采用的图像处理算法及依据;

解:

中值滤波:

消除图像中含有的噪声点,对噪声信号进行了有效的抑制;

最大类间方差法:

方差是表征数据分布不均衡性的统计量,通过阈值对目标和背景进行了分割,通过循环使得两类数据间的方差越大越好,把该结果对应的阈值作为最佳阈值;

二值化处理:

通过二值化处理,使图像的像素只有0和1,便于后续的处理;

闭运算:

选取了一个结构元素,进行闭运算处理,目的是填充目标内小空洞、连接断开的近邻目标、平滑边界;

宽度检测:

统计每行含有目标对象的像素数目,并求出其平均值,即得到了以像素为单位的条纹宽度检测结果;

条纹中心线:

找到目标图像中每一行的中心位置,将其连接起来,即得到了条纹中心线。

(3)写出提取图像中条纹中心线检测的程序流程和程序代码;

解:

条纹中心线检测的程序代码:

%---Executesonbuttonpressinpushbutton5.

functionpushbutton5_Callback(hObject,eventdata,handles)

aa=handles.aa;

[m,n]=size(aa);

fori=1:

m%逐行扫描

z0=find(aa(i,:

)==0);

k=length(z0);

fz(i)=z0

(1);%找出目标对象每行的第一个元素的坐标

lz(i)=z0(k);%找出目标对象每行的最后一个元素的坐标

y=round((lz+fz)/2);%求每行第一个和最后一个元素坐标平均值,即得到每行的中心位置

end

x=1:

m;

plot(y,x,'r','LineWidth',1)%画出中心线

axes(handles.axes3);

图1:

条纹中心线检测的程序流程图图2:

条纹宽度的程序流程图

(4)写出检测图像中条纹宽度的程序流程和程序代码;

解:

条纹宽度的程序代码

%---Executesonbuttonpressinpushbutton4.

functionpushbutton4_Callback(hObject,eventdata,handles)

aa=handles.aa;

one_count=sum(aa,2);%统计图像背景中每行所包含的像素数目

zero_count=size(aa,2)-one_count;%计算统计出目标图像中每行所包含的像素数目

handles.zero=zero_count;

dia=mean(zero_count);%计算像素平均值,得到以像素为单位的条纹宽度检测结果

dstr=['检测结果:

'num2str(dia)'pixels'];%将检测结果在GUI中显示出来

set(handles.text3,'String',dstr);

guidata(hObject,handles);

(5)给出以像素为单位的条纹宽度检测结果,用不同的颜色标记出条纹中心线。

(见图3)

图3:

检测结果及中心线

6、实验总结与体会

(1)分析总结实现工业目标对象特征检测的基本图像处理环节;

解:

首先,读取观察图像,判断图像的质量;然后,在对图像滤波处理和图像增强,使图像噪声得到抑制,对比度增强;选取合适的方法,进行二值化处理;去除伪目标,通过贴标签的方法区分不同的目标对象;最后,对目标对象进行检测处理,获取我们想要的特征。

(2)分析并提出提高条纹宽度检测精度的方法(至少一种方法);

解:

①图像进行锐化处理,使目标图像的边界信息突出,避免其在滤波时损失部分信息

②采用区域提取的方法,将研究的目标图像从图像中分割出来,进行宽度检测,这样就会避免对不是目标对象的像素点进行统计了,提高了检测的精度。

(3)分析并绘出工业图像检测应用系统的基本组成系统框图。

(见图4)

图4:

工业图像检测应用系统基本组成

7、参考文献

[1]章毓晋编著.图象分析与处理.北京:

清华大学出版社,1999年

[2]何锦平.基于小波分辨的图像增强及其应用研究[D].西北工业大学硕士学位论文,2003.4

[3]孔祥刚,诸静.基于PCI总线和DSP芯片的图像处理平台的硬件设计[J].电子技术应用,2003(12):

70~73

[4]孙小鹏,孔玲君.基于图像处理的数字印刷线条质量检测方法研究[J].包装工程,2013年7期

[5]闫敬文,《数字图像处理MATLAB版》,国防工业出版社,2007.2

8、程序代码及程序流程图

functionvarargout=exp5(varargin)

gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,...

'gui_Singleton',gui_Singleton,...

'gui_OpeningFcn',@exp5_OpeningFcn,...

'gui_OutputFcn',@exp5_OutputFcn,...

'gui_LayoutFcn',[],...

'gui_Callback',[]);

ifnargin&&ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

});

end

functionexp5_OpeningFcn(hObject,eventdata,handles,varargin)

handles.output=hObject;

guidata(hObject,handles);

functionvarargout=exp5_OutputFcn(hObject,eventdata,handles)

varargout{1}=handles.output;

%---Executesonbuttonpressinpushbutton1.

functionpushbutton1_Callback(hObject,eventdata,handles)

a=imread('line2.bmp');

axes(handles.axes1);

imshow(a);

handles.a=a;

guidata(hObject,handles);

%---Executesonbuttonpressinpushbutton2.

functionpushbutton2_Callback(hObject,eventdata,handles)

a=handles.a;

a=a(:

:

1);

J=medfilt2(a);

axes(handles.axes2);

imshow(J);

handles.J=J;

guidata(hObject,handles);

%---Executesonbuttonpressinpushbutton3.

functionpushbutton3_Callback(hObject,eventdata,handles)

J=handles.J;

bw=im2bw(J,graythresh(J));

bw=bwareaopen(bw,100);

axes(handles.axes3);

imshow(bw);

se=strel('square',10);

aa=imclose(bw,se);

imshow(aa);

holdon

handles.aa=aa;

guidata(hObject,handles);

%---Executesonbuttonpressinpushbutton4.

functionpushbutton4_Callback(hObject,eventdata,handles)

aa=handles.aa;

one_count=sum(aa,2);

zero_count=size(aa,2)-one_count;

handles.zero=zero_count;

dia=mean(zero_count);

dstr=['检测结果:

'num2str(dia)'pixels'];

set(handles.text3,'String',dstr);

guidata(hObject,handles);

%---Executesonbuttonpressinpushbutton5.

functionpushbutton5_Callback(hObject,eventdata,handles)

aa=handles.aa;

[m,n]=size(aa);

fori=1:

m

z0=find(aa(i,:

)==0);

k=length(z0);

fz(i)=z0

(1);

lz(i)=z0(k);

y=round((lz+fz)/2);

end

x=1:

m;

plot(y,x,'r','LineWidth',1)

axes(handles.axes3);

%---Executesonbuttonpressinpushbutton6.

functionpushbutton6_Callback(hObject,eventdata,handles)

close;

图5:

程序流程图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1