西安交通大学数字图像处理第二次作业.docx
《西安交通大学数字图像处理第二次作业.docx》由会员分享,可在线阅读,更多相关《西安交通大学数字图像处理第二次作业.docx(25页珍藏版)》请在冰豆网上搜索。
西安交通大学数字图像处理第二次作业
西安交通大学数字图像处理第二次作业(总18页)
数字图像处理的基本数学工具的使用
摘要
本报告主要介绍了运用编程软件MATLAB对图像灰度级进行变换、求取图像均值与方差、采用不同的内插方法对图像进行缩放及利用仿射变换对图像进行空间变换处理的方法。
同时,对最近邻内插法、双线性内插法、双三次内插法进行图像处理的效果进行了详细的对比,并对出现差异的原因做出了简要分析。
姓名:
XXX
班级:
学号:
提交日期:
年月日
2_1.把lena512*512图像灰度级逐级递减8-1显示;
(1)问题分析:
所要实现的功能是:
在不改变图像大小的前提下,使得整幅图像的灰度级逐级递减并将图像显示出来;即对所有像素点的灰度依次进行除2操作;
(2)实验过程:
工具:
MATLAB软件;
利用imread()函数将图像读入MATLAB,利用imshow()对原图像进行显示,再利用循环体对整幅图像的灰度级逐级递减并一一进行显示。
源代码附于本报告最后一部分。
(3)实验结果:
备注:
在大小为512X512的途中观察更为方便,但此处为了便于排版以及将结果进行对比对所有图像做了一定的缩小。
ab
cd
ef
gh
图2_1(a)大小为512X512的256灰度级图像;(b)~(h)保持图像大小不变的同
时以灰度级128,62,32,16,8,4,2显示的图像。
(4)结果分析:
对图2_1中的(a)~(h)图像进行对比可知,256级、128级、64级以及32级灰度的图像几乎没有太大的区别;然而在灰度级为16的图(e)中出现了较为明显的伪轮廓,这种效果是由数字图像的平滑区域中的灰度级数不足引起的。
(说明:
此分析为本人肉眼的观察结果,对细节的观察难免存在疏漏之处,还请批评指正。
)
2_2.计算lena图像的均值方差;
(1)问题分析:
所要实现的功能是:
计算图像‘’的均值与方差;
(2)实验过程:
工具:
MATLAB软件;
利用imread()函数将图像读入MATLAB,由于二维数字图像使用二维阵列表示的,因而可以直接利用MATLAB中的mean2()及std2()分别求整幅图像的均值于方差;
源代码附于本报告最后一部分。
(3)实验结果:
均值m=方差=。
2_3.把lena图像用近邻、双线性和双三次插值法zoom到2048*2048;
(1)问题分析:
分别用三种内插方法将图像‘’由512X512放大到2048X2048;
(2)实验过程:
工具:
MATLAB软件;
函数B=imresize(A,[numrows,numcols],’method’)功能说明:
‘method’指所采用的内插方法,一般默认为’nearest’(最近邻内插法),还可指定为’bilinear’(双线性内插法)、’bicubic’(双三次内插法);
A指原图像;
numrows用于指定变换后的图像的行数,numcols用于指定变换后的图像的列数;
源代码附于本报告最后一部分。
(3)实验结果:
图2_31(a)大小为512*512的原图像;(b)~(d)分别为采用最近邻、双线性、
双三次内插法进行内插后得到的大小为2048*2048的图像
(4)结果分析:
abcd
图2_32(a)~(d)分别为图2_31中(a)~(d)的部分截取
将图2_32中的(a)~(d)进行对比可知:
原图像与经过最近邻内插所得的图像的肩膀以及脸颊部分的曲线呈现锯齿状;采用双线性内插法所得的图像的肩膀以及脸颊部分的曲线则比较平滑,基本没有锯齿出现;而采用双三次内插法所得的图像的曲线均非常平滑。
原因分析:
最近邻内插法把原图像中最近邻的灰度赋给了每个新位置,这种方法简单,但有产生不希望的人为缺陷的倾向;双线性内插法用4个最近邻去估计给定位置的灰度,通常所给出的内插效果会比最近邻法好,但计算量也相对有所增加;双三次内插法用16个最近邻点的灰度去估计给定位置的灰度,因而在保持细节方面比双线性内插法要好。
2_4.把lena和elain图像分别进行水平shear(参数可设置为,或者自行选择)和旋转30度,并采用用近邻、双线性和双三次插值法zoom到2048*2048;
(1)问题分析:
先将lena和elain分别进行水平偏移变换、旋转变换,再讲变换后的图像利用最近邻内插法、双线性内插法、双三次内插法缩放为大小为2048*2048的图像,并进行显示。
(2)实现过程:
先读入图像I=imread(),再根据需要输入矩阵T=[],再创建仿射矩阵tform=maketform(‘affine’,T);,其次进行空间变换II=imtrasform(I,tform);,最后再进行内插并进行图像显示;
源代码附于本报告最后一部分。
(3)实验结果:
ab
cd
图2_4_1(a)512*512的lena原图像;(b)将图(a)进行水平偏移变换()并采用最近邻内插法zoom到2048*2048后的图像;(c)将图(a)进行水平偏移变换()并采用双线性内插法zoom到2048*2048后的图像;(d)将图(a)进行水平偏移变换()并采用双三次内插法zoom到2048*2048后的图像。
ab
cd
图2_4_2(a)512*512的elain1原图像;(b)将图(a)进行水平偏移变换()并采用最近邻内插法zoom到2048*2048后的图像;(c)将图(a)进行水平偏移变换()并采用双线性内插法zoom到2048*2048后的图像;(d)将图(a)进行水平偏移变换()并采用双三次内插法zoom到2048*2048后的图像。
ab
cd
图2_4_3(a)512*512的lena原图像;(b)将图(a)进行旋转变换()并采用最近邻内插法zoom到2048*2048后的图像;(c)将图(a)进行旋转变换()并采用双线性内插法zoom到2048*2048后的图像;(d)将图(a)进行旋转变换()并采用双三次内插法zoom到2048*2048后的图像。
ab
cd
图2_4_4(a)512*512的elain原图像;(b)将图(a)进行旋转变换()并采用最近邻内插法zoom到2048*2048后的图像;(c)将图(a)进行旋转变换()并采用双线性内插法zoom到2048*2048后的图像;(d)将图(a)进行旋转变换()并采用双三次内插法zoom到2048*2048后的图像。
(4)结果分析:
将图2_4_4中的图(b)、(c)、(d)中的局部进行放大得到图2_4_5(a)~(c);
将图2_4_5(a)~(c)进行对比可得:
最近邻内插产生了最大的锯齿边缘,双线性内插得到了极大地改善,双三次内插产生了稍微清晰一些的结果;且图2_4_5(c)中的垂直灰度块数量要比图2_4_5(d)的相应垂直灰度块数量多,这说明图像的边缘更加清晰。
ab
c
图2_4_5(a)图2_4_4(a)的局部边缘放大图;(b)图2_4_4(b)的局部边缘放大图;
(c)图2_4_4(c)的局部边缘放大图。
参考文献:
XX百科、维基百科
v源代码:
2_1:
closeall;clearall;clc;
I=imread('');%导入图像“”
figure
(1)
imshow(I);
title('imageof8bits');%显示k=8的原图像
[x,y]=size(I);%读取图像“”的长宽
img7=zeros(x,y);%产生一个名为img7的512X512的0矩阵
img6=zeros(x,y);
img5=zeros(x,y);
img4=zeros(x,y);
img3=zeros(x,y);
img2=zeros(x,y);
img1=zeros(x,y);
fori=1:
x
forj=1:
y
img7(i,j)=floor(I(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure
(2)
imshow((img7),[0,127]);
title('imageof7bits');
fori=1:
x
forj=1:
y
img6(i,j)=floor(img7(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(3)
imshow((img6),[0,63]);
title('imageof6bits');
fori=1:
x
forj=1:
y
img5(i,j)=floor(img6(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(4)
imshow((img5),[0,31]);
title('imageof5bits');
fori=1:
x
forj=1:
y
img4(i,j)=floor(img5(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(5)
imshow((img4),[0,15]);
title('imageof4bits');
fori=1:
x
forj=1:
y
img3(i,j)=floor(img4(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(6)
imshow((img3),[0,7]);
title('imageof3bits');
fori=1:
x
forj=1:
y
img2(i,j)=floor(img3(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(7)
imshow((img2),[0,3]);
title('imageof2bits');
fori=1:
x
forj=1:
y
img1(i,j)=floor(img2(i,j)/2);%将原图像的每个像素的灰度级除以2,并用函数floor进行下取整
end
end
figure(8)
imshow((img1),[0,1]);
title('imageof1bits')
2_2:
closeall;clearall;clc;
I=imread('');
m=mean2(I)
d2=std2(I)
2_3:
法
(1):
采用imresize()
closeall;clearall;clc;
I=imread('');
IN=imresize(I,[2018,2048],'nearest');
IB=imresize(I,[2048,2048],'bilinear');
IC=imresize(I,[2048,2048],'bicubic');
subplot(2,2,1);
imshow(I);
title('(a)原图像');
subplot(2,2,2);
imshow(IN);
title('(b)最近邻内插法所得图像');
subplot(2,2,3);
imshow(IB);
title('(c)双线性内插法所得图像');
subplot(2,2,4);
imshow(IC);
title('(d)双三次内插法所得图像')
法
(2):
采用几何空间变换
closeall;clearall;clc;
I=imread('');
T=[400;040;001];
tform=maketform('affine',T);
IN=imtransform(I,tform,'nearest');
IB=imtransform(I,tform,'bilinear');
IC=imtransform(I,tform,'bicubic');
figure
(1)
imshow(I);
title('原图像');
figure
(2)
imshow(IN);
title('最近邻内插');
figure(3)
imshow(IB);
title('双线性内插');
figure(4)
imshow(IC);
title('双三次内插')
2_4:
(1)水平偏移变换:
closeall;clearall;clc;
I1=imread('');
I2=imread('');
T=[10;010;001];
tform=maketform('affine',T);
I11=imtransform(I1,tform);
I1N=imresize(I11,[20482048],'nearest');
I1B=imresize(I11,[20482048],'bilinear');
I1C=imresize(I11,[20482048],'bicubic');
I22=imtransform(I2,tform);
I2N=imresize(I22,[20482048],'nearest');
I2B=imresize(I22,[20482048],'bilinear');
I2C=imresize(I22,[20482048],'bicubic');
figure
(1);
imshow(I1);
title('lena原图像');
figure
(2);
imshow(I1N);
title('lena最近邻');
figure(3);
imshow(I1B);
title('lena双线性');
figure(4);
imshow(I1C);
title('lena双三次');
figure(5);
imshow(I2);
title('elain1原图像');
figure(6);
imshow(I2N);
title('elain1最近邻');
figure(7);
imshow(I2B);
title('elain1双线性');
figure(8);
imshow(I2C);
title('elain1双三次')
(2)旋转变换:
closeall;clearall;clc;
I1=imread('');
I2=imread('');
T=[cosd(30)sind(30)0;-sind(30)cos(30)0;001];
tform=maketform('affine',T);
I11=imtransform(I1,tform);
I1N=imresize(I11,[20482048],'nearest');
I1B=imresize(I11,[20482048],'bilinear');
I1C=imresize(I11,[20482048],'bicubic');
I22=imtransform(I2,tform);
I2N=imresize(I22,[20482048],'nearest');
I2B=imresize(I22,[20482048],'bilinear');
I2C=imresize(I22,[20482048],'bicubic');
figure
(1);
imshow(I1);
title('lena原图像');
figure
(2);
imshow(I1N);
title('lena最近邻');
figure(3);
imshow(I1B);
title('lena双线性');
figure(4);
imshow(I1C);
title('lena双三次');
figure(5);
imshow(I2);
title('elain1原图像');
figure(6);
imshow(I2N);
title('elain1最近邻');
figure(7);
imshow(I2B);
title('elain1双线性');
figure(8);
imshow(I2C);
title('elain1双三次')