3.5 图像几何变换——镜像变换

设原图像高度为 f H f_H fH,宽度为 f W f_W fW

1. 水平镜像变换

设原始图像的任意点 P 0 ( x 0 , y 0 ) P_0(x_0, y_0) P0(x0,y0),沿水平( x x x 方向)镜像后到新的位置 P ( x , y ) P(x,y) P(x,y),水平镜像不改变 y y y 坐标。其变换式为
{ x = f W − x 0 y = y 0 \left\{ \begin{matrix} x = f_W - x_0 \\ y = y_0 \end{matrix} \right. {x=fWx0y=y0
矩阵表达式为:
[ x y 1 ] = [ − 1 0 f W 0 1 0 0 0 1 ] [ x 0 y 0 1 ] \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=100010fW01x0y01

2. 垂直镜像变换

设原始图像的任意点 P 0 ( x 0 , y 0 ) P_0(x_0, y_0) P0(x0,y0),沿垂直( y y y 方向)镜像后到新的位置 P ( x , y ) P(x,y) P(x,y),垂直镜像不改变 x x x 坐标。其变换式为
{ x = x 0 y = f H − y 0 \left\{ \begin{matrix} x = x_0 \\ y = f_H - y_0 \end{matrix} \right. {x=x0y=fHy0
矩阵表达式为:
[ x y 1 ] = [ 1 0 0 0 − 1 f H 0 0 1 ] [ x 0 y 0 1 ] \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=1000100fH1x0y01

3. 对角镜像变换

设原始图像的任意点 P 0 ( x 0 , y 0 ) P_0(x_0, y_0) P0(x0,y0),沿对角镜像后到新的位置 P ( x , y ) P(x,y) P(x,y)。其变换式为
{ x = f W − x 0 y = f H − y 0 \left\{ \begin{matrix} x = f_W - x_0 \\ y = f_H - y_0 \end{matrix} \right. {x=fWx0y=fHy0
矩阵表达式为:
[ x y 1 ] = [ − 1 0 f W 0 − 1 f H 0 0 1 ] [ x 0 y 0 1 ] \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=100010fWfH1x0y01

4. 实战

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = 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)指出,进群答案:数字图像处理。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值