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

图像变换——等距变换、相似变换、仿射变换、投影变换

%%图像变换
% I = imread('cameraman.tif');
I = imread('F:\stitching\imagess\or\baiyun2.jpg');
figure; imshow(I); title('原始图像');
[w,h]=size(I);
theta=pi/4;%旋转角
t=[200,80];%平移tx,ty
s=0.3;%缩放尺度
%% 等距变换=平移变换+旋转变换
H_e=projective2d([cos(theta) sin(theta) t(1);-sin(theta)  cos(theta) t(2);0           0       1]');
I_e=imwarp(I,H_e);
figure; imshow(I_e); title('等距变换');
%% 相似变换=等距变换+均匀缩放
H_s=projective2d([s*cos(theta) -s*sin(theta) t(1);s*sin(theta)  s*cos(theta) t(2);0           0       1]');
I_s=imwarp(I,H_s);
figure; imshow(I_s); title('相似变换');
%% 仿射变换=平移变换+非均匀变换
H_a=projective2d([1 0.2 t(1);0 1 t(2);0 0  1]');
I_a=imwarp(I,H_a);
figure; imshow(I_a); title('仿射变换');
%% 投影变换
H_P=projective2d([0.765,-0.122,-0.0002;-0.174,0.916,9.050e-05;105.018,123.780,1]);
I_P=imwarp(I,H_P);
figure; imshow(I_P); title('投影变换');% %% 黑色背景变白色
% linear_out = I_a;
% redChannel = linear_out(:, :, 1);
% greenChannel = linear_out(:, :, 2);
% blueChannel = linear_out(:, :, 3);
% thresholdValue = 0;
% mask = redChannel == thresholdValue & greenChannel == thresholdValue & blueChannel == thresholdValue;
% maskedRed = redChannel;
% maskedGreen = greenChannel;
% maskedBlue = blueChannel;
% % Do the masking - make white where it was black.
% maskedRed(mask) = 255;
% maskedGreen(mask) = 255;
% maskedBlue(mask) = 255;
% mosaic = cat(3, maskedRed, maskedGreen, maskedBlue);
% figure; imshow(mosaic);

 实验结果:

等距变换:

相似变换

仿射变换

投影变换

参考文章图像变换——等距变换,相似变换,仿射变换,投影变换_投影扭曲 相似扭曲-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • net core中byte数组如何高效转换为16进制字符串
  • 【maven】阿里云仓库配置
  • MySQL 中间件 MySQL-Router
  • 力扣229题详解:求众数 II 的多种解法与模拟面试问答
  • 由浅入深学习 C 语言:Hello World【基础篇】
  • 更改了ip地址怎么改回来
  • linux下一切皆文件,如何理解?
  • 搜索引擎通过分析网页标题中的关键词来判断内容的相关性
  • SAP BAPI-创建供应商客户主数据
  • Ai产品经理的探索:技能、机遇与未来展望
  • vivado U_SET
  • Zookeeper未授权访问的漏洞处理
  • Linux | 文件系统进阶:Inode与软硬链接艺术剖析
  • 怎么检测电脑的RAM?丨什么是RAM?
  • 【Linux系列】du命令详解
  • SegmentFault for Android 3.0 发布
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【Leetcode】104. 二叉树的最大深度
  • Android系统模拟器绘制实现概述
  • Apache的基本使用
  • bootstrap创建登录注册页面
  • JavaScript DOM 10 - 滚动
  • JavaScript-Array类型
  • use Google search engine
  • VUE es6技巧写法(持续更新中~~~)
  • 力扣(LeetCode)357
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何优雅地使用 Sublime Text
  • 用Python写一份独特的元宵节祝福
  • 你对linux中grep命令知道多少?
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 我们雇佣了一只大猴子...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # .NET Framework中使用命名管道进行进程间通信
  • #includecmath
  • $.ajax,axios,fetch三种ajax请求的区别
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (3)llvm ir转换过程
  • (7) cmake 编译C++程序(二)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二) 初入MySQL 【数据库管理】
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)视频码率,帧率和分辨率的联系与区别
  • .Net下的签名与混淆
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • ::前边啥也没有
  • @Autowired @Resource @Qualifier的区别
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @JsonFormat与@DateTimeFormat注解的使用
  • @reference注解_Dubbo配置参考手册之dubbo:reference