图像处理课设Word文档下载推荐.docx
《图像处理课设Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图像处理课设Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。
翻转;
缩放;
旋转;
数学模型;
数字图象处理;
阈值分割;
区域分割
一、前言
图形图像处理的应用领域涉及人类生活和工作的各个方面,它是从60年代以来随计算机的技术和VLSI的发展而产生、发展和不断成熟起来的一个新技术领域,理论上和实际应用上都并取得了巨大的成就。
数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化,所以图形图像的处理在我们的生活中又很重要的作用。
在图形图像的软件开发中,我们可以采用MATLAB来开发相应的功能,由于其方便快捷的特点,给我们的开发工作提高了一个很好平台。
在图像分析中,通常需要将所关心的目标从图像中提取出来,这种从图像中将某个特定区域与其他部分进行分离并提取出来的处理,就是图像分割。
因为图像分析处理实际就是区分图像中的“前景目标”和“背景”,所以通常又称之为图像的二值化处理。
图像分割在图像分析、图像识别、图像检测等方面占有非常重要的地位。
二、算法分析与描述
2.1图像分割
1、基于阈值的图象分割
所谓阈值方法就是确定某个阈值Th,根据图像中每个像素的灰度值大于或小于该阈值Th,来进行图像分割。
阈值方法的数学模型如下:
设原图像为f(x,y),经过分割处理后的图像为g(x,y),g(x,y)为二值图像,则有
2、基于区域的图象分割
(1)区域生长法
图像分割的目的是要把一幅图像划分成一些区域,最直接的方法就是把点组成区域。
为此需要以下三个步骤:
确定区域的数目;
确定一个区域与其他区域相区别的特征;
产生有意义分割的相似性判据。
由此,假定已知要划分的区域数目以及每个区域内某一点的位置,就可以推导出图像分割的一种算法,即区域生长法。
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。
首先,对每个要分割的区域找一个种子点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域中。
将这些新像素当作新的种子点继续进行上面的过程,直到没有满足条件的像素点时停止生长。
其中相似性准则可以是灰度级、彩色、组织、梯度或其他特性。
相似性的测度可以由所确定的阈值来决定从上例可知,区域生长方法的实现有三个关键点:
①种子点的选取;
②生长准则的确定;
③区域生长停止的条件。
选取的种子点原则上是待提取区域的有代表性的点可是单个像素,也可是包括若干个像素的子区域。
生长准则原则上是评价与种子点相似程度的度量。
生长准则多采用与种子点的距离度量。
种子点可以随着区域的生长而变化,也可以设定为一个固定的数值。
区域生长的停止条件,对于渐变区域进行生长时的停止判断非常重要。
一般是结合生长准则来进行合理的设定。
判定生长停止的阈值可以是确定的值,也可是随生长而变化的值。
(2)区域合并、分裂方法
区域合并、分裂方法的核心思想是:
将图像分成若干的子块,对每个子块的属性进行计算,当属性表明该子块包含不同区域的像素,则该子块再分裂成若干子块。
如果几个子块的属性相似,则这几个相似属性的子块合并成一个大的区域。
根据这样的方法可以完成对图像的分割。
2.2图像几何变换
1、图像的翻转变换
图像的翻转是指以图像中的某一点为原点以逆时针或顺时针方向翻转一定的角度,其翻转公式如下:
x1=x0cosa+y0sina;
y1=-x0sina+y0cosa;
用矩阵表示为:
x1y11
=
x0y01
其中,(x1,y1)是原图像的像素点的坐标;
(x0,y0)是对应像素点经过翻转变换后的图像的像素点的坐标。
我们旋转所在的坐标系和图像显示时对应的Windows屏幕坐标系是不一样的,这里xoy为旋转坐标系,x'
o'
y'
为屏幕坐标系。
实际上我们可以分为三步进行整个旋转变换:
1.将坐标系x'
变成xoy;
2.将该点顺时针旋转a角;
3.将坐标系xoy变回x'
将上面三步变换进行合成得到三个矩阵的级联矩阵;
(x0,y0)和(x1,y1)都是x‘o’y‘坐标系中的点;
2、图像的平移变换
图像的平移变换就是将图像中的像素点按照要求的量进行垂直、水平移动。
图像的水平处理,只是改变了原有景物在画面上的位置,而图像的内容不发生变化。
初始坐标为(x0,y0)的点经过平移(tx,ty)(以向右,向下为正方向)后,坐标变为(x1,y1)。
这两点之间的关系是:
x1=x0+tx
y1=y0+ty
使用矩阵的形式来表达如下:
值得注意的是,一个数字图像(灰度图)是以一个矩阵来描述的,因此,如果不扩大存放处理后的矩阵的大小,则会出现图像的部分内容移出画面的情况。
3、图像的按比例变换
图像的按比例变换就是图像的放大或缩小,图像的缩小从物理意义上来说,是将描述图像的每个像素的物理尺寸缩小相应的倍数就可以完成。
如果像素的物理尺寸不允许改变,村数码技术的角度来肯,图像的缩小实际上就是通过减少像素的个数来实现的。
其变换公式如下:
x方向缩放d1倍,y方向缩放d2倍,则:
x'
=x×
d1
y'
=y×
d2
x0y01
x1y11
既然图像的缩小是通过减少像素个数来实现,那么,就需要根据所期望缩小的尺寸数据,从原图像中选择适合的像素点,使图像缩小之后可以尽量保持原有图像的概貌特征不丢失。
图像的放大,从物理意义上将是指图像缩小的逆操作。
但是从信息处理的角度来看,则含义完全不一样。
图像缩小时从大数据量到小数据量的处理过程,因此只需要从多个数据中,以适当方式选出所需要的信息就可以完成。
而图像放大则是小数据到大数据量的处理过程,因此需要对许多未知的数据进行估计。
三、详细设计过程
3.1图像分割详细说明
1、图像的分割处理
在图像的分割处理中所用到的MATLAB的其中一种函数代码为:
代码一:
A=imread('
c:
\test.bmp'
);
subplot(2,2,1)imshow(A);
m=size(A)A1=A(:
1:
m/2);
subplot(2,2,3)
imshow(A1)A2=A(:
m/2:
m);
subplot(2,2,4)imshow(A2)
另一种函数代码为:
代码二:
a=imread('
\mmm1.bmp'
a=rgb2gray(a);
[M,N]=size(a);
h=imhist(a);
%h中存放直方图数据fori=1:
256tab(i)=0;
end
p=0;
u=0;
p1=0;
u1=0;
fori=0:
255p=p+h(i+1);
u=u+h(i+1)*i;
forj=0:
255
jp1=p1+h(i+1);
u1=u1+h(i+1)*i;
p2=p-p1;
u2=u-u1;
if(p1)%计算一阶统计矩,公式2
u1=u1/p1;
else
endif(p2)u2=u2/p2;
u2=0;
endk1=0;
k2=0;
j
k1=k1+(i-u1)*(i-u1)*(i-u1)*h(i+1);
fori=j:
255k2=k2+(i-u2)*(i-u2)*(i-u2)*h(i+1);
if(p1)
k1=k1/p1;
%计算三阶矩,公式3else
k1=0;
endif(p2)
k2=k2/p2;
tab(j+1)=abs(k1)+abs(k2);
%得总偏态值,公式4
endMin=tab(127);
q=127;
if(tab(i+1)<
Min)Min=tab(i+1);
q=i;
endend
fori=1:
Mforj=1:
Nif(a(i,j)>
=q)a(i,j)=255;
elsea(i,j)=0;
endendend
imshow(a);
2、双峰法
输入灰度图像I,分割图像的归一化灰度值,值域为[0,1]
clc
clearall
I=imread('
\mmm.bmp'
figure,imshow(I);
level=graythresh(I);
%确定灰度阈值
newI=im2bw(I,level);
%根据这个灰度阈值将灰度图像转变成二直图像
figure,imshow(newI);
3.2图像几何变换详细说明
1、图像的平移处理
将原始图像向右平移60像素
S=translate(strel
(1),[060]);
%参数[060]可以修改,修改后平移距离对应改变
J=imdilate(I,S);
figure;
imshow(J,[]);
title('
右移后图形'
2、将原始图像向下平移60像素
S=translate(strel
(1),[600]);
%参数[600]可以修改,修改后平移距离对应改变
下移后图形'
3、图像的缩小处理
对原图像进行按比例缩小,缩小的倍数为0.5
E=imread('
J=imresize(E,0.5);
%缩小图像0.5倍
imshow(E)
4、图像的旋转处理
对图像进行逆时针旋转45度,采用近邻插值法来填充空穴
i=imread('
C:
j=imrotate(i,45,'
bilinear'
%旋转45度处理
imshow(i)
figure,imshow(j)
四、调试过程中出现的问题及相应解决办法
在代码二{a=imread('
255if(tab(i+1)<
endendendimshow(a);
}
中a=imread('
如果读入的是彩色图,需要用a=rgb2gray(a);
转换为灰度图结果我给漏了,再用MATLAB解决的时候出现错误,如截图所示。
后来等我查了好多书籍才发现以上代码处理的是灰度图而不是彩色图,我还查到了a=rgb2gray(a);
是用来吧彩色图转变为灰度图的,于是我在我的代码中加入了这句代码MATLAB就运行出了正确的结果。
5、程序运行截图及其说明
5.1图像分割运行结果及说明
1、图像的分割原图:
2、将原彩色图像转化为灰度图像:
3、用MATLAB处过的图片为:
4、输入灰度图像I,分割图像的归一化灰度值,值域为[0,1],对原图像作基于灰度的分割得到的图像:
5.2图像几何变换运行结果及说明
1、图像几何变换前的图像:
2、将原始图像向右平移60像素后的图像
3、将原始图像向下平移60像素后的图像:
4、在程序中执行图像缩放功能输入缩放参数为0.5后的图像:
5、在MATLAB中旋转45度的图像:
设计总结
在这两周的图形图像处理综合训练过程当中,我感触颇多,同时收获也很多。
在平常的课程学习过程当中,书上的知识感觉不是太难,只要自己认真听讲,下课后再仔细回顾回顾就能很快掌握,自以为什么都明白了,但在课设过程中却发现,要将知识实际运用起来却是十分困难的,所以在今后的学习过程中我一定要加强实际运用的能力训练,更好的将学来的知识转化到解决实际问题之中。
在这次计算机图像处理综合训练中,我对图形图像的处理有了更深的掌握,不但学会了处理过程,而且明白了其中的原理与算法,算法的好坏决定了一个软件处理的结果,所以在图形图像软件开发过程中我们一定要设计出一个好的算法,这样最终完成的软件就会有很好的市场潜力,在同类软件中脱颖而出。
总的来说,在这次综合训练当中,我在计算机图像处理方面取得了很大进步,为我在以后的学习中积累了宝贵经验。
参考资料
[1]朱虹.计算机图象处理基础[M].科学出版社,2005
[2]RC.Gonzalez,RE.Woods著,阮秋琦,阮宇智等译.计算机图象处理(第2版).北京:
电子工业出版社,2003
[3]K.R.Castleman.计算机图象处理.北京:
电子工业出版社,2002
[4]章毓晋.图像处理与分析-图像工程(上册),清华大学,2001
[5]何斌等编著.VisualC++计算机图象处理.人民邮电出版社,2002
[6]张宏林编著.VisualC++计算机图象模式识别技术及工程实践.人民邮电出版社,2003.
[7]黄维通.VisualC++面向对象与可视化程序设计.清华大学出版社,2003
[8]RC.Gonzalez,RE.Woods,SL.Eddins著,阮秋琦,阮宇智等译.计算机图象处理(MATLAB版).北京:
电子工业出版社,2005
致谢
首先我要感谢我的老师,在设计过程中给了我很多宝贵意见和丰富的资料并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
其次感谢我的同学,在设计中遇到问题时和我积极地讨论,并提出了很多建设性的意见,没有他们的帮助,只靠我自己一定很难完成这次任务。
在今后的学习和工作中,我一定要发扬团队精神,齐心协力完成相应的设计工作。
附录
%在图像的分割处理中所用到的MATLAB的其中一种函数代码为:
%代码一:
%另一种函数代码为:
%代码二:
\mmm.bm1p'
%在fenge.m中
%输入灰度图像I,分割图像的归一化灰度值,值域为[0,1]
%在youyi.m中将原始图像向右平移60像素
%在xiayi.中将原始图像向下平移60像素
%在suoxiao.m中图像的缩小处理
%在xuanzhuan.m中图像的旋转处理