图像处理与分析课程报告Word格式.docx
- 文档编号:18022425
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:22
- 大小:2.10MB
图像处理与分析课程报告Word格式.docx
《图像处理与分析课程报告Word格式.docx》由会员分享,可在线阅读,更多相关《图像处理与分析课程报告Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
2.1、算法基本思想7
2.2、算法流程图8
3、算法主要代码分析9
3.1、图像求反9
3.2、增强对比度9
3.3、动态范围压缩9
3.4、灰度切分10
10
4.1、图像求反10
4.2、增强对比度11
4.3、动态范围压缩11
4.4、灰度切分12
三、图像的平滑与锐化12
1、需求分析12
2、程序设计12
2.1、主要算法基本思想12
2.2、流程图13
2.3、算法的详细说明13
3、主要的实现代码14
4、结果展示16
四、用户手册20
五、参考文献20
六、心得体会20
一、简单变换
基本几何变换的定义:
对于原图象f(x,y),坐标变换函数x’=a(x,y);
y’=b(x,y)
唯一确定了几何变换:
g(x’,y’)=f(a(x,y),b(x,y)),其中g(x,y)是目标图象。
图像的平移和放缩变换都是常见的图像坐标变换。
空间中一个点的坐标可记为(x,y,z),如用齐次坐标,则记为(x,y,z,1)。
他们也可以用矢量来表达。
2.1、算法基本思想
2.1.1、平移变换
设需要平移量(x0,y0)将具有坐标(x,y)的点平移到新的位置(x2,y2)
设:
a(x,y)=x+x0;
b(x,y)=y+y0;
用齐次矩阵表示:
a(x,y)10x0x
b(x,y)=01y0y
10011
2.1.2、放缩变换
放缩变换改变点间的距离,对物体来说则改变了物体的尺度,所以放缩变换也称为尺度变换,放缩变换一般是沿坐标方向进行的,或可分解为沿坐标轴方向进行的变换。
当分别用设:
a(x,y)=x*c;
b(x,y)=y*d;
沿x,y轴进行放缩变换时,放缩变换矩阵可写为:
a(x,y)c00x
b(x,y)=0d0y
2.2、算法流程图
3、算法主要代码分析
3.1、平移变换
//弹出对话框
Input_Movedlg;
dlg.DoModal();
UpdateData(true);
//将用户输入的数据进行平移变换
mdr->
write_video(image_wid+dlg.level,dlg.vertical,image_wid,image_hei,image);
swap();
3.2、放缩变换
SHRINKchange;
change.DoModal();
//对dx,dy进行放缩变换
intdx=image_wid*change.shrink,dy=image_hei*change.shrink;
UINT*buf;
if(image==NULL)return;
//创建动态数组
buf=newUINT[dx*dy];
//进行放缩变换
image_scale(image_wid,image_hei,image,dx,dy,buf);
//将图片读出
write_video(image_wid,0,dx,dy,buf);
4.1、平移变换
4.2、放缩变换
二、典型灰度映射
图像是由像素组成的,其视觉效果与每个像素的灰度相关。
如果能改变所有或部分像素的灰度,就可以改变图像的视觉效果。
直接灰度映射是一种点操作,即根据原始图像中每个像素的灰度值,按照某种映射规则,将其转化为另一灰度值。
这样通过对原始图像中每一个像素赋一个新的灰度值来达到增强图像的目的。
2.1.1、图像求反
对图像求反是将原图灰度值翻转,简单来说就是使黑变白,使白变黑。
将图像中每个像素的灰度值根据变换曲线进行映射。
映射是一一对应的,所以只要读出原灰度值,变换后得到新灰度值,并赋给原像素。
2.1.2、增强对比度
增强对比度实际上是增强原图的各部分反差。
实际中往往通过增加原图里某两个灰度值间的动态范围来实现,s1,s2,t1,t2可取不同的值进行组合,从而得到不同的效果,如果s1=s2,t1=0,t2=L-1,则增强图只剩下两个灰度级,对比度最大但细节全丢失。
2.1.3、动态范围压缩
该方法的目标与增强对比度相反。
有时原图的动态范围太大,超出了某些显示设备的允许动态范围,这时如直接使用原图,则一部分细节可能丢失。
解决办法就是对原图进行灰度压缩。
一种常用的压缩方法是借助对数形式t=Clog(1+|s|),其中C为尺度比例常数。
2.1.4、灰度切分
其目的与增强对比度相仿,是要将某个灰度值范围变得比较突出。
3.1、图像求反
for(inti=0;
i<
image_wid;
i++)
{
for(intj=0;
j<
image_hei;
j++)
{
buf[i*image_hei+j]=0xffffffff-new_buf[i*image_hei+j];
}
}
3.2、增强对比度
intB=(new_buf[i*image_hei+j]&
0x00ff0000)>
>
16;
if(B<
=s1)
{
B=(int)(k1*B);
//若B小于s1,则将B带入直线1中
}
elseif(B<
=s2)
B=(int)(k2*B+b2);
//若s1<
B<
=s2,则将B带入直线2中
else
B=(int)(k3*B+b3);
//若B>
s2,则将B带入直线3中
3.3、动态范围压缩
intB=(new_buf[i*image_wid+j]&
B=(int)(45.98*log(1+abs(B)));
buf[i*image_hei+j]=(0xff000000&
new_buf[i*image_hei+j])+(0x000000ff&
B)+(0x0000ff00&
(B<
<
8))+(0x00ff0000&
16));
3.4、灰度切分
//将RGB中的B取出
B=t1;
//若B小于s1,则将t1赋值
B=t2;
=s2,则将t2赋值
s2,则将t1赋值
4.1、图像求反
4.2、增强对比度
4.3、动态范围压缩
4.4、灰度切分
三、图像的平滑与锐化
1、需求分析
打开一幅位图,按照不同的模板将位图信息以平滑与锐化的方式处理,并显示出来。
2、程序设计
2.1、主要算法基本思想
平滑滤波能减弱或消除图像中的高频率分量,但不影响低频率分量,在实际应用中,平滑滤波还可用于消除噪声(噪声的空间相关性较弱,对应较高的空间频率),或在提取较大的目标前去除太小的细节或将目标内的小间断连接起来。
锐化滤波能减少或消除图像中的低频率分量,但不影响高频率分量。
锐化滤波将这些分量滤去可使图片反差增加,边缘明显。
实际中,锐化可用于增强被模糊的细节或目标的边缘。
首先需要将任意格式位图从外存中读入内存,将图片格式转换为8位位图,将其显示在屏幕上;
将内存中的图片与不同模板作卷积运算,将运算后的图片显示在屏幕上。
2.2、流程图
2.3、算法的详细说明
2.3.1、模板卷积
模板运算的基本思路是将赋予某个像素的值作为它本身灰度值和其相邻像素灰度值的函数。
模板可以看作一幅尺寸为N×
N(N一般为奇数,远小于常见图像尺寸)的小图像。
当N为奇数时,可以定义模板的半径r为(N-1)/2。
模板卷积在空域实现的主要步骤为:
a.将模板在图中漫游,并将模板中心与图中某个像素位置重合;
b.将模板上的各个系数与模板下各对应像素的灰度值相乘;
c.将所有乘积相加(为保持灰度范围,常对结果再除以模板的系数个
数);
d.将上述运算结果(模板的输出响应)赋予图中对应模板中心位置的
像素。
2.3.2模板介绍
1、平滑模板是各个系数相等,不妨设为一,设模板尺寸为M,M=2r+1,r为模板半径,这给定像素序列,i=1,2,,N,则均值滤波输出为:
式中M为模板系数个数,即对模板对应像素求平均值。
当模板尺寸增大时,对噪声的消除效果有所增强。
不过同时所得到的图像变得更模糊,可视的细节逐步减少。
2、中值滤波是一种非线性滤波方式。
设模板尺寸为M,M=2r+1,r为模板半径,这给定像素序列,i=1,2,,N,则中值滤波输出为:
式中median代表取中值,即对模板覆盖的信号序列按数值大小进行排序,并取排序后处在中间位置的值,且有1。
3、锐化是是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(highpassfilter)。
锐化处理在增强图象边缘的同时增加了图象的噪声。
常用的锐化模板是拉普拉斯(Laplacian)模板:
4、拉普拉斯模板的含义,先将自身与周围的8个像素相减,表示自身与周围像素的差别,再将这个差别加上自身作为新像素的灰度。
可见,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声。
3、主要的实现代码
(1)平滑3×
3模板的主要代码:
for(i=1;
image_hei-1;
for(j=1;
j<
image_wid-1;
temp=p[i*wi+j*4]+p[i*wi+j*4-4]+p[i*wi+j*4+4]
+p[i*wi+j*4-wi]+p[i*wi+j*4-wi-4]+p[i*wi+j*4-wi+4]
+p[i*wi+j*4+wi]+p[i*wi+j*4+wi-4]+p[i*wi+j*4+wi+4];
q[i*wi+j*4]=q[i*wi+j*4+1]=q[i*wi+j*4+2]=temp/9;
q[i*wi+j*4+3]=255;
(2)平滑5×
5模板的主要代码:
for(i=2;
image_hei-1;
for(j=2;
image_wid-1;
temp=p[i*wi+j*4]+p[i*wi+j*4-4]+p[i*wi+j*4-8]+p[i*wi+j*4+4]+p[i*wi+j*4+8]//3
+p[i*wi+j*4-wi]+p[i*wi+j*4-wi-4]+p[i*wi+j*4-wi-8]+p[i*wi+j*4-wi+4]+p[i*wi+j*4-wi+8]//2
+p[i*wi+j*4+wi]+p[i*wi+j*4+wi-4]+p[i*wi+j*4+wi-8]+p[i*wi+j*4+wi+4]+p[i*wi+j*4+wi+8]//4
+p[i*wi+j*4-wi*2]+p[i*wi+j*4-wi*2-4]+p[i*wi+j*4-wi*2-8]+p[i*wi+j*4-wi*2+4]+p[i*wi+j*4-wi*2+8]//1
+p[i*wi+j*4+wi*2]+p[i*wi+j*4+wi*2-4]+p[i*wi+j*4+wi*2-8]+p[i*wi+j*4+wi*2+4]+p[i*wi+j*4+wi*2+8];
//5
q[i*wi+j*4]=q[i*wi+j*4+1]=q[i*wi+j*4+2]=temp/25;
(3)中值滤波3×
3主要代码:
//模板内
temp[0]=p[i*wi+j*4];
temp[1]=p[i*wi+j*4-4];
temp[2]=p[i*wi+j*4+4];
temp[3]=p[i*wi+j*4-wi];
temp[4]=p[i*wi+j*4-wi-4];
temp[5]=p[i*wi+j*4-wi+4];
temp[6]=p[i*wi+j*4+wi];
temp[7]=p[i*wi+j*4+wi-4];
temp[8]=p[i*wi+j*4+wi+4];
q[i*wi+j*4]=q[i*wi+j*4+1]=q[i*wi+j*4+2]=Order_33(temp);
(3)中值滤波5×
5主要代码:
temp[2]=p[i*wi+j*4-8];
temp[3]=p[i*wi+j*4+4];
temp[4]=p[i*wi+j*4+8];
temp[5]=p[i*wi+j*4-wi];
temp[6]=p[i*wi+j*4-wi-4];
temp[7]=p[i*wi+j*4-wi-8];
temp[8]=p[i*wi+j*4-wi+4];
temp[9]=p[i*wi+j*4-wi+8];
temp[10]=p[i*wi+j*4+wi];
temp[11]=p[i*wi+j*4+wi-4];
temp[12]=p[i*wi+j*4+wi-8];
temp[13]=p[i*wi+j*4+wi+4];
temp[14]=p[i*wi+j*4+wi+8];
temp[15]=p[i*wi+j*4-wi*2];
temp[16]=p[i*wi+j*4-wi*2-4];
temp[17]=p[i*wi+j*4-wi*2-8];
temp[18]=p[i*wi+j*4-wi*2+4];
temp[19]=p[i*wi+j*4-wi*2+8];
temp[20]=p[i*wi+j*4+wi*2];
temp[21]=p[i*wi+j*4+wi*2-4];
temp[22]=p[i*wi+j*4+wi*2-8];
temp[23]=p[i*wi+j*4+wi*2+4];
temp[24]=p[i*wi+j*4+wi*2+8];
q[i*wi+j*4]=q[i*wi+j*4+1]=q[i*wi+j*4+2]=Order_55(temp);
(4)锐化拉普拉斯模板的主要代码:
temp=9*p[i*wi+j*4]-p[i*wi+j*4-4]-p[i*wi+j*4+4]
-p[i*wi+j*4-wi]-p[i*wi+j*4-wi-4]-p[i*wi+j*4-wi+4]
-p[i*wi+j*4+wi]-p[i*wi+j*4+wi-4]-p[i*wi+j*4+wi+4];
//拉普拉斯算子1
if(temp>
255)
temp=255;
if(temp<
0)
temp=0;
q[i*wi+j*4]=q[i*wi+j*4+1]=q[i*wi+j*4+2]=temp;
4、结果展示
3模板
5模板
3
(4)中值滤波5×
5
(5)锐化拉普拉斯模板1
(6)锐化拉普拉斯模板2
(7)用户自定义
四、用户手册
运行平台:
vs2015
载入条件:
此程序可载入灰白与彩色图片,但处理结果均为灰色图像
五、参考文献
图像工程(上册)--图像处理(第二版)章毓晋编著
计算机图形学课程代码
六、心得体会
首先,这次课程程序设计让我把本学期学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识;
再次,我在课程设计中碰到了很多的问题,通过查阅相关资料以及上网查询进行解决。
越来越多的人们开始依靠计算机来解决图像处理的问题,计算机可以达到不同的效果。
我所设计的对图像进行平移和放缩、对图片的灰度进行典型映射。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在计算机编程这方面有一个大的发展。
通过这次实验,我们对于图像的平滑与锐化也有了一定的掌握和了解。
对于不同的模板产生的不同的处理效果,有了一定的熟悉。
在编程过程中,经过多次的实践和理论上的推导不难发现图像平滑和图像锐化是两个完全对立的图像处理技术。
图像平滑让图像中的细节成分越来越少,而相对的,图像的锐化则是凸显图像的细节部分。
在图像平滑图像处理中,在很多噪声的情况下,图像平滑能够有效的减弱噪声对图像的影响,无论是高斯噪声、椒盐噪声还是乘性噪声,都能很好的在图像平滑中将这集中噪声很好的去除。
不能完全复原如原图一样的情况,但是在图像平滑过后,噪声在图像中的存在确实少了许多,但是对于一些本身比较清晰的图像,效果就不那么明显了。
图像平滑的弊端在于会把图像本身一些很好的细节部分给模糊掉,从而降低图像的质量,对一些分辨率很高细节很唯美的图像来说,图像平滑来处理噪声反而效果不是很好。
图像锐化则是让图像变得更为清晰。
通过图像锐化可以是图像细节部分遍的清楚起来,但是如果图像有噪声,只会让图像变得更加模糊,图像锐化不能对有噪声的图像进行处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 分析 课程 报告