《图像信号的抽取与插值.docx》由会员分享,可在线阅读,更多相关《图像信号的抽取与插值.docx(4页珍藏版)》请在第一文库网上搜索。
1、姓名:张达学号:202330561069外国语学院设计性实验1图像信号的抽取与插值一、实验目的1、 熟悉图像处理常用函数和方法;2、 培养通过查阅文献解决问题的能力。二、实验要求给出一个二维灰度图像,3、 编程实现对该图像的任意比例的放大及缩小;4、 编程实现对该图像的任意角度旋转;5、 解决缩放及旋转时产生的锯齿等图像不平滑问题。实验提示6、 利用上采样、下采样等方法对信号进行缩放变换;7、 观察对图像进行缩放或旋转时,图像是否会出现锯齿等不平滑现象?8、 分析产生锯齿现象的原因;9、 查阅文献了解解决锯齿现象的方法。(例如平滑滤波、双线性插值、双立方插值等处理)三、实验细节1、实现图像的放
2、大算法:为了实现图像的放大,首先将原图按照x1=a*x,y1=b*x将原图的像素点(x,y)映射为新的画布上的(x1,y1)点,如上图左一到左二。然后,以行或列为一个处理单位,采用一种图像插值算法,在两红点之间的空白点插入一些值,使图像充满整个画布。具体顺序如上图所示,先按行插值,再按列插值。本实验采用的插值算法要到达的目标是,使插入点的斜率与原图保持一致具体插值方法如下(以宽度放大三倍为例):取出一行像素点,使时域坐标变为原来的三倍。假设两相邻像素点坐标分别为an和am,那么在an+1、an+2an+iamT处填入的灰度值为:过程如下:图原图像的一行像素点图使时域坐标变为原来的三倍图在两点间
3、插值,使新插入的点与原先的两点以同一斜率变化。2.实现图像的缩小:假设要实现缩小,那么同样按照x1=ax,y1=by的坐标转换关系将原画布上的点映射到新画布上,那么新画布上的一点将成为原画布上多点的映射,此时,新画布的点只需取其中一个映射点即可。过程如下:运行结果:(以行列均放大三倍为例)放大前的图像:将图像的行列上的时域变为原来的三倍。行插值:列插值后(完成):使用线性插值法假设使用临近插值法,将得到如下列图片,可见,在图中眼部的位置,临近插值法的锯齿更为明显,而使用本实验插值算法得到的图像边缘更为平滑。图像缩小:(以行列均缩小为1/2为例)代码清单:c1ear;c1f;pic=imread
4、(,image.jpg*);k=2;%a31u3y1fiy1zw=size(pic);pic(1+1z1)=0;pic(1,w+1)=0;11=2*1;w1=2*w;i=1:1;x=cei1(i*111);ii=1:w;y=cei1(ii*w1w);fori=1:1forii=1:wa(cei1(i*111),cei1(ii*w1w)=pic(i,ii);end;end;fori=1:1forii=1:w-1n=(y(ii);m=(y(ii+1);foriii=1:m-n-1a(x(i),n+iii)=(a(x(i),m)-a(x(i),n)*iii(m-n)+a(x(i),n);end;end;end;fori=1:w1forii=1:1-1n=(x(ii);m=(x(ii+1);a(n+iii,i)=(a(m,i)-a(n,i)*iii(m-n)+a(n,i);end;end;end;imshow(a);2.实现图片的旋转算法:根据坐标变换公式,可将旋转后坐标(1,y1)映射到原坐标(,y)x=x1*cos(b)-y1*sin(b)y=x1*sin(b)+y1*cos(b)由于求出来的原坐标不为整数,故将其取整,假设求得(x,y)坐标范围处于有效范围,BP0x1z0O&xtO&yt=w)a(x,y)=pic(xt,yt);end;end;end;imshow(a);