双线性插值算法推导及代码实现
来源:互联网 发布:数组可以不指定长度吗 编辑:程序博客网 时间:2024/06/06 19:23
双线性插值,是一种比较重要的插值方法,尤其在数字图像处理领域。本篇博文分为三个部分:一是双线性插值的算法推导,二是双线性插值的算法实现,三是算法的运行结果。
一 双线性插值的算法推导
二 代码实现(matlab)
function [out] = bilinearInterpolation(im, out_dims) in_rows = size(im,1); in_cols = size(im,2); out_rows = out_dims(1); out_cols = out_dims(2); S_R = in_rows / out_rows; S_C = in_cols / out_cols; [cf, rf] = meshgrid(1 : out_cols, 1 : out_rows); rf = rf * S_R; cf = cf * S_C; r = floor(rf); c = floor(cf); r(r < 1) = 1; c(c < 1) = 1; r(r > in_rows - 1) = in_rows - 1; c(c > in_cols - 1) = in_cols - 1; delta_R = rf - r; delta_C = cf - c; in1_ind = sub2ind([in_rows, in_cols], r, c); in2_ind = sub2ind([in_rows, in_cols], r+1,c); in3_ind = sub2ind([in_rows, in_cols], r, c+1); in4_ind = sub2ind([in_rows, in_cols], r+1, c+1); out = zeros(out_rows, out_cols, size(im, 3)); out = cast(out, class(im)); for idx = 1 : size(im, 3) chan = double(im(:,:,idx)); %// Get i'th channel %// Interpolate the channel tmp = chan(in1_ind).*(1 - delta_R).*(1 - delta_C) + ... chan(in2_ind).*(delta_R).*(1 - delta_C) + ... chan(in3_ind).*(1 - delta_R).*(delta_C) + ... chan(in4_ind).*(delta_R).*(delta_C); out(:,:,idx) = cast(tmp, class(im)); end
三 双线性插值运行结果
>>I = imread('lena.jpg');
>> figure,imshow(I)
>> S = bilinearInterpolation(I,[1000,1000]);
>> figure,imshow(S)
1 0
- 双线性插值算法推导及代码实现
- Delphi代码的双线性插值算法
- 双线性插值与双三次插值算法代码
- 双线性插值算法及需要注意事项
- openCV3 双线性插值算法及优化
- 双线性插值缩放图片算法java实现
- 双线性插值算法原理及其实现
- Backpropagation 算法公式推导及矩阵实现
- 三次样条插值(Cubic Spline Interpolation)及代码实现(C语言)+双线性插值
- 视频图像处理基础知识1(双线性插值算法描述及实现)
- 视频图像处理基础知识2(双线性插值算法公式分析及FPGA实现初步构架)
- 神经网络中的反向传播法算法推导及matlab代码实现
- 深度学习|反向传播算法(BP)原理推导及代码实现
- 双线性插值2-代码
- 图像双线性插值算法
- 双线性插值算法
- 双线性插值算法
- Bilinear双线性插值算法
- android 中webview退出当前页面仍然继续播放的问题
- Unity3D -- ScreenToWorldPoint
- C# 调用C++结构体
- Android Sqlite 数据库版本更新
- Eclipse+M2E
- 双线性插值算法推导及代码实现
- Android ANR产生原因和解决办法
- Unknown system variable 'tx_read_only'
- win32控制台应用程序实现定时
- 熵 信息增益 相对熵(KL散度) 互信息
- 系统架构师成长之路(五)
- 深入理解groupByKey、reduceByKey
- [LeetCode] Counting Bits
- iOS代码量统计