欢迎来到天天文库
浏览记录
ID:12754491
大小:46.39 KB
页数:5页
时间:2018-07-18
《编程且利用双线性插值实现图像的缩放》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一设计题目编程且利用双线性插值实现图像的缩放二设计目的1、熟悉matlab使用环境及工作原理;2、掌握图像缩放的原理;3、学会双线性插值法的应用;4、体会图像灰度值的变化过程。三设计原理1双线性插值算法简单比方原来的数值序列:0,10,20,30,40线性插值一次为:0,5,10,15,20,25,30,35,40即认为其变化(增减)是线形的,可以在坐标图上画出一条直线在数码相机技术中,这些数值可以代表组成一张照片的不同像素点的色彩、色度等指标。 为了方便理解,先考虑一维情况下的线性插值对于一个数列c,我们假设c[
2、a]到c[a+1]之间是线性变化的那么对于浮点数x(a<=x3、x,b+1)=c[a+1][b+1]*(x-a)+c[a][b+1]*(1+a-x);好,现在已经知道c(x,b)和c(x,b+1)了,而根据假设c(x,b)到c(x,b+1)也是线性变化的,所以:c(x,y)=c(x,b+1)*(y-b)+c(x,b)*(1+b-y)这就是双线性插值2、图像缩放的基本原理:1)根据已有的数字图像重建物理图像。2)对重建的物理图像以所需要的分辨率重采样。四设计程序应用matlab编程:clear;I=imread('f.jpg');Z=rgb2gray(I);[rows,cols]4、=size(Z);K1=str2double(inputdlg('请输入行缩放倍数','INPUTscalefactor',1,{'0.5'}));%行默认变为原来的0.5倍K2=str2double(inputdlg('请输入列缩放倍数','INPUTscalefactor',1,{'0.5'}));%列默认变为原来的0.5倍width=K1*rows;height=K2*cols;Out=uint8(zeros(width,height));%创建输出图像矩阵widthScale=rows/width;heig5、htScale=cols/height;forx=6:width-6%6是为了防止矩阵超出边界溢出fory=6:height-6oldX=x*widthScale;%oldX,oldY为原坐标,x,y为新标oldY=y*heightScale;if(oldX/double(uint16(oldX))==1.0)&(oldY/double(uint16(oldY))==1.0)Out(x,y)=Z(int16(oldX),int16(oldY));%若oldX,oldY为整数,直接赋值elsea=double(uin6、t16(oldX));b=double(uint16(oldY));x11=double(Z(a,b));%x11赋值I(a,b)x12=double(Z(a,b+1));%x12赋值I(a,b+1)x21=double(Z(a+1,b));%x21赋值I(a+1,b)x22=double(Z(a+1,b+1));%x22赋I(a+1,b+1)Out(x,y)=uint8((b+1-oldY)*((oldX-a)*x(a+1-oldX)*x11)+(oldY-b)*((oldX-a)*x22+(a+1-oldX)*7、x12));%用双线性插值计算公式计算endendendimshow(Z);figure;五效果图对比压缩前图像压缩后图像六程序分析先将原图像(即658*469)通过matlab语句锁定,变换成相应的灰度图像,再将这个灰度图像的尺寸锁定,将其按照横向0.5,纵向0.5的比例缩小,得到想要的图像。这个过程是通过对原图像中每个像素点的改变而相应的全图像改变的。最后得到329*234的灰度图像。七设计体会通过这次课设,使我加深了对matlab编程的认识,应用matlab使应该注意的一些问题及它适用的环境。同时,学习了双线8、性插值在图像的缩放中的具体应用,在matlab中的相关语句。并且,了解了图像缩放的具体过程。在多媒体信息与通信中,许多的知识都可以用matlab来实现,matlab是一个基础实用的软件,对图像的操作处理在日后的学习工作中是必不可少的,这次的设计让我深入的学习了这方面的知识,认识到理论结合实际的必要性。
3、x,b+1)=c[a+1][b+1]*(x-a)+c[a][b+1]*(1+a-x);好,现在已经知道c(x,b)和c(x,b+1)了,而根据假设c(x,b)到c(x,b+1)也是线性变化的,所以:c(x,y)=c(x,b+1)*(y-b)+c(x,b)*(1+b-y)这就是双线性插值2、图像缩放的基本原理:1)根据已有的数字图像重建物理图像。2)对重建的物理图像以所需要的分辨率重采样。四设计程序应用matlab编程:clear;I=imread('f.jpg');Z=rgb2gray(I);[rows,cols]
4、=size(Z);K1=str2double(inputdlg('请输入行缩放倍数','INPUTscalefactor',1,{'0.5'}));%行默认变为原来的0.5倍K2=str2double(inputdlg('请输入列缩放倍数','INPUTscalefactor',1,{'0.5'}));%列默认变为原来的0.5倍width=K1*rows;height=K2*cols;Out=uint8(zeros(width,height));%创建输出图像矩阵widthScale=rows/width;heig
5、htScale=cols/height;forx=6:width-6%6是为了防止矩阵超出边界溢出fory=6:height-6oldX=x*widthScale;%oldX,oldY为原坐标,x,y为新标oldY=y*heightScale;if(oldX/double(uint16(oldX))==1.0)&(oldY/double(uint16(oldY))==1.0)Out(x,y)=Z(int16(oldX),int16(oldY));%若oldX,oldY为整数,直接赋值elsea=double(uin
6、t16(oldX));b=double(uint16(oldY));x11=double(Z(a,b));%x11赋值I(a,b)x12=double(Z(a,b+1));%x12赋值I(a,b+1)x21=double(Z(a+1,b));%x21赋值I(a+1,b)x22=double(Z(a+1,b+1));%x22赋I(a+1,b+1)Out(x,y)=uint8((b+1-oldY)*((oldX-a)*x(a+1-oldX)*x11)+(oldY-b)*((oldX-a)*x22+(a+1-oldX)*
7、x12));%用双线性插值计算公式计算endendendimshow(Z);figure;五效果图对比压缩前图像压缩后图像六程序分析先将原图像(即658*469)通过matlab语句锁定,变换成相应的灰度图像,再将这个灰度图像的尺寸锁定,将其按照横向0.5,纵向0.5的比例缩小,得到想要的图像。这个过程是通过对原图像中每个像素点的改变而相应的全图像改变的。最后得到329*234的灰度图像。七设计体会通过这次课设,使我加深了对matlab编程的认识,应用matlab使应该注意的一些问题及它适用的环境。同时,学习了双线
8、性插值在图像的缩放中的具体应用,在matlab中的相关语句。并且,了解了图像缩放的具体过程。在多媒体信息与通信中,许多的知识都可以用matlab来实现,matlab是一个基础实用的软件,对图像的操作处理在日后的学习工作中是必不可少的,这次的设计让我深入的学习了这方面的知识,认识到理论结合实际的必要性。
此文档下载收益归作者所有