资源简介
Matlab实现nearest+bilinear+bicubic插值resize图片
代码仅供参考、交流

代码片段和文件信息
function [IMG] = imresize_bilinear(img scale)
[height width channel] = size(img);
% 既可以按比例缩放 又可以规定height和width
[size1 size2] = size(scale);
if size2 == 2
scale1 = scale(1 1) / height;
scale2 = scale(1 2) / width;
else
scale1 = scale;
scale2 = scale;
end
% 计算新的 height width
new_height = floor(height * scale1);
new_width = floor(width * scale2);
% 计算新的 scale
scale1 = new_height / height;
scale2 = new_width / width;
IMG = uint8(zeros(new_height new_width channel));
uu = double(zeros(new_height 4));
vv = double(zeros(new_width 4));
map_height = uint32(zeros(new_height 4));
map_width = uint32(zeros(new_width 4));
B = double(zeros(4 4));
A = double(zeros(1 4));
C = double(zeros(4 1));
% 计算new_height上每个点的对应数据
for i = 1:new_height
i0 = (i - 1) / scale1 + 1;
i1 = floor(i0);
u = i0 - i1;
uu(i 1) = 4 - 8*abs(u+1) + 5*abs(u+1)^2 - abs(u+1)^3;
uu(i 2) = 1 - 2*abs(u)^2 + abs(u)^3;
uu(i 3) = 1 - 2*abs(u-1)^2 + abs(u-1)^3;
uu(i 4) = 4 - 8*abs(u-2) + 5*abs(u-2)^2 - abs(u-2)^3;
for k = i1-1:i1+2
map_height(i k - i1 + 2) = max(1 k);
map_height(i k - i1 + 2) = min(map_height(i k - i1 + 2) height);
end
end
% 计算new_width上每个点的对应数据
for j = 1:new_width
j0 = (j - 1) / scale2 + 1;
j1 = floor(j0);
v = j0 - j1;
vv(j 1) = 4 - 8*abs(v+1) + 5*abs(v+1)^2 - abs(v+1)^3;
vv(j 2) = 1 - 2*abs(v)^2 + abs(v)^3;
vv(j 3) = 1 - 2*abs(v-1)^2 + abs(v-1)^3;
vv(j 4) = 4 - 8*abs(v-2) + 5*abs(v-2)^2 - abs(v-2)^3;
for k = j1-1:j1+2
map_width(j k - j1 + 2) = max(1 k);
map_width(j k - j1 + 2) = min(map_width(j k - j1 + 2) width);
end
end
% 计算新的 IMG
for i = 1:new_height
for j = 1:new_width
for k = 1:channel
% 计算矩阵B
for i1 = 1:4
for j1 = 1:4
map_width(j j1);
B(i1 j1) = img(map_height(i i1) map_width(j j1) k);
end
end
for i1 = 1:4
A(1 i1) = uu(i i1);
end
for j1 = 1:4
C(j1 1) = vv(j j1);
end
IMG(i j k) = A * B * C;
end
end
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2564 2019-03-15 20:46 imresize_bicubic.m
文件 2175 2019-03-11 15:49 imresize_bilinear.m
文件 1312 2019-03-11 15:48 imresize_nearest.m
- 上一篇:飞机纵向增稳系统设计matlab
- 下一篇:压缩感知算法的matlab仿真源码
相关资源
- 四旋翼MATLAB仿真文件+实验报告
- 串行级联cpm系统MATLAB仿真
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
评论
共有 条评论