设原图像高度为 fHf_HfH​,宽度为 fWf_WfW​。

1. 水平镜像变换

设原始图像的任意点 P0(x0,y0)P_0(x_0, y_0)P0​(x0​,y0​),沿水平(xxx 方向)镜像后到新的位置 P(x,y)P(x,y)P(x,y),水平镜像不改变 yyy 坐标。其变换式为
{x=fW−x0y=y0\left\{ \begin{matrix} x = f_W - x_0 \\ y = y_0 \end{matrix} \right. {x=fW​−x0​y=y0​​
矩阵表达式为:
[xy1]=[−10fW010001][x0y01]\left[\begin{matrix} x\\ y \\ 1 \end{matrix}\right] =\left[\begin{matrix} -1 & 0 & f_W\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x_0\\ y_0 \\ 1 \end{matrix}\right] ⎣⎡​xy1​⎦⎤​=⎣⎡​−100​010​fW​01​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​

2. 垂直镜像变换

设原始图像的任意点 P0(x0,y0)P_0(x_0, y_0)P0​(x0​,y0​),沿垂直(yyy 方向)镜像后到新的位置 P(x,y)P(x,y)P(x,y),垂直镜像不改变 xxx 坐标。其变换式为
{x=x0y=fH−y0\left\{ \begin{matrix} x = x_0 \\ y = f_H - y_0 \end{matrix} \right. {x=x0​y=fH​−y0​​
矩阵表达式为:
[xy1]=[1000−1fH001][x0y01]\left[\begin{matrix} x\\ y \\ 1 \end{matrix}\right] =\left[\begin{matrix} 1 & 0 & 0\\ 0 & -1 & f_H\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x_0\\ y_0 \\ 1 \end{matrix}\right] ⎣⎡​xy1​⎦⎤​=⎣⎡​100​0−10​0fH​1​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​

3. 对角镜像变换

设原始图像的任意点 P0(x0,y0)P_0(x_0, y_0)P0​(x0​,y0​),沿对角镜像后到新的位置 P(x,y)P(x,y)P(x,y)。其变换式为
{x=fW−x0y=fH−y0\left\{ \begin{matrix} x = f_W - x_0 \\ y = f_H - y_0 \end{matrix} \right. {x=fW​−x0​y=fH​−y0​​
矩阵表达式为:
[xy1]=[−10fW0−1fH001][x0y01]\left[\begin{matrix} x\\ y \\ 1 \end{matrix}\right] =\left[\begin{matrix} -1 & 0 & f_W\\ 0 & -1 & f_H\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x_0\\ y_0 \\ 1 \end{matrix}\right] ⎣⎡​xy1​⎦⎤​=⎣⎡​−100​0−10​fW​fH​1​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​

4. 实战

import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltimg = cv.imread('pic/rabbit500x333.jpg')# 镜像1
mirrorM = np.array([[-1, 0, 333],[0,  1, 0]
], dtype=np.float32)img_mirr = cv.warpAffine(img, mirrorM, dsize=img.shape[:2][::-1])
show(img_mirr)# 镜像2
img_mirh = cv.flip(img, 1)
img_mirv = cv.flip(img, 0)
img_mirb = cv.flip(img, -1)
show(np.hstack([img, img_mirh, img_mirv, img_mirb]))

5. 效果


说明:

  1. 未经许可,谢绝转载。
  2. 本教程为《数字图像处理Python OpenCV实战》的配套代码相关内容。
    免费视频教程为0-6章(标题号≤6),可在此处点击观看。
    所有课件及源代码可在此处下载:
    链接:https://pan.baidu.com/s/198PySe_vebO3e06idHSQ6g
    提取码:11o4
    有问题可在QQ群(1079300899)指出,进群答案:数字图像处理。

3.5 图像几何变换——镜像变换相关推荐

  1. 4.3【图像镜像】-------------基于Opencv实现-----图像的镜像变换

     [1]理论知识:         镜像变换又分为水平镜像和垂直镜像,水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行兑换,而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中 ...

  2. Python 计算机视觉(五)—— OpenCV 进行图像几何变换

    几何变换不改变图像的像素值,只是实现图像像素点的重新安排:恰当的进行图像的几何变换,可以减小甚至避免由于角度等一些因素造成的图像失真问题,有利于我们在识别图像时将注意力集中到图像的有效信息中而不至于被 ...

  3. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. 图像几何变换C++实现--镜像,平移,旋转,错切,缩放

    一.图像几何变换介绍 图像的几何空间变换是图像处理中的最基础的算法,是指对原始图像按需要改变其大小.形状和位置的变化,原始图像与目标函数之间的坐标变换函数为线性函数.二维图像的基本几何变换主要包括镜像 ...

  5. 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 直接上源码,本人是参考博文的源码OpenCV2: ...

  6. [Python图像处理] 三十六.OpenCV图像几何变换万字详解(平移缩放旋转、镜像仿射透视)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  7. 图像算法二:【图像几何变换】平移、镜像、转置、缩放、旋转、插值

    作为一个强大的科学计算软件,MATLAB广泛运用于较多领域,以其简单的编程风格著称.这篇文章便通过matlab语言来讲述如何进行图像的各种几何变换. 图像几何变换又称为图像空间变换,它是将一幅图像中的 ...

  8. [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. 图像几何变换--缩放、平移、镜像、旋转

    目录 一.图像几何变换基础 二.平移 三.缩放 四.旋转 五.镜像 六.复合变换 七.变换矩阵总结 八.完整代码 一.图像几何变换基础 1.图像的几何变换是指原始图像按照需要产生大小.形状和位置的变化 ...

最新文章

  1. 用于3D摄像头的VCSEL技术
  2. c语言 listview,C语言 SDK编程之通用控件的使用--ListView
  3. 里面如何创建新的module_硬盘分区:如何一次为新硬盘创建多个分区?
  4. 如何利用远程桌面连接CentOS的Desktop版本
  5. Redis 的缓存异常处理 —— 缓存雪崩、缓存击穿、缓存穿透
  6. Android异步处理:Handler+Looper+MessageQueue深入详解
  7. 4.3一个“简陋”的打字程序
  8. 为什么学计算机的学生应该向开源项目做贡献?
  9. 【Iphone 游戏开发之一】创建视图并绘制简单图形
  10. 2016年大学计算机期末笔试题目,2017年计算机基础大一考试题「附答案」
  11. 股市崩盘时,手中的股票期权 option 是如何让你倾家荡产的
  12. mysql 在不同数据库中创建定时同步任务,将每分钟数据转每5分钟统计
  13. 神经网络入门(个人理解)
  14. Comet OJ CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)
  15. 图像分类经典卷积神经网络—GoogLeNet论文翻译(中英文对照版)—Going Deeper with Convolutions(走向更深的卷积神经网络)
  16. 前端开发_HTML5_CSS部分-背景(background)
  17. 统计字符串中字符出现次数以及排序
  18. 一步一步教你在JCenter发布开源库
  19. UVA714 抄书 Copying Books
  20. 35岁前,应该做好的十件事

热门文章

  1. [转载] Web services 世界的业务过程和工作流
  2. 2021年华中科技大学人工智能与自动化学院考研指南
  3. 家庭消费类摄像头选择攻略和隐私保护小建议
  4. 手把手教你如何利用Python薅羊毛(快手极速版)
  5. 20135208JAVA第二次试验
  6. weak_ptr 的几个应用场景 —— 观察者、解决循环引用、弱回调
  7. ASP.NET AJAX入门系列相关资料收集
  8. DSLR Video Tips: Software 数码单反相机视频提示:软件 Lynda课程中文字幕
  9. 数学猜想验证步骤_小学数学“猜想-验证-归纳-运用”课堂教学模式
  10. NetCore之下载文件