彩色图像的边缘检测Word格式.docx
- 文档编号:21447768
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:12
- 大小:988.20KB
彩色图像的边缘检测Word格式.docx
《彩色图像的边缘检测Word格式.docx》由会员分享,可在线阅读,更多相关《彩色图像的边缘检测Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
一是对原有算法的不断改进,而是新方法、新概念的引入和多种方法的有效综合运用。
人们逐渐意识到现有的任何一种单独的边缘检测算法都难以得到令人满意的边缘图像,因而很多人在把新方法和新概念不断的引入边缘检测领域的同时,也更加重视把各种方法综合起来运用。
在新出现的检测方法中,基于小波变换的边缘检测方法就是一种很好的方法。
三是交互式检测研究的深入。
四是对特殊图像边缘检测的研究越来越得到重视。
五是对图像边缘检测评价的研究和对评价系数的研究越来越得到关注。
相信随着研究的不断深入,存在的问题会很快得到圆满的解决。
1.2课题研究目的和意义
彩色图像比灰度图像多了颜色信息。
在实际生活中,当寻找物体、人、纹理或者边缘等时,一般情况下,第一点就是理解图像的内容,在此过程中往往忽略图像的颜色,这也是当前大部分计算机视觉应用仅仅基于亮度的原因。
那么,彩色图像中的颜色信息到底有什么用处?
其实现实生活中很多例子都可以证明颜色信息的重要性,比如色盲无法正确的区分某些颜色物体,如果失去了颜色信息,交通灯也就无法发生任何作用,人们也就有可能把物体的影子当成实际存在的物体等。
其实在一个有颜色的世界中,颜色提供了远比亮度更为丰富的信息,就本文而言,颜色扮演了一个非常重要的角色。
主要体现在如下三个方面:
1.与灰度边缘检测算法相比,彩色图像边缘检测算法能够提供更多的边缘信息。
特别是对于有些物体边缘,亮度相同而颜色不同,用传统的灰色图像边缘检测算法将失去作用,见图1.1,其中1.1(a)的square原图是亮度相同而颜色不同的正方格形图案,1.1(b)为彩色Canny边缘检测结果,1.1(c)为灰度Canny边缘检测结果,由检测结果可以看到,彩色边缘检测法能检测到灰度图像不能检测到的边缘。
研究发现,灰度边缘检测算法能得到90%的彩色图像边缘信息,但仍然剩下10%的边缘信息需要利用颜色信息才能得到。
因此非常有必要寻找更加有效的边缘检测算法以提高质量的边缘信息。
2.能够利用彩色图像中的颜色信息区分各种不同类型的边缘,而在灰度图像中,基本不可能完成此区分任务,这也是彩色图像相对于灰度图像的一大优势。
各种不同类型的边缘如图1.2所示。
在计算机视觉等应用中,必须区分这些边缘。
比如在立体视觉中,只需要对物体边缘、反射物边缘和照边度边缘进行匹配即可。
在物体检测中,只需要知道物体边缘和遮挡边缘即可。
3.边缘检测和分类最好能够模拟人类视觉处理机制,这样则可得到最好的结果。
而人类视觉倾向于用色调、饱和度(颜色信息)和亮度共同描述彩色物体,所以颜色信息不可或缺,
在实际生活中,从颜色图像的输入(如CCD),颜色图像的显示(如显示器)到颜色图像的输出(如颜色打印机)等,彩色图像都得到了最普遍的应用,所以针对彩色图像进行相关研究也就更有实际意义。
在实际生活中,从颜色图像的输入(如CCD)颜色的显示(如显示器)到颜色图像的输出(如颜色打印机)等,彩色图像都得到了最普通的应用,所以针对彩色图像进行相关研究也就更有意义。
实际中的图像远比图1.1所示的图像复杂,如图1.3所示,该图像包括了阴影区、高亮区和各种颜色值区域。
图1.3(c)为经典的边缘检测算法的检测结果,经典算法结果包括了各种不同类型的边缘,如物体边缘、阴影边缘、高亮边缘和材料边缘等,算法得到的边缘远多于人类视觉的分割结果,见图1.3(b)。
由图可以看到,人类视觉能够有选择的丢弃干扰物体识别的边缘,如阴影边缘和高亮边缘等。
本文的目标就是尝试使用计算机视觉处理达到或趋近于人类视觉的分割结果。
该目标要求处理过程中不仅要能正确的检测边缘,还要求能正确的区分各种不同类型的边缘。
第二章彩色图像边缘检测
彩色图像边缘检测算法基本都是基于边缘模型的算法。
可分为输出融合法、多为梯度法和向量方法三类。
本文主要介绍简单的灰度转换法和输出融合法。
2.1设计思想
首先设计一个界面,其功能为:
将目标图像的途径输入空白框,然后点击相关按钮,完成边缘检测的面目的。
在运用灰度转换法时,先点击“灰度转换”按钮,再用相关算子进行边缘检测;
在运用输出融合法时依次点击相关算子按钮,则界面输出对应的处理后的图像。
界面如图2-1所示。
界面源程序见附录。
2.2灰度转换法
研究发现,灰度边缘检测算法能得到90%的彩色图像边缘信息,而且基于灰度图像的边缘检测方法早已成熟,所以对于信息含量较少的彩色图像可以先将图像转换为灰度图像,然后再运用灰度图像的边缘检测手段进行边缘检测。
可以运用matlab按如下程序实现:
A=imread(’1.bmp’);
A=rgb2gray(A);
subplot(2,2,1),imshow(A);
title('
灰度图像'
)
%将彩色图像转换为灰度图像
b=edge(A,'
roberts'
0.02);
%设阀值为0.02
subplot(2,2,1),imshow(b);
title('
roberts算子'
%对转换后的灰度图像进行边缘检测
运行结果如下图所示:
原图
Sobel算子勾边
2.3输出融合方法
在彩色图像边缘检测算法中,最早出现的就是融合方法。
由于灰度图像边缘算法的相对成熟,把灰度图像边缘检测算法扩展到彩色图像中就变成一个很自然的过程。
在输出融合方法中,灰度图像边缘检测算法分别应用于彩色图像的各个颜色分量中,然后对各个分量的结果进行合并,从而得到最后的边缘。
如对一个RGB彩色图像来说,输出融合方法原理框图如图2.1所示:
这里梯度和边缘的计算就可以应用所有灰度图像边缘检测算子和算法,如经典的Sobel、Canny、LOG等算子,多尺度的小波边缘检测算法等。
最后的输出边缘,主要是对各个分量的一个加权合成输出。
Nevatiat提出了最早的输出融合方法,该算法把Hueckel算子用在了亮度分量和两个色度分量上。
而之后的输出融合方法大同小异,基本都是对灰度图像边缘检测、颜色空间和各分量权重进行重新选择和组合而已。
在输出融合方法中,首先存在一个边缘“不适定”的问题,即到目前为止对边缘仍然没有一个较好的定义,主流的定义方法有两种。
一种是亮度部分由边缘即为彩色图像的边缘,这种定义忽略了色度和饱和度可能的不连续性,造成边缘检测的偏差,并且根据Novak和Shafer的研究得出灰度边缘检测算法能得到90%的彩色图像边缘信息,而仍然剩下10%的边缘信息无法检测到,需要利用颜色信息才能得到。
第二种定于只要任何一个颜色分量有边缘即为图像边缘,这种定义会造成边缘检测的不准确。
这两种定于的检测结果依赖于所使用的颜色空间,都忽略了颜色分量之间的相关关系,容易丢失边缘,所以难以获得好的结果。
在输出任何方法中选择经典的Sobel、Canny和多尺度的小波(Wavelet)做性能对比试验如图2.2所示,图2.2(e)~(h)为添加2%椒盐噪声的原图和检测结果图。
Sobel和Canny各分量的边缘检测使用matlab库函数的edge函数,各参数值均为edge函数的默认参数值,本文Wavelet则采用效果较好的B样条函数的一阶导数模拟小波函数而得。
边缘定义为只要在其中的某一个颜色分量上存在边缘,则为彩色图像边缘。
由图2.2(b)可以看到,Sobel算子丢失了更多的边缘。
Canny算子是灰度图像边缘检测中事实上的标准,在灰度图像中可以较准确的检测边缘,特别的能对细节边缘进行很好的检测,但是由于在彩色图像中对边缘的“不适定”问题,在检测结果中出现了明显的错误边缘,在没有边缘的地方产生了边缘,如图2.2(c)所示,Wavelet的主要优势是可以通过尺度变化检测在不同尺度下的边缘,大尺度检测轮廓边缘,小尺度检测细节边缘,所以相比于其它空间域算法,可以得到更好的检测结果,如图2.2(d)所示。
在抗噪声性能方面,Sobel、Canny、Wavelet都对噪声敏感,如图2.2(f)~(h)所示。
在这里需要说明的是由于这三种算法都是基于梯度的最大值求取检测边缘,所以对各分量都需要一个阈值(设为T)。
但是由于Sobel和Canny算法都直接应用了edge函数的默认参数设置,所以没有标出阈值。
Wavelet对各分量都直接取梯度的均值作为T,但由于三个分量各有一个阈值T,所以在图2.2(h)中也没有标出阈值。
运用matlab运行下面的程序,可以直接检测彩色图像边缘。
源程序如下:
R=double(A(:
:
1));
G=double(A(:
2));
B=double(A(:
3));
h1=[-1-2-1;
000;
121];
Rx=conv2(R,h1);
Gx=conv2(G,h1);
Bx=conv2(B,h1);
rgbx=cat(3,Rx,Gx,Bx);
subplot(2,2,1),imshow(rgbx,[]);
图像运行结果如下图所示:
第三章课设心得
通过这次的课程设计,我受益匪浅,不仅对图像处理这门课程有更深入的掌握,还学到其他方面的知识,同时也摆脱枯燥的理论学习,从中体会到这门课程的乐趣。
在准备课程设计的过程中,遇到许多的困难,但从不感到灰心,因为在做的过程中,同学们都是在一起相互讨论,遇到困难就找同法学,在这种集体的学习氛围下,之感受到学习带来的快乐。
通过此次的设计,体会到只有通过实践,才知道他魅力所在,才能更加深入的掌握,同时也在培养自己独立思考和解决问题的能力,也增强锻炼动手、实践能力。
通过这段时间的课程设计,同时也使我懂得了理论与实际结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己对理论知识的熟练掌握和运用。
在设计的过程中也遇到了很多问题。
才发现原来自己有如此多的不足之处,对以前学过的知识理解的不够深刻,也掌握的不过牢固。
在做课程设计的过程中,对书本上的理论知识有了进一步的理解,对于一些似懂非懂的部分,通过再一次看书,编写程序,调试结果,并对结果进行分析,也理解了。
但是,感觉自己对于理论的实际运用还是比较欠缺。
同时知道了学习知识的方法,学习理论不是一味的看书,理论应该建立在实践的基础上,通过编写程序去实现某个功能,对相应知识有了更进一步的了解,有助于理论的学习。
通过做这次课程设计,对MATLAB有了初步了解,知道了MATLAB的一些用途,老师在课堂是也讲了一些简单的MATLAB的用法,但是在做设计的过程中才知道那些远远不过,所以又花了很多时间去找那些函数怎么用,但有许多细节如一些语句等,由于时间关系还是不太明白,需要今后加以学习。
在做课程设计过程中,发现什么事不能等别人,自己需要尽自己的努力去做,又不明白的地方要及时去问,还有学会利用身边各种资源比如图书馆,网络等,什么事情没有亲自去做,不要妄下结论,不要认为自己不行,只有做了才知道其实一些事只要自己认真做了事可以办的。
同时课程设计培养了我独自处理问题的能力以及做事的态度。
俗话说:
态度决定一切。
只有有端正的态度,才能尽心的去做。
才有可能成功。
这次课程设计终于顺利完成,在设计中遇到的运行和调试问题,最后在老师的耐心指导下,终于迎刃而解。
在以后的学习过程中我要不断学习,不断丰富自己的知识。
这次课程设计的顺利完成,让我明白我自己的不足。
在以后的学习过程中我会更加的努力,不断丰富自己的知识。
附录:
functionvarargout=MY2(varargin)
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@MY2_OpeningFcn,...
gui_OutputFcn'
@MY2_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{:
functionMY2_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=MY2_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionpushbutton4_Callback(hObject,eventdata,handles)
[fname,pname]=uigetfile;
globala;
a=imread(fname);
subplot(2,2,1),imshow(a);
原图'
functionpushbutton5_Callback(hObject,eventdata,handles)
A=a;
functionedit1_Callback(hObject,eventdata,handles)
functionedit1_CreateFcn(hObject,eventdata,handles)
ifispc&
isequal(get(hObject,'
BackgroundColor'
),
get(0,'
defaultUicontrolBackgroundColor'
))
set(hObject,'
'
white'
);
functionedit2_Callback(hObject,eventdata,handles)
functionedit2_CreateFcn(hObject,eventdata,handles)
),
get(0,'
functionpushbutton1_Callback(hObject,eventdata,handles)
F=str2double(get(handles.edit1,'
string'
));
F);
functionpushbutton2_Callback(hObject,eventdata,handles)
A=a;
prewitt'
prewitt算子'
functionpushbutton3_Callback(hObject,eventdata,handles)
sobel'
sobel算子'
functionpushbutton6_Callback(hObject,eventdata,handles)
functionpushbutton7_Callback(hObject,eventdata,handles)
h1=[-10-1;
-20-2;
-10-1];
functionpushbutton8_Callback(hObject,eventdata,handles)
h1=[111;
1-81;
111];
J=cat(3,Rx,Gx,Bx);
subplot(2,2,1),imshow(J,[]);
参考文献
1、数字图像处理学电子工业出版社贾永红2003
2、数字图像处理(Matlab版)电子工业出版社冈萨雷斯2006
3、其他数字图像处理和Matlab编程方面的书籍及相关学习资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 彩色 图像 边缘 检测