- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 ,插值算法( 3 种):
(1 )最邻近插值(近邻取样法) :
最邻近插值的的思想很简单, 就是把这个非整数坐标作一个四舍五入, 取最近的整数点
坐标处的点的颜色。可见,最邻近插值简单且直观,速度也最快,但得到的图像质量不高。
最邻近插值法的 MATLAB 源代码为:
A = imread( 'F:\lena.jpg' ); %读取图像信息
imshow(A); % 显示原图
title( ' 原图 128*128' );
Row = size(A,1); Col = size(A,2); % 图像行数和列数
nn=8; % 放大倍数
m = round(nn*Row); % 求出变换后的坐标的最大值
n = round(nn*Col);
B = zeros(m,n,3); % 定义变换后的图像
for i = 1 : m
for j = 1 : n
x = round(i/nn); y = round(j/nn); %最小临近法对图像进行插值
if x==0 x = 1; end
if y==0 y = 1; end
实用标准文案
if x>Row x = Row; end
if y>Col y = Col; end
B(i,j,:) = A(x,y,:);
end
end
B = uint8(B); %将矩阵转换成 8 位无符号整数
figure;
imshow(B);
title( ' 最邻近插值法放大 8倍 1024*1024' );
运行程序后,原图如图 1 所示:
图 1
用最邻近插值法放大 4 倍后的图如图 2 所示:
精彩文档
实用标准文案
图 2
(2 )双线性内插值法:
在双线性内插值法中,对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为
(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) 处的的像素值,以此类推。
精彩文档
实用标准文案
这就是双线性内插值法。 双线性内插值法计算量大, 但缩放后图像质量高, 不会出现像
素值不连续的的情况。 由于双线性插值具有低通滤波器的性质, 使高频分量受损, 所以可能
会使图像轮廓在一定程度上变得模糊。
在 MATLAB 中,可用其自带的函数 imresize( ) 来实现双线性内插值算法。
双线性内插值算法的 MATLAB 源代码为:
A=imread( 'F:\lena.jpg' );
imshow(A);
title( ' 原图 128*128' );
C=imresize(A,8, 'bilinear' ); % 双线性插值
figure;
i
文档评论(0)