Python图像处理-----几何变换
文章目录
- 一、图像几何变换理论
- 二、图像平移
- 2.1 使用数学公式的实现方式为:
- 2.2 使用矩阵实现的方式为
- 2.3 使用opencv
- 三、图像缩放
- 3.1 用数学式子表示为公式(a为缩放系数):
- 3.2 用矩阵表示如公式所示:
一、图像几何变换理论
图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适当的几
何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的
几何失真所产生的负面影响。几何变换常常作为图像处理应用的预处理步骤,是
图像归一化的核心工作之一[1]。
一个几何变换需要两部分运算:
- 空间变换:包括平移、缩放、旋转和正平行投影等,需要用它来表示输
出图像与输入图像之间的像素映射关系。 - 灰度插值算法:按照这种变换关系进行计算,输出图像的像素可能被映
射到输入图像的非整数坐标上[2]。
图像几何变换在变换过程中会建立一种原图像像素与变换后图像像素之间的映射关系,通过这种关系,能够从一方的像素计算出另一方的像素的坐标位置。通常将图像坐标映射到输出的过程称作向前映射,反之,将输出图像映射到输入的过程称作向后映射。向后映射在实践中使用较多,原因是能够避免使用向前映射中出现映射不完全和映射重叠的问题。
对于数字图像而言,像素的坐标是离散型非负整数,但是在进行变换的过程
中有可能产生浮点坐标值。这在图像处理中是一个无效的坐标。为了解决这个问
题需要用到插值算法。常见算法如下:
- 最近邻插值
- 双线性插值
- 双立方插值
图像变换是建立在矩阵运算基础上,通过矩阵运算可以很快找到对应关系。绍常见的图像几何变换,包括图形平移、图像缩放、图像旋转、图像镜像、图像仿射、图像透视等。
二、图像平移
图像平移是将图像中的所有像素点按照给定的平移量进行水平或垂直方向上的移动。假设原始像素的位置坐标为(x0,y0),经过平移量(△x,△y)后,坐标变为(x1, y1),如图所示:

用数学式子表示为公式,△x 和△y 称为平移量:
x 1 = x 0 + Δ x \mathrm{x}_{1}=\mathrm{x}_{0}+\Delta \mathrm{x} x1=x0+Δx
y 1 = y 0 + Δ y \mathrm{y}_{1}=\mathrm{y}_{0}+\Delta \mathrm{y} y1=y0+Δy
2.1 使用数学公式的实现方式为:
def translate_img(img, move_y, move_x):h, w, c = img.shapetranslated_img = np.zeros((h, w, c), dtype=np.uint8)for i in range(h):for j in range(w):if i >= move_y and j >= move_x:translated_img[i, j] = img[i - move_y, j - move_x]return translated_img
2.2 使用矩阵实现的方式为
用矩阵表示如公式所示:
[ x 1 y 1 1 ] = [ x 0 y 0 1 ] [ 1 0 0 0 1 0 Δ x Δ y
相关文章:
Python图像处理-----几何变换
文章目录 一、图像几何变换理论二、图像平移2.1 使用数学公式的实现方式为:2.2 使用矩阵实现的方式为2.3 使用opencv三、图像缩放3.1 用数学式子表示为公式(a为缩放系数):3.2 用矩阵表示如公式所示:一、图像几何变换理论 图像几何变换不改变图像的像素值,在图像平面上进行像…...
如何正确选择研究方向?如何实现论文创新?
学术评价是遵循“质量第一”原则的,所以对于研究生来说,从一开始就要把路子走正,自觉树立精品意识,把精力高度集中到提高学位论文的质量上来。这里,根据本人多年来指导博士和硕士研究生的体会,就人文社科研究生学位论文的选题与创新略述管见。 学位论文选题的两个层面 …...
Postgresql源码(113)表达式JIT计算简单分析
相关 《Postgresql源码(85)查询执行——表达式解析器分析(select 11如何执行)》 《Postgresql源码(113)表达式JIT计算简单分析》 1 普通表达式计算 普通表达式计算发生在优化器preprocess_expression中&am…...
CMU15-213 课程笔记 04-Floating Point
文章目录 浮点数如何用二进制表示IEEE 浮点数标准IEEE 浮点数实现IEEE 浮点数在内存里 E exp - bias 计算指数M 1.xxx 尾数计算举例:对一个浮点数进行转换一些关于浮点数的计算等等 浮点数如何用二进制表示 计算机内部的浮点数不是这样存在内存里的(至…...
DockerKubernetes ❀ Service下Port端口区分
文章目录 概述案例 概述 在Kubernetes中,Service(svc)是一种抽象机制,用于将一组 Pod 暴露给其他应用程序或服务。Service 可以有三种类型的端口: nodePort:这是 Service 在节点上公开的端口。可以使用此…...
【C++】笔试训练(一)
目录 一、选择题二、编程1、组队竞赛2、删除公共字符 一、选择题 1、以下for循环的执行次数是() for (int x 0, y 0; (y 123) && (x < 4); x);A 是无限循环 B 循环次数不定 C 4次 D 3次 答案:C 2、以下程序的运行结果是&…...
数据结构与算法之集合: Leetcode 349. 两个数组的交集 (Typescript版)
两个数组的交集 https://leetcode.cn/problems/intersection-of-two-arrays/description/ 描述 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1 输入:nums1 [1,2,…...
Unity 内存性能分析器 (Memory Profiler)
一、 安装 安装有两种方式一: add package : com.unity.memoryprofiler方式二: From Packages : Unity Registry 搜索 Memory Profiler 二、 使用 打开:Windows - > Analysis - > Memory Profiler 打开MemoryProfiler界面࿰…...
前端携带Bearer Token
前端携带Bearer Token 在前端使用 axios 发送请求时,可以通过设置请求头来携带 Bearer Token。Bearer Token 是一种常用的身份验证方式,它通常用于 OAuth2 授权流程中。 要在 axios 中携带 Bearer Token,可以通过设置 Authorization 请求头…...
leetcode 周赛 364
参考视频: 单调栈【力扣周赛 364】 文章目录 8048. 最大二进制奇数100049. 美丽塔 I100048. 美丽塔 II100047. 统计树中的合法路径数目 8048. 最大二进制奇数 题目链接 给你一个 二进制 字符串 s ,其中至少包含一个 1 。 你必须按某种方式 重新排列 字…...
开机自启动Linux and windows
1、背景 服务器由于更新等原因重启,部署到该服务上的响应的应用需要自启动 2、Linux 2.1 方式一 编写启动应用的sh脚本授权该脚本权限 chmod 777 xxx.sh 修改rc.loacl 位置:/etc/rc.local 脚本:sh /home/xxxx.sh & 授权rc.local …...
科技云报道:大模型的阴面:无法忽视的安全隐忧
科技云报道原创。 在AI大模型的身上,竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的,争议的核心问题在于安全。安全有两个方面,一个是大模型带来的对人类伦理的思考,一个是大模型本身带来的隐…...
2023年前端流行什么技术和框架了?
Web前端三大主流框架有React、Vue.js和Angular,由于接触过Vue.js,接下来主讲最新的Vue3.0! Vue3.0作为最新版本的Vue.js框架,拥有更强大的性能和更丰富的功能,为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…...
Nginx 背锅解析漏洞
Nginx 背锅解析漏洞 文章目录 Nginx 背锅解析漏洞1 在线漏洞解读:2 环境搭建3 影响版本:4 漏洞复现4.1 访问页面4.2 上传文件 4.3 上传失败4.4 使用bp进行分析包4.5 对返回图片位置进行访问4.6 执行php代码技巧-图片后缀加./php4.7 分析原因 --》cgi.fix_pathinfo--…...
AI与传统数据库 - ChatGPT风过之后 | 从Duet AI说开来
作者:Ni Demai,是NineData数据库产品专家,曾任阿里云数据库国际产品总负责人,华为高斯 GaussDB 创始团队核心架构师,IBM Db2 资深研发工程师。 Demai 专注 Cloud-Native database 架构设计,分析型 MPP&…...
L1-032 Left-pad C++解法
一、题目再现 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个…...
Python 用列表实现模拟手机通讯录(简易版)
"""列表实现好友管理系统知识点:1、列表存储信息2、列表增删改查3、嵌套循环4、字符串分割和拼接(重点)5、列表索引"""# 暂存好友信息(程序结束数据删除) friend_info list()input_buf…...
macOS使用官方安装包安装python
新手程序员可能想知道如何在 Mac 上正确安装 Python,这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后,双击包开始安装Python…...
如何重装Windows Mirosoft Store
重装Windows Mirosoft Store 如何重装Windows Mirosoft Store呢?如何下载Windows Mirosoft Store呢?Windows Mirosoft Store不见了咋办?Windows 自带软件不见了咋办等等?写在前面 1.文件准备2.安装 如何重装Windows Mirosoft Stor…...
软考高级系统架构设计师系列论文真题七:基于构件的软件开发
软考高级系统架构设计师系列论文真题七:基于构件的软件开发 一、基于构件的软件开发二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系列之:论文题目类型、论文…...
Cursor Pro终极破解教程:三步免费解锁AI编程助手完整指南
Cursor Pro终极破解教程:三步免费解锁AI编程助手完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …...
PHP开发实战:高频难点解析与优化方案
PHP常见技术难点梳理与实战应用案例解析 一、引言 PHP作为主流后端开发语言,凭借开发高效、部署便捷、生态完善等优势,长期应用于网站开发、接口服务、小程序后端、企业管理系统等各类项目。在实际开发过程中,开发者常会遇到语法逻辑混乱、性…...
Arm Compiler 6.16LTS功能安全认证语言扩展解析
1. Arm Compiler for Embedded FuSa 6.16LTS语言扩展支持现状解析在功能安全关键型嵌入式系统开发中,编译器工具链的认证状态直接关系到最终产品的合规性。Arm Compiler for Embedded FuSa 6.16LTS作为经过功能安全认证的工具链,其语言扩展支持情况需要开…...
DIY便携UV美甲灯:从电路设计到3D打印的完整制作指南
1. 项目概述:为什么选择DIY一个便携UV美甲灯?如果你和我一样,是个喜欢自己动手做美甲,同时又对电子制作和3D打印有点“手痒”的爱好者,那你肯定对市面上那些笨重、必须插电的UV美甲灯感到过不满。它们要么像个小型烤箱…...
紫光同创FPGA网络摄像头方案中,RGMII转GMII模块的Verilog实现与调试避坑指南
紫光同创FPGA网络摄像头方案中RGMII-GMII转换模块的深度解析与实战指南 当你在调试紫光同创FPGA网络摄像头方案时,是否遇到过这样的场景:PHY芯片与FPGA之间的物理层连接已经建立,但网络数据始终无法正常传输?或者上位机接收到的视…...
别再手动点选了!用Python脚本5分钟搞定Abaqus批量加载节点力(附完整代码)
Python自动化赋能Abaqus:高效批量加载节点力的工程实践 在有限元分析领域,Abaqus作为行业标杆软件,其强大的计算能力与灵活的二次开发接口深受工程师青睐。然而,当面对需要为数百甚至上千个节点分别施加不同载荷的复杂工况时&…...
LabVIEW集成Python虚拟环境:基于Conda的隔离部署与工程实践
1. 项目概述:当LabVIEW遇上Python虚拟环境如果你是一名LabVIEW开发者,最近是不是经常听到团队里讨论Python?或者你自己也遇到了这样的场景:一个复杂的算法,用G语言实现起来异常繁琐,但Python社区里却有现成…...
冒险岛游戏编辑器:Harepacker-resurrected 一站式解决方案完整指南
冒险岛游戏编辑器:Harepacker-resurrected 一站式解决方案完整指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected 想要个性化定…...
Windows下pthread开发环境搭建:MinGW-w64与winpthreads实战指南
1. 项目概述:为什么要在Windows上折腾pthread?如果你是一个从Linux或Unix环境转向Windows平台的C/C开发者,第一次在Windows上尝试编译一个依赖pthread(POSIX线程)库的老项目时,大概率会碰一鼻子灰。编译器会…...
云工场科技成为海淀3x3超级争霸赛与无锡杯官方算力支持伙伴
真正的速度,从来不只是快。5月,北京海淀3x3超级争霸赛与无锡杯篮球赛相继启动。云工场科技(HK.02512)以“官方算力支持伙伴”身份参与赛事合作,将算力服务能力带到赛场现场。一个多元化、速度与城市活力;一…...
