数字图像处理隔行采样缩小图像,最近邻插值与双线性插值放大图像(MATLAB实现)

阅读: 评论:0

数字图像处理隔行采样缩小图像,最近邻插值与双线性插值放大图像(MATLAB实现)

数字图像处理隔行采样缩小图像,最近邻插值与双线性插值放大图像(MATLAB实现)

1.隔行(列)采样缩小图像1/4的实验,两层for循环遍历,每隔一行,一列采集一个像素,这样在行和列上都缩小1/2,图像缩小了1/4。

function pt=zoom1_4(p1)[m,n]=size(p1);for i=1:mif(mod(i,2)==0)for j=1:nif(mod(j,2)==0)pt(i/2,j/2)=p1(i,j);endendendend
end
>> I=imread('cameraman.tif');
>> pt=zoom1_4(I);
>> imshow(pt)

 

2.采用最近邻插值将图像放大1.5倍


放大1.5倍涉及到了一些像素坐标取整的问题,包括像素个数等,实验中都选择了向下取整的办法,由于1.5倍取在四个像素中间,最近邻点可以选择多个节点,这里也统一采用向下取整的节点,以免边界溢出。

function pt=amp_neighbor(p1)[m1,n1]=size(p1);mt=floor(m1*1.5);nt=floor(n1*1.5);for i=1:mtfor j=1:ntpt(i,j)=p1(ceil(i/1.5),ceil(j/1.5));endend
end
>> I=imread('cameraman.tif');
>> pt=amp_neighbor(I);
>> imshow(pt)

 

3.采用双线性插值将图像放大1.5倍

像素个数操作同上,对于中间像素点的插值采用周围四个点,经过算术运算取均值的方法进行插值,按照PPT的ABCD四个点来编写函数。

function pt=amp_doublelinear(p1)[m1,n1]=size(p1);mt=floor(m1*1.5);nt=floor(n1*1.5);pt(1,1)=p1(1,1);pt(1,2)=p1(1,2);pt(2,1)=p1(2,1);for i=2:mtfor j=2:ntgf=(ceil(i/1.5)-(i/1.5))*(p1(floor(i/1.5),ceil(j/1.5))-p1(floor(i/1.5),floor(j/1.5)))+p1(floor(i/1.5),floor(j/1.5));ge=(ceil(i/1.5)-(i/1.5))*(p1(ceil(i/1.5),ceil(j/1.5))-p1(ceil(i/1.5),floor(j/1.5)))+p1(ceil(i/1.5),floor(j/1.5));pt(i,j)=(ceil(j/1.5)-j/1.5)*(gf-ge)+ge;endend
end
>> I=imread('cameraman.tif');
>> pt=amp_doublelinear(I);
>> imshow(pt)

本文发布于:2024-01-27 23:50:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063706263388.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   插值   近邻   图像处理   数字
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23