双三次插值法(Bicubic interpolation)

2024-04-06 03:32

本文主要是介绍双三次插值法(Bicubic interpolation),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 双三次插值法(Bicubic interpolation)相对前两种算法计算过程更为复杂,考虑了待求像素坐标反变换后得到的浮点坐标周围的16个邻近像素。目的坐标M(x,y)和浮点坐标m(i+u,j+v),需要选取插值基函数来拟合数据,最常用的插值基函数是对sin[(πx)/x]的逼近。
  • 计算公式
    计算公式如图
function re_im = dthird(im, p, q)
%双三次插值法实现图像缩放,输入目标图像和行缩放、纵缩放倍数
%ziheng zhou 2016.3.30
im = im2double(im);
[m,n] = size(im);
im_R = im(:,:,1);
im_G = im(:,:,2);
im_B = im(:,:,3);
l = round(m*p);
h = round(n*q)/3;
re_R = zeros(l,h);
re_G = zeros(l,h);
re_B = zeros(l,h);for dstx = 1:lfor dsty = 1:hx = floor(dstx/p); u = dstx/p - x;y = floor(dsty/q); v = dsty/q - y;%逼近函数,A = s[]sa = 4 - 8*abs(u+1) + 5*abs(u+1)^2 - abs(u+1)^3;sb = 1 - 2*abs(u)^2 + abs(u)^3;sc = 1 - 2*abs(u-1)^2 + abs(u-1)^3;sd = 4 - 8*abs(u-2) + 5*abs(u-2)^2 - abs(u-2)^3;A = [sa, sb, sc, sd];%逼近函数,C = s[]sa = 4 - 8*abs(v+1) + 5*abs(v+1)^2 - abs(v+1)^3;sb = 1 - 2*abs(v)^2 + abs(v)^3;sc = 1 - 2*abs(v-1)^2 + abs(v-1)^3;sd = 4 - 8*abs(v-2) + 5*abs(v-2)^2 - abs(v-2)^3;C = [sa; sb; sc; sd];%考虑到边界像素,分类讨论得到插值计算区域矩阵 B[]xi = max(1,x-1); xx = max(1,x); xa = min(m,x+1); xaa = min(m,x+2);yi = max(1,y-1); yy = max(1,y); ya = min(n/3,y+1); yaa = min(n/3,y+2);if xi~=x-1||yi~=y-1||xaa~=x+2||yaa~=y+2BR = [im_R(xi,yi),im_R(xi,yy),im_R(xi,ya),im_R(xi,yaa);im_R(xx,yi),im_R(xx,yy),im_R(xx,ya),im_R(xx,yaa);im_R(xa,yi),im_R(xa,yy),im_R(xa,ya),im_R(xa,yaa);im_R(xaa,yi),im_R(xaa,yy),im_R(xaa,ya),im_R(xaa,yaa)];BG = [im_G(xi,yi),im_G(xi,yy),im_G(xi,ya),im_G(xi,yaa);im_G(xx,yi),im_G(xx,yy),im_G(xx,ya),im_G(xx,yaa);im_G(xa,yi),im_G(xa,yy),im_G(xa,ya),im_G(xa,yaa);im_G(xaa,yi),im_G(xaa,yy),im_G(xaa,ya),im_G(xaa,yaa)];BB = [im_B(xi,yi),im_B(xi,yy),im_B(xi,ya),im_B(xi,yaa);im_B(xx,yi),im_B(xx,yy),im_B(xx,ya),im_B(xx,yaa);im_B(xa,yi),im_B(xa,yy),im_B(xa,ya),im_B(xa,yaa);im_B(xaa,yi),im_B(xaa,yy),im_B(xaa,ya),im_B(xaa,yaa)];elseBR = im_R(xi:xaa,yi:yaa);BG = im_G(xi:xaa,yi:yaa);BB = im_B(xi:xaa,yi:yaa);end%插值主运算 A*B*Cre_R(dstx,dsty) = (A*BR)*C;re_G(dstx,dsty) = (A*BG)*C;re_B(dstx,dsty) = (A*BB*C);end
end
rm = cat(3,re_R,re_G,re_B);
re_im = im2uint8(rm);
figure,imshow(re_im);

这篇关于双三次插值法(Bicubic interpolation)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878887

相关文章

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

TCP三次握手详解!

TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) UR

动画插值器Interpolation

插值器定义: 用于修改一个动画过程中的速率,可以定义各种各样的线性或非线性变化函数,比如匀速.加速.减速等。 说白了(也就是通俗的说):其实就是一个 时间的函数,用来 定义了动画的变化律 系统的插值器: 在Android中所有的插值器都是Interpolator 的子类,下面是几种插值器: AccelerateDecelerateInterolator  先加速后减速,

Linux - Tcp连接建立和释放的三次握手四次挥手

一、TCP报文段首部格式         源端口/目的端口:各占2个字节,分别写入源端口和目的端口,端口是传输层与应用层的服务接口    序号:占4个字节,TCP连接中传送的数据流中每一个字节都有一个序号,序号字段指本报文段所发送的数据的第一个字节的序号    确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号    数据偏移:占4个字节,它指出TCP报文的数据距离TCP

tcp三次握手及其必要性

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如下图所示。 主机A为客户机,主机B为服务器 确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。 说明: (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 (2)第二次握手:服务器B收到SY

[Linux网络]TCP三次握手和四次挥手的连接建立和断开

TCP的三次握手 第一次握手:客户端发送网络包,服务器端收到,证明客户端的发送能力、服务器的接收能力是正常的。第二次握手:服务器发送网络包,客户端收到,证明服务器端的发送能力是正常的,不过此时并不能确定,客户端的接收能力是正常的。第三次握手:客户端发包,服务器端收到,服务器端可以得出结论,客户端的发送,接收能力是正常的。服务器端的接收,发送能力是正常的。 什么是半连接队列? 服务器端第一次

Nginx: 性能优化之提升CPU效率以及TCP的三次握手和四次挥手

提升利用CPU的效率 1 )CPU的调度机制 现在来看下 linux中 CPU的一个调度机制 假设现在系统上有只有一颗CPU,而linux系统是一个多任务的一个操作系统 它允许我们各个不同的用户允许在同一个操作系统上执行很多个进程 单核CPU肯定不可能同时去执行这样一些程序 CPU在同一时刻只能够调度一个进程来执行,没办法并发执行多个程序 从宏观上来看,多任务系统,都是能够一起

计算方法——插值法程序实现(一)

例题 给出的函数关系表,分别利用线性插值及二次插值计算的近似值。 0.10.20.30.40.51.1051711.2214031.3498591.4918251.648721 参考代码一:Python代码实现(自编码) import math""":parameter用于计算插值多项式的系数"""def Parameters(data_x,data_y,size):param

TCP 之 三次握手 (面经计网篇)

这是tcp 简历连接的三次握手方式 , 其中的特殊符号 , 我解释下 , SYN 是 同步的这个单词(synchronization), ACK 是回执,承认的单词(acknowledgement), SYN-ACK 服务器收到SYN报文后,回复一个带有SYN和ACK标志的报文段,这表示服务器已经收到了客户端的SYN报文,并且期望收到下一个字节的序列号为服务器传递的确认号。拓展1,2,3 (介

fpga图像处理实战-双三次插值算法

双三次插值算法         双三次插值(Bicubic Interpolation)是一种常用的图像处理算法,用于在图像缩放、旋转等操作中进行像素的插值。相比于简单的双线性插值,双三次插值能提供更高的图像质量,尤其是在放大图像时,可以更好地保留细节。 基本原理         双三次插值通过考虑周围16个像素点(一个4x4的邻域)的灰度值来计算插值点的值。其核心思想是利用三次多项式进行插