双三次插值(BiCubic插值)

双三次插值(BiCubic插值)只是根据自己的理解补充一下 参考文章来源 nbsp 图像缩放之双三次插值法 nbsp 点击打开链接 nbsp 图像放大并进行 BiCubic 插值 Matlab C 代码点击打开链接 nbsp 假设源图像 A 大小为 m n 缩放 K 倍后的目标图像 B 的大小为 M N 即 K M m A 的每一个像素点是已知的 B 是未知的 我们想要求出目标图像 B 中每一像素点 X Y 的值 必须先找出像素 X Y 在源图像 A 中对应的像素 x y 再根

 只是根据自己的理解补充一下,参考文章来源:

 图像缩放之双三次插值法 点击打开链接

 图像放大并进行BiCubic插值 Matlab/C++代码点击打开链接

 假设源图像A大小为m*n,缩放K倍后的目标图像B的大小为M*N,即K=M/m。A的每一个像素点是已知的,B是未知的,我们想要求出目标图像B中每一像素点(X,Y)的值,必须先找出像素(X,Y)在源图像A中对应的像素(x,y),再根据源图像A距离像素(x,y)最近的16个像素点作为计算目标图像B(X,Y)处像素值的参数,利用BiCubic基函数求出16个像素点的权重,图B像素(x,y)的值就等于16个像素点的加权叠加。

双三次插值(BiCubic插值)


 根据比例关系x/X=m/M=1/K,我们可以得到B(X,Y)在A上的对应坐标为A(x,y)=A(X*(m/M),Y*(n/N))=A(X/K,Y/K)。如图所示P点就是目标图像B在(X,Y)处对应于源图像A中的位置,P的坐标位置会出现小数部分,所以我们假设 P的坐标为P(x+u,y+v),其中x,y分别表示整数部分,u,v分别表示小数部分(蓝点到a11方格中红点的距离)。那么我们就可以得到如图所示的最近16个像素的位置,在这里用a(i,j)(i,j=0,1,2,3)来表示,如上图。

 双三次插值(BiCubic插值)

 我们要做的就是求出BiCubic函数中的参数x,从而获得上面所说的16个像素所对应的权重W(x)。BiCubic基函数是一维的,而像素是二维的,所以我们将像素点的行与列分开计算。BiCubic函数中的参数x表示该像素点到P点的距离,例如a00距离P(x+u,y+v)的距离为(1+u,1+v),因此a00的横坐标权重i_0=W(1+u),纵坐标权重j_0=W(1+v),a00对B(X,Y)的贡献值为:(a00像素值)* i_0* j_0。因此,a0X的横坐标权重分别为W(1+u),W(u),W(1-u),W(2-u);ay0的纵坐标权重分别为W(1+v),W(v),W(1-v),W(2-v);B(X,Y)像素值为:

双三次插值(BiCubic插值)


加权算法(a可以不取-0.5):

双三次插值(BiCubic插值)


clc,clear; ff=imread('C:\Users\Administrator\Desktop\1.jpg');           %读取图像到ff k=8;                       %设置放大倍数 [m,n,color]=size(ff);   f=zeros(m,n);      %将彩色图像ff转换为黑白图像f for i=1:m     for j=1:n         f(i,j)=ff(i,j);     end end a=f(1,:); c=f(m,:);             %将待插值图像矩阵前后各扩展两行两列,共扩展四行四列,当插值点为边沿点时候,确保周围有16个点 b=[f(1,1),f(1,1),f(:,1)',f(m,1),f(m,1)]; d=[f(1,n),f(1,n),f(:,n)',f(m,n),f(m,n)]; a1=[a;a;f;c;c]; b1=[b;b;a1';d;d]; f=b1'; f1=double(f); for i=1:k*m                 %利用双三次插值公式对新图象所有像素赋值   u=rem(i,k)/k;            %rem取余,取余后再除以k是因为u为小数,自己代数字验证一下   i1=floor(i/k)+2;   %i1为B(X,Y)对应A(x,y)的横坐标整数部分,加2是因为上面扩大了四行四列,要回到原来图像的点再计算。   A=[sw(1+u) sw(u) sw(1-u) sw(2-u)];   %四个横坐标的权重W(i)   for j=1:k*n     v=rem(j,k)/k;j1=floor(j/k)+2;   %纵坐标原理同上     C=[sw(1+v);sw(v);sw(1-v);sw(2-v)]; %转置     B=[f1(i1-1,j1-1)     f1(i1-1,j1)     f1(i1-1,j1+1)     f1(i1-1,j1+2)    %坐标P(x+u,y+v)最近的16个点的像素值          f1(i1    ,j1-1)     f1(i1,   j1)     f1(i1,   j1+1)     f1(i1,   j1+2)          f1(i1+1,j1-1)     f1(i1+1,j1)    f1(i1+1,j1+1)   f1(i1+1,j1+2)          f1(i1+2,j1-1)     f1(i1+2,j1)    f1(i1+2,j1+1)   f1(i1+2,j1+2)];     g1(i,j)=(A*B*C);   end end g=uint8(g1); %将矩阵转换成8位无符号整数 imshow(g); title('X8'); function A=sw(w1) w=abs(w1); a=-0.5; if w<1&&w>=0   A=1-(a+3)*w^2+(a+2)*w^3; else if w>=1&&w<2   A=a*w^3-5*a*w^2+(8*a)*w-4*a; else   A=0;     end end end






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203325.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:04
下一篇 2026年3月19日 下午10:04


相关推荐

  • Github复现之TransUnet更新[通俗易懂]

    Github复现之TransUnet更新[通俗易懂]上一篇关于TransUnet的GitHub复现,大家反映效果不好,调参也不好调,我把模型单独拿出来,放到另外一个框架,供大家参考学习(上一篇链接:https://blog.csdn.net/qq_20373723/article/details/115548900)我这里训练了20个epoch,下面先给出效果正常的情况:原图预测结果整体代码结构:1.数据准备,文件名字请务必保持一致,不过你也可以去代码里改一级目录,红线的三个,其它不用管二级目录三级目录就是图像和标签,二者名字保持一

    2025年9月19日
    5
  • pycharm汉化版安装[通俗易懂]

    pycharm汉化版安装[通俗易懂]pycharm汉化版安装想要学好一门语言一款好用的编辑软件非常的重要,最近公司要做一款智能机器人的客服聊天系统,用到python刚开始使用eclipse编辑,发现效果不太理想,毕竟不是专业化软件。好了废话少说开启pycharm的安装之旅吧!一、首先呢当然是下载,不过呢我已经准备好了!赶快通过百度云下载吧,链接:百度云链接密码:32g6二、下载完成解压到自己想保存

    2022年5月25日
    51
  • intellij idea 激活码2099【2022最新】

    (intellij idea 激活码2099)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlCJM5ZJBPHS-eyJsa…

    2022年3月31日
    523
  • java是面向对象还是面向过程_面向对象和面向过程最本质的区别是什么?

    java是面向对象还是面向过程_面向对象和面向过程最本质的区别是什么?面向对象和面向过程最本质的区别在于考虑问题的出发点不同,面向过程是以事件流程为考虑问题的出发点,而面向对象则是以参与事件的角色(对象)为考虑问题的出发点,所以面向对象在处理问题时更加灵活。目前,面向过程的语言更多被用于处理底层业务,而面向对象编程则更多用于实现一些业务逻辑复杂的大型系统。从结构上来说,面向过程的特点是模块化和流程化,而面向对象的特点是封装、继承和多态,这里面就有本质的区别了。面向过…

    2022年7月7日
    22
  • html5文字云在线制作,用Tagxedo在线制作个性化词云

    html5文字云在线制作,用Tagxedo在线制作个性化词云原标题 用 Tagxedo 在线制作个性化词云词云 或者叫文字云 就是对网络文本中出现频率较高的 关键词 予以视觉上的突出 形成 关键词云层 或 关键词渲染 从而过滤掉大量的文本信息 使浏览网页者只要一眼扫过文本就可以领略文本的主旨 沈浩老师曾在搜狐博客分享过一篇关于词云制作的文章 详细的描述了个性化词云制作的思路和工具 今天小兵也来学习一下如何用 Tagxedo 在线制作个性化词云 在线制作词云工具

    2026年3月19日
    2
  • 走近webpack(4)–css相关拓展

    我们前面已经学了很多webpack基本的处理情况,一句话总结就是,一个优秀的webpack项目,主要的核心用法就是整合loader和plugin去处理你想要的任何需求。下面,咱们一起来学学如何用we

    2022年3月25日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号