资源简介
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仿真源码
- 飞机纵向增稳系统设计matlab
- matlab renix 文件读取代码
- 粒子滤波算法介绍及MATLAB工具箱
- 广义预测控制Matlab程序
- 通过knn算法,实现WiFi室内定位在mat
- 云计算,matlab
- 用户均衡流量分配模型UE的matlab求解程
- 回溯搜索算法 matlab BSA.m
- 概率神经网络分类matlab代码
- 何凯明去雾MATLAB代码(.M).zip
- 《神经.模糊.预测控制及其MATLAB实现》
- 柴油发电机matlab模型
- morlet小波matlab代码
- 振动课程MATLAB代码
- FRFT分数阶傅里叶变换matlab代码
- matlab密码登陆界面的实现
- 拟一维喷管流动的数值解MATLAB程序
- kd树的创建及搜索 matlab实现
- matlab音乐合成.zip
- 永磁同步电机直接转矩控制仿真图M
- svm多分类matlab程序
- 对图像进行傅里叶变换和逆变换
- MATLAB图像增强程序举例
- EM算法在高斯混合模型中的应用有ma
- 基于matlab的发动机特性曲线拟合
- 卡尔曼滤波器matlab程序
- 基于MATLAB的数字可视化图像处理GUI设
- Matlab registration
- 卷积码及维特比译码matlab程序
评论
共有 条评论