图像放缩 (matlab实现,不用自带的函数)
来源:互联网 发布:淘宝订单总是自动关闭 编辑:程序博客网 时间:2024/06/10 19:06
一 双线性插值图像放大程序
1.使用说明:
此程序写得很简单,既可以用于放大,也可以用于缩小。
程序使用的图像文件名为moon.tif,你也可以换成其它的图像文件。但是要注意,程序不能处理彩色图像或灰度图像,只能处理二值图象,切记。此程序使用了的MATLAB的图像处理工具箱进行开发,所用的MATLAB版本为7.0。
2.原理解析:
首先,介绍一个双线性内插值。
其基础基于的基本思想就是双线性方程,f(x,y)=ax+by+cxy+d,来定义一个双曲抛物面与4个已知点的拟合,a到d四个值由已知的4个顶点的f(x,y)值来确定。
具体说就是,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)
其中f(i,j)表示源图像(i,j)处的的像素值,以此类推
这种算法对于缩放比例较小的情况是完全可以接受的,令人信服的。一般的,缩小0.5倍以上或放大3.0倍以下,对任何图像都是可以接受的。 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。但由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。
这种算法对于缩放比例较小的情况是完全可以接受的,令人信服的。一般的,缩小0.5倍以上或放大3.0倍以下,对任何图像都是可以接受的。 这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。但由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。
3.实验步骤:
a.在matlab 中添加一个.m函数,命名为imagezoom.m.代码如下:
function g=imagezoom(f,a) %f 为一个图像,a放大倍数
[m,n]=size(f); %读取原图像的大小
M=fix(m*a); %确定放大后的大小
N=fix(n*a);
g=double(zeros(M,N)); %开辟一块内存,大小为M*N
for x=5:M-5 %利用双线性内插值法循环填充每个新像素,保存在g(x,y)中
for y=5:N-5 %因为在matlab中矩阵从(1,1)开如始的,为了避免读f(1,0)所以从5开始
u=x/a;
v=y/a;
w=fix(u);
z=fix(v);
dw=u-w;
dz=v-z;
g(x,y)=[f(w+1,z)-f(w,z)]*dw+[f(w,z+1)-f(w,z)]*dz+[f(w+1,z+1)+f(w,z)-f(w,z+1)-f(w+1,z)]*x*y+ f(w,z);
end
end
输入代码后,保存.
b.测试此函数。
在命令窗口中仿效输入如下命令:
I=imread(‘moon.tif’);
B=im2bw(I); %转化为二值图像
C=imagezoom(B,0.5); %缩小为原来的0.5倍
imshow(B),title(‘原图’);
figure
imshow(C),title(‘修改图’);
如果输入无误的话就会出现两副大小相差两倍的“月亮”了。
- 图像放缩 (matlab实现,不用自带的函数)
- matlab中自带图像的位置
- MATLAB自带的svm实现函数与libsvm差别
- matlab自带函数实现BP神经网络
- 给图像加高斯噪声和椒盐噪声(不使用自带函数)matlab实现
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- (备用)matlab自带的princomp函数
- MATLAB 自带函数源代码的查找
- 查看MATLAB自带函数的源代码
- 决策树--matlab自带函数
- matlab自带滤波器函数
- matlab自带函数实现高斯滤波
- 使用matlab自带的卷积码编解码函数实现咬尾卷积码
- MATLAB自带的svm实现函数与libsvm差别小议
- MATLAB自带的svm实现函数与libsvm差别小议
- 你了解WINX多少?
- [转] 面向方面的编程:它的好处是什么?
- WINX新增(1): KMP字符串查找算法
- lm
- WINX发布新版本
- 图像放缩 (matlab实现,不用自带的函数)
- AutoFreeAlloc细节
- [转]软件架构师的特点
- I will write articles both in chinese and in english
- WINX调查:您使用什么C++开发平台?
- 再论C++之垃圾回收(GC)
- 垃圾收集机制(Garbage Collection)批判
- 介绍国产的PHP MVC框架:FleaPHP
- 内存池(MemPool)技术详解