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

图像仿射变换

仿射变换

仿射变换包括平移、旋转、缩放和错切四种基本变换的组合,广泛应用于计算机图形学、图像处理和计算机视觉等领域。

仿射变换的一般矩阵表示

二维空间中,仿射变换可以抽象表示为:

[ x ′ y ′ 1 ] = [ a b t x c d t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = ac0bd0txty1 xy1

其中, ( x , y ) (x,y) (x,y)是原始图像中的一个点, ( x ′ , y ′ ) (x′,y′) (x,y)是经过变换后的图像中的对应点。 ( a , b , c , d ) (a,b,c,d) (a,b,c,d)描述线性变换部分, ( t x , t y ) (t_x,t_y) (tx,ty)用于描述平移 。

三维空间中,仿射变换可以抽象表示为:

[ x ′ y ′ z ′ 1 ] = [ a b c t x d e f t y g h i t z 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} a & b & c & t_x \\ d & e & f & t_y \\ g & h & i & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = adg0beh0cfi0txtytz1 xyz1

其中, ( x , y , z ) (x,y,z) (x,y,z) 是原始图像中的一个点, ( x ′ , y ′ , z ′ ) (x′,y′,z') (x,y,z) 是经过变换后的图像中的对应点。 ( a , b , c , d , e , f , g , h , i ) (a,b,c,d,e,f,g,h,i) (a,b,c,d,e,f,g,h,i)描述线性变换部分, ( t x , t y , t z ) (t_x,t_y,t_z) (tx,ty,tz) 用于描述平移 。

四种基本变换的矩阵表示

1. 平移(Translation)

平移变换是指将图像中的所有点沿某个方向移动相同的距离。

二维空间矩阵表示为:

[ x ′ y ′ 1 ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = 100010txty1 xy1

其中, ( x , y ) (x,y) (x,y)是原始图像中的一个点, ( x ′ , y ′ ) (x′,y′) (x,y)是经过变换后的图像中的对应点。 t x t_x tx t y t_y ty 分别是沿 x 轴和 y 轴的平移距离。

三维空间矩阵表示为:

[ x ′ y ′ z ′ 1 ] = [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1& t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = 100001000010txtytz1 xyz1

其中, ( x , y , z ) (x,y,z) (x,y,z) 是原始图像中的一个点, ( x ′ , y ′ , z ′ ) (x′,y′,z') (x,y,z) 是经过变换后的图像中的对应点。 t x t_x tx t y t_y ty t z t_z tz分别是沿 x 轴、 y 轴和 z 轴的平移距离。

2. 缩放(Scaling)

缩放变换用于改变图像各轴的大小。

二维空间矩阵表示为:

[ x ′ y ′ 1 ] = [ s x 0 0 0 s y 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = sx000sy0001 xy1

其中, ( x , y ) (x,y) (x,y)是原始图像中的一个点, ( x ′ , y ′ ) (x′,y′) (x,y)是经过变换后的图像中的对应点。 s x s_x sx s y s_y sy 分别是沿 x 轴和 y 轴的缩放因子。当 s x s_x sx= s y s_y sy时,图像均匀缩放。

三维空间矩阵表示为:

[ x ′ y ′ z ′ 1 ] = [ s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z& 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = sx0000sy0000sz00001 xyz1

其中, ( x , y , z ) (x,y,z) (x,y,z) 是原始图像中的一个点, ( x ′ , y ′ , z ′ ) (x′,y′,z') (x,y,z) 是经过变换后的图像中的对应点。 s x s_x sx s y s_y sy s z s_z sz分别是沿 x 轴、 y 轴和 z 轴的缩放因子。当 s x s_x sx= s y s_y sy= s z s_z sz时,图像均匀缩放。

3. 旋转(Rotation)

旋转变换是指将图像绕某个点(通常是原点)旋转一个角度。

二维空间矩阵表示为:

[ x ′ y ′ 1 ] = [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} cos α & - sin α & 0 \\ sin α & cos α & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = cosαsinα0sinαcosα0001 xy1

其中, ( x , y ) (x,y) (x,y)是原始图像中的一个点, ( x ′ , y ′ ) (x′,y′) (x,y)是经过变换后的图像中的对应点。α 是旋转角度,旋转中心是图像原点,不是中心点,原点通常是左上角。

三维空间矩阵表示为:

1️⃣绕 x 轴旋转:

[ x ′ y ′ z ′ 1 ] = [ 1 0 0 0 0 cos ⁡ α − sin ⁡ α 0 0 sin ⁡ α cos ⁡ α 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha & 0 \\ 0 & \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = 10000cosαsinα00sinαcosα00001 xyz1

2️⃣绕 y 轴旋转:

[ x ′ y ′ z ′ 1 ] = [ cos ⁡ α 0 sin ⁡ α 0 0 1 0 0 − sin ⁡ α 0 cos ⁡ α 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} \cos \alpha & 0 & \sin \alpha & 0 \\ 0 & 1 & 0 & 0 \\ -\sin \alpha & 0 & \cos \alpha & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = cosα0sinα00100sinα0cosα00001 xyz1

3️⃣绕 z 轴旋转:

[ x ′ y ′ z ′ 1 ] = [ cos ⁡ α − sin ⁡ α 0 0 sin ⁡ α cos ⁡ α 0 0 0 0 1 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} \cos \alpha & -\sin \alpha & 0 & 0 \\ \sin \alpha & \cos \alpha & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = cosαsinα00sinαcosα0000100001 xyz1

其中, ( x , y , z ) (x,y,z) (x,y,z) 是原始图像中的一个点, ( x ′ , y ′ , z ′ ) (x′,y′,z') (x,y,z) 是经过变换后的图像中的对应点。 α α α是沿各轴的旋转角度。

4. 错切(Shearing)

错切变换是一种较为特殊的仿射变换,它会使图像在某个方向上发生倾斜。

二维空间矩阵表示为:

[ x ′ y ′ 1 ] = [ 1 s h x 0 s h y 1 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & sh_x & 0 \\ sh_y & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = 1shy0shx10001 xy1

其中, ( x , y ) (x,y) (x,y)是原始图像中的一个点, ( x ′ , y ′ ) (x′,y′) (x,y)是经过变换后的图像中的对应点。 s h x sh_x shx s h y sh_y shy分别是沿 x 轴和 y 轴的错切因子。

三维空间矩阵表示为:

1️⃣绕 x 轴错切:

[ x ′ y ′ z ′ 1 ] = [ 1 a b 0 0 1 0 0 0 0 1 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & a & b & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = 1000a100b0100001 xyz1

2️⃣绕 y 轴错切:

[ x ′ y ′ z ′ 1 ] = [ 1 0 0 0 c 1 d 0 0 0 1 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 & 0 \\ c & 1 & d & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = 1c0001000d100001 xyz1

3️⃣绕 z 轴错切:

[ x ′ y ′ z ′ 1 ] = [ 1 0 0 0 0 1 0 0 e f 1 0 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ e & f & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1 = 10e001f000100001 xyz1

其中, ( x , y , z ) (x,y,z) (x,y,z) 是原始图像中的一个点, ( x ′ , y ′ , z ′ ) (x′,y′,z') (x,y,z) 是经过变换后的图像中的对应点。 ( a , b , c , d , e , f ) (a,b,c,d,e,f) (a,b,c,d,e,f) 是错切参数,分别控制沿不同方向的错切程度。

基本变换的组合

通过矩阵乘法,我们可以将多个基本变换组合成一个复合变换。例如,二维空间下,先平移再旋转,其复合变换矩阵为:

[ x ′ y ′ 1 ] = [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} =\begin{bmatrix} cos α & - sin α & 0 \\ sin α & cos α & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} xy1 = cosαsinα0sinαcosα0001 100010txty1 xy1

其中,矩阵乘法的顺序决定了符合变换的顺序,靠前的操作在右边。

相关文章:

  • 计算机黑皮书191本分享pdf
  • 卷积神经网络(cnn,类似lenet-1,八)
  • ETL系列-数据抽取(Extract)
  • [AI 概念域] LangChain 生态工具概念解读(通俗解读)
  • [Linux]项目自动化构建工具-make/Makefile
  • 跟我学C++中级篇——定时器的设计
  • 初阶数据结构(C语言实现)——3顺序表和链表(3)
  • 《第十五部分》STM32之FLASH闪存(终结篇)
  • (九)趣学设计模式 之 桥接模式!
  • 综合练习 —— 递归、搜索与回溯算法
  • 第十五届蓝桥杯单片机组4T模拟赛三(第二套)
  • 区县级水司一体化抄表营业收费系统设计思路
  • Datawhale 数学建模导论二 笔记5 多模数据与智能模型
  • Rk3568驱动开发_新字符设备驱动原理_7
  • sessioncookie 2.0(示例篇)
  • 数据结构与算法-图论-最短路和其他的结合
  • 学睿德毅AI 赋能教育拓展短视频创作边界
  • 基于Electron的应用程序安全测试基础 — 提取和分析.asar文件的案例研究
  • 【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别
  • 深入xtquant:Python量化交易的桥梁与核心
  • 有没有做批发的网站/网站推广该怎么做
  • 网站开发技术技巧/开封seo公司
  • 河南省建设厅网站136号文件/百度霸屏推广一般多少钱
  • 动态web网站怎么做/新闻稿代写
  • 东莞网站搭建找哪里/抖音网络营销案例分析
  • 临沂哪里有做网站/网络营销文案策划