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

Matlab 图像平移、旋转、缩放、镜像

今天学习了用Matlab实现对图像的基本操作。在Matlab中,图像是按照二维矩阵的形式表示的。所以对图像的操作就是对矩阵的操作。 

对图像进行缩放、平移、旋转,都可以转化为矩阵的运算。 
关于变换矩阵的构造,请参考: 
《 [gym 101047C Robotics Competition] 矩阵快速幂求解点旋转平移N次之后的位置》 
参考原图: 
原图

1. 图像平移

init = imread('Fig3.tif'); % 读取图像
[R, C] = size(init); % 获取图像大小 res = zeros(R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色) delX = 50; % 平移量X delY = 50; % 平移量Y tras = [1 0 delX; 0 1 delY; 0 0 1]; % 平移的变换矩阵 for i = 1 : R for j = 1 : C temp = [i; j; 1]; temp = tras * temp; % 矩阵乘法 x = temp(1, 1); y = temp(2, 1); % 变换后的位置判断是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(x, y) = init(i, j); end end end; imshow(uint8(res)); % 显示图像

图像平移

2. 图像旋转

init = imread('Fig3.tif'); % 读取图像
[R, C] = size(init); % 获取图像大小 res = zeros( R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色) alfa = -15 * 3.1415926 / 180.0; % 旋转角度 tras = [cos(alfa) -sin(alfa) 0; sin(alfa) cos(alfa) 0; 0 0 1]; % 旋转的变换矩阵 for i = 1 : R for j = 1 : C temp = [i; j; 1]; temp = tras * temp;% 矩阵乘法 x = uint16(temp(1, 1)); y = uint16(temp(2, 1)); % 变换后的位置判断是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(i, j) = init(x, y); end end end; imshow(uint8(res)); % 显示图像

图像旋转

3. 图像缩放

init = imread('Fig3.tif'); % 读取图像
[R, C] = size(init); % 获取图像大小 timesX = 3; % X轴缩放量 timesY = 3; % Y轴缩放量 res = zeros(timesX * R, timesY * C); % 构造结果矩阵。每个像素点默认初始化为0(黑色) tras = [1/timesX 0 0; 0 1/timesY 0; 0 0 1]; % 缩放的变换矩阵 for i = 1 : timesX * R for j = 1 : timesY * C temp = [i; j; 1]; temp = tras * temp; % 矩阵乘法 x = uint8(temp(1, 1)); y = uint8(temp(2, 1)); % 变换后的位置判断是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(i, j) = init(x, y); end end end; imshow(uint8(res)); % 显示图像

图像缩放

4. 图像镜像(水平)

init = imread('Fig3.tif');
[R, C] = size(init);
res = zeros(R, C);

for i = 1 : R for j = 1 : C x = i; y = C - j + 1; res(x, y) = init(i, j); end end imshow(uint8(res));

图像镜像

转载于:https://www.cnblogs.com/Ph-one/p/11566673.html

相关文章:

  • 调整图像大小调整图片大小
  • matlab图像灰度调整——imadjust函数的使用
  • Matlab实现直方图均衡化
  • 图像处理之图像的平滑与锐化
  • Matlab常用函数
  • 空间域平滑滤波器
  • github免费私有仓库使用
  • android.mk-include
  • imfilter
  • matlab fspecial 用法解释
  • 几种常见空间滤波器MATLAB实现
  • Matlab图像处理——中值滤波medfilt2问题解决
  • 数字图像处理--算术、几何、谐波、逆谐波均值滤波器Matlab
  • matlab中x.^2与x^2有什么区别?
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明
  • Effective Java 笔记(一)
  • ES6系列(二)变量的解构赋值
  • JavaScript实现分页效果
  • java中具有继承关系的类及其对象初始化顺序
  • leetcode386. Lexicographical Numbers
  • Promise面试题2实现异步串行执行
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue总结
  • windows下使用nginx调试简介
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 测试如何在敏捷团队中工作?
  • 简单实现一个textarea自适应高度
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 事件委托的小应用
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云ACE认证学习知识点梳理
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #、%和$符号在OGNL表达式中经常出现
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (算法)求1到1亿间的质数或素数
  • (一)appium-desktop定位元素原理
  • (一)SpringBoot3---尚硅谷总结
  • (一)基于IDEA的JAVA基础1
  • (一)基于IDEA的JAVA基础10
  • (转)Google的Objective-C编码规范
  • (转)我也是一只IT小小鸟
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .htaccess 强制https 单独排除某个目录
  • .net core 6 集成和使用 mongodb
  • .Net Remoting(分离服务程序实现) - Part.3