matlab实现图像放大两倍,matlab图像处理基础知识0(双线性插值matlab实现--调整水平和垂直放大倍数)...

需求说明:图像处理FPGA实现前期算法准备

当前算法:已通过matlab验证成功

function scaler_bilinear()

%-----------------------------0:配置输入输出--------------------------------

m=2; %放大或缩小的高度

n=2; %放大或缩小的宽度

I=imread('F:ookDigital image processing and machine vision640480plane.jpg');

[height,width,l]=size(I);    %输入分辨率 640*480

O=zeros(height*m,width*n,l); %输出分辨率 1920*1080

%-----------------------------1:开始输出计算--------------------------------

rot=[m,0,0;0,n,0;0,0,1];     %变换矩阵

for i=1:height*m

for j=1:width*n

pix=[i,j,1]/rot;

float_Y=pix(1)-floor(pix(1)); %水平宽度小数部分 floor 向下取整

float_X=pix(2)-floor(pix(2)); %垂直高度小数部分 floor 向下取整

%-----------------------------2:边界处理--------------------------------

if pix(1)<1      %边界处理

pix(1)=1;

end

if pix(1)>height %边界处理

pix(2)=height;

end

if pix(2)<1      %边界处理

pix(2)=1;

end

if pix(2)>width  %边界处理

pix(2)=width;

end

%-----------------------------3:原坐标四个相邻点----------------------------

%四个相邻的点

pix_up_left   = [floor(pix(1)) , floor(pix(2))];

pix_up_right  = [floor(pix(1)) , ceil(pix(2))];  %floor 向下取整  ceil 向上取整

pix_down_left = [ceil(pix(1))  , floor(pix(2))];

pix_down_right= [ceil(pix(1))  , ceil(pix(2))];

%-----------------------------4:权重计算-----------------------------------

%计算临近四个点的权重

value_up_left   = (1-float_X) * (1-float_Y);

value_up_right  = float_X     * (1-float_Y);

value_down_left = (1-float_X) * float_Y;

value_down_right= float_X     * float_Y;

%按权重进行双线性插值

%  O(i,j,:) = value_up_left   * I(pix_up_left(1)   ,pix_up_left(2),:)   +...

%             value_up_right  * I(pix_up_right(1)  ,pix_up_right(2),:)  +...

%             value_down_left * I(pix_down_left(1) ,pix_down_left(2),:) +...

%             value_down_right* I(pix_down_right(1),pix_down_right(2),:);

%-----------------------------5:计算输出图像数值----------------------------

O(i,j,1) = value_up_left   * I(pix_up_left(1),   pix_up_left(2)   ,1) +...

value_up_right  * I(pix_up_right(1),  pix_up_right(2)  ,1) +...

value_down_left * I(pix_down_left(1), pix_down_left(2) ,1) +...

value_down_right* I(pix_down_right(1),pix_down_right(2),1);

O(i,j,2) = value_up_left   * I(pix_up_left(1),   pix_up_left(2)   ,2) +...

value_up_right  * I(pix_up_right(1),  pix_up_right(2)  ,2) +...

value_down_left * I(pix_down_left(1), pix_down_left(2) ,2) +...

value_down_right* I(pix_down_right(1),pix_down_right(2),2);

O(i,j,3) = value_up_left   * I(pix_up_left(1),   pix_up_left(2)   ,3) +...

value_up_right  * I(pix_up_right(1),  pix_up_right(2)  ,3) +...

value_down_left * I(pix_down_left(1), pix_down_left(2) ,3) +...

value_down_right* I(pix_down_right(1),pix_down_right(2),3);

end

end

% figure,imshow(uOt8(O))

%-----------------------------6:输出显示------------------------------------

figure,imshow(I);       title('输入图像640*480');

figure,imshow(uint8(O));title('输出图像1920*1080');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

设计来自:时间的诗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值