- 10
- 0
- 约5.15千字
- 约 12页
- 2017-11-01 发布于湖北
- 举报
实验8 图像旋转和去高斯噪声
图像旋转与高斯白噪声
姓名:夏夏 班级:2010级信息与计算科学一班 学号:060210055
实验目的
掌握图像旋转、图像大小改变的原理。
利用“几何操作”剪切图像、改变图像大小、旋转图像。
了解改变图像大小的方法,包括不同的插值方式。
掌握两种方式下图像的旋转效果。
用3×3的模板处理加了高斯与椒盐噪声之后的图像,比较处理效果。
实验原理:
将一幅图像视为一个二维矩阵,用MATLAB进行图像处理。
利用MATLAB图像处理工具箱中的函数imread(读)、imshow(显示)、imresize(改变大小)、imrotate(旋转)对图像进行几何操作。
改变图像大小方法:以最近邻插值方法、双线性插值法、双三次插值法。分析不同的插值法对图像大小的影响。
图像旋转过程:为了观察图像旋转过程的效果,采用不同的方式旋转图像。
对图像旋转自己编程xuanzhuan()进行实现。
高斯白噪声与椒盐噪声处理图像比较。
实验步骤:
自己编程xuanzhuan()函数实现图像旋转
所说的图像旋转是保持目标区域大小不变化,则整幅图像变大;其实就是用旋转之后的图形覆盖目标区域的面积来确定旋转之后的图,但是由于旋转之后的图有时会有些像素不能被填充,所以会出现很多空点出没数据填充。旋转之中所用的公式:
或
几何运算一般定义为:
一个几何运算需要两个独立的算法。首先,需要一二算法来定义空间变换本身,用它描述每个像素如何从起初位置“移动”到终止位置,即每个像素的“运动”。同时,还需要一个用于灰度插值的算法。只因在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反之亦然。
imrotate库函数实现图像的旋转:
Matlab使用imrotate函数改变图像大小,其使用格式如下:
上式中X表示需要进行操作的图像,dag表示旋转的角度,这个角度以逆时针的方向计算,负值则表示顺时针方向的旋转,method参数表示选择何种插值方法,‘crop’参数表示将旋转以后的图像取与原图像大小相同的中心部分输出,和‘loose’参数。
改变图像大小:
Matlab使用imresize函数改变图像大小,其使用格式如下:
上式中X表示需要进行操作的图像,M是放大的倍数,method参数表示选择何种插值方法,包括neareat(最近邻插值方法)、bilinear(双线性插值法)bicubic(双三次插值法)。
imresize函数在缺省情况下使用的是最近邻插值方法。在这种算法的原理是每一个插值输出像素的值是在输入图像中与其最邻近的采样点的值,这种插值方法的运算量最小,适用于索引图像;而双线性插值的输出像素值是它在输入图像中2乘2领域采样点的平均值,它根据像素周围4个像素的灰度值在水平和垂直两个方向上对其进行插值;双三次插值使用三次插值函数,选择4乘4领域采样点,取得的效果较好,但相应的计算量也是前两种大。
高斯与椒盐噪声
高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从正态分布,而它的功率谱密度又是均匀分布的。
椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。
我们这里主要使用了几个和椒盐噪声一样的模板来去噪,前面的实验一详细介绍了这里就不介绍了。
实验过程:
自己编程实现图像旋转—xuanzhuan()
子函数
function z=xuanzhuan(c)
szg=imread(G:/专业课/数字图像处理/实验提交/图片/宋、彩.JPG);%读入原图
szg=rgb2gray(szg);%转化为灰度图
szg=imread(eight.tif);
subplot(2,2,1),imshow(szg);title(原图像);
[M,N,L]=size(szg);%M为行数,x方向,N为列数,y方向,L为维数
d=c*pi/180; %旋转的角度
backgray=0;%用作背景值的灰度值
a=cos(d);
b=sin(d);
prxmin=round(a-N*b);
prxmax=round(M*a-b);
prymin=round(a+b);
prymax=round(M*b+N*a);
nr=prxmax-prxmin+1;%行数,x
nc=prymax-prymin+1;%列数,y
primag(1:nr,1:nc,1:L)=backgray;
for i=1:M
for j=1:N
ii=round(i*a-j*b)-prxmin+1;
jj=round(i*b+j*a)-prymin+1;
for k=1:L
p
原创力文档

文档评论(0)