当前位置: 首页 > news >正文

matlab练习程序(图像放大/缩小,双线性插值)

  半年前写过matlab最邻近插值的图像缩放,没怎么考虑边界问题。更早之前用Opencv写过双线性插值图像放大,不过写的比较混乱。所以这里用matlab重新再清楚的写一遍。

close all;
clear all;
clc;

m=1.8;              %放大或缩小的高度
n=2.3;              %放大或缩小的宽度
img=imread('lena.jpg');
imshow(img);
[h w]=size(img);
imgn=zeros(h*m,w*n);
rot=[m 0 0;0 n 0;0 0 1];                                   %变换矩阵

for i=1:h*m for j=1:w*n pix=[i j 1]/rot; float_Y=pix(1)-floor(pix(1)); float_X=pix(2)-floor(pix(2)); if pix(1) < 1        %边界处理 pix(1) = 1; end if pix(1) > h pix(1) = h; end if pix(2) < 1 pix(2) =1; end if pix(2) > w pix(2) =w; end pix_up_left=[floor(pix(1)) floor(pix(2))];    %四个相邻的点 pix_up_right=[floor(pix(1)) ceil(pix(2))]; pix_down_left=[ceil(pix(1)) floor(pix(2))]; pix_down_right=[ceil(pix(1)) ceil(pix(2))]; 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;                                     %按权重进行双线性插值 imgn(i,j)=value_up_left*img(pix_up_left(1),pix_up_left(2))+ ... value_up_right*img(pix_up_right(1),pix_up_right(2))+ ... value_down_left*img(pix_down_left(1),pix_down_left(2))+ ... value_down_right*img(pix_down_right(1),pix_down_right(2)); end end figure,imshow(uint8(imgn))

原图

 放大后的。

转载于:https://www.cnblogs.com/tiandsp/archive/2012/12/03/2800201.html

相关文章:

  • Python数据类型:双端队列deque-比列表list性能更高的一种数据类型
  • Unity3dUGUI图片循环轮播效果
  • P1379 八数码难题
  • Android开发之漫漫长途 Ⅷ——Android Binder(也许是最容易理解的)
  • 深入理解计算机操作系统(三)
  • GrapeCity Demo示例展示:如何用Spread.Sheets来创建应用|附演示文件下载
  • Glovo完成1.15亿欧元C轮融资,成为欧洲相关技术聚合中心
  • json提取嵌套数据
  • abstract 为什么不能与private,static,final一起使用????
  • springboot2整合OAuth2.0认证实例
  • 关于Vue和React区别的一些笔记
  • [Sdoi2010]地精部落
  • samba服务
  • RabbitMQ中各种消息类型如何处理?
  • 初识 JSP---(servlet / ServletConfig接口 / ServletContext接口)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 30秒的PHP代码片段(1)数组 - Array
  • Android开源项目规范总结
  • Android组件 - 收藏集 - 掘金
  • Angular6错误 Service: No provider for Renderer2
  • Apache的80端口被占用以及访问时报错403
  • crontab执行失败的多种原因
  • Fastjson的基本使用方法大全
  • Git 使用集
  • IDEA 插件开发入门教程
  • java概述
  • mockjs让前端开发独立于后端
  • rabbitmq延迟消息示例
  • text-decoration与color属性
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 如何使用 JavaScript 解析 URL
  • 入门级的git使用指北
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • # 透过事物看本质的能力怎么培养?
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (js)循环条件满足时终止循环
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (一)80c52学习之旅-起始篇
  • .equals()到底是什么意思?
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net Stream篇(六)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .sh 的运行
  • /bin、/sbin、/usr/bin、/usr/sbin
  • :not(:first-child)和:not(:last-child)的用法
  • @RequestMapping用法详解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [Android] Amazon 的 android 音视频开发文档
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [c]扫雷
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境