图像的几何变换
Posted Matrix_11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的几何变换相关的知识,希望对你有一定的参考价值。
图像的几何变换
在图像处理中,我们经常会进行两种类型的操作,一种是像素值的变换,最常见的比如直方图均衡,对比度,颜色的变换,这一类都属于像素值的变换;还有一种是几何变换,比如常见的旋转,平移,仿射变换,透视变换等。
- 像素值变换:这种变换,主要改变像素值的大小,但不会改变像素的坐标
- 几何变换:这种变换,会改变像素原有的坐标关系,但一般不会改变像素值
接下来,我们就来看看图像常见的一些几何变换
当我们讨论几何变换的时候,我们首先需要建立一个坐标系,最常见的就是笛卡尔坐标系,以二维空间为例,笛卡尔坐标系,以相互垂直的两个坐标轴进行表示,我们的图像一般也是用笛卡尔坐标系来表示,我们看到的图像都是水平方向和垂直方向相互垂直的一个矩形,所以图像也是建立在笛卡尔坐标系下的,而且图像的原点也是两个坐标轴相交的点,只不过在图像上,两个坐标轴的交点是在图像的四个角上,我们一般就以图像的左上角作为原点。所以图像一般可以表示成:
f ( x , y ) , 0 ≤ x ≤ N , 0 ≤ y ≤ M f(x, y), \\quad 0 \\leq x \\leq N, \\quad 0 \\leq y \\leq M f(x,y),0≤x≤N,0≤y≤M
上面的式子表示了一个有 M 行 N 列的图像。
那么,几何变换,也就是坐标系的变换,简单来说,就是从一个坐标系,变换到另一个坐标系下。所以几何变换,一般会涉及到两个坐标系,一个称为原坐标系,一个称为目标坐标系。可以表示成如下所示:
x ′ = g ( x ) y ′ = h ( y ) \\beginmatrix x' = g(x)\\\\ y' = h(y) \\endmatrix x′=g(x)y′=h(y)
上面的 x ′ , y ′ x', y' x′,y′ 表示目标坐标系,而 x , y x, y x,y 表示原有的坐标系, g , h g, h g,h 分别表示变换关系,一般是一个线性函数,如果写成矩阵,就如下所示:
[ x ′ y ′ ] = A [ x y ] \\beginbmatrix x' \\\\ y' \\endbmatrix = \\mathbfA \\beginbmatrix x \\\\ y \\endbmatrix [x′y′]=A[xy]
借助矩阵的表达形式,我们来看看几种常见的几何变换,图像最常见的几种几何变换有缩放,旋转,平移等
图像缩放
图像的缩放就是我们常说的 scale 变换:
x ′ = a x y ′ = b y \\beginmatrix x' = ax\\\\ y' = by \\endmatrix x′=axy′=by
如果写成矩阵形式,可以表示成:
[ x ′ y ′ ] = [ a 0 0 b ] [ x y ] \\beginbmatrix x' \\\\ y' \\endbmatrix = \\beginbmatrix a & 0 \\\\ 0 & b \\endbmatrix \\beginbmatrix x \\\\ y \\endbmatrix [x′y′]=[a00b][xy]
图像旋转
图像的旋转也是常见的一种几何变换,图像的旋转可以表示成:
x ′ = x cos ( θ ) − y sin ( θ ) y ′ = x sin ( θ ) + y cos ( θ ) \\beginmatrix x' = x \\cos(\\theta) - y \\sin(\\theta) \\\\ y' = x \\sin(\\theta) + y \\cos(\\theta) \\endmatrix x′=xcos(θ)−ysin(θ)y′=xsin(θ)+ycos(θ)
显然,这个也可以表示成矩阵形式:
[ x ′ y ′ ] = [ cos ( θ ) − sin ( θ ) sin ( θ ) cos ( θ ) ] [ x y ] \\beginbmatrix x' \\\\ y' \\endbmatrix = \\beginbmatrix \\cos(\\theta) & -\\sin(\\theta) \\\\ \\sin(\\theta) & \\cos(\\theta) \\endbmatrix \\beginbmatrix x \\\\ y \\endbmatrix [x′y′]=[cos(θ)sin(θ)−sin(θ)cos(θ)][xy]
图像平移
图像的平移,也是常见的一种变换,
x ′ = x + t x y ′ = y + t y \\beginmatrix x' = x + t_x\\\\ y' = y + t_y \\endmatrix x′=x+txy′=y+ty
想必大家注意到,上面这个表达式,无法用一个 $ 2 \\times 2$ 的矩阵来表示,为了能将运算用矩阵运算统一起来,我们引入齐次坐标系,在齐次坐标系下,所有的几何变换都可以用矩阵进行表示。
齐次坐标
齐次坐标就是在原有的坐标的基础上再增加一个维度,如果是二维的坐标,我们就用三维的齐次坐标来表示:
[ x ′ y ′ ] ⇒ [ x ′ y ′ 1 ] \\beginbmatrix x' \\\\ y' \\endbmatrix \\Rightarrow \\beginbmatrix x' \\\\ y' \\\\ 1 \\endbmatrix [x′y′]⇒⎣⎡x′y′1⎦⎤
引入齐次坐标之后,图像的平移也可以纳入矩阵的运算当中:
- 平移
[ x ′ y ′ 1 ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] \\beginbmatrix x' \\\\ y' \\\\ 1 \\endbmatrix = \\beginbmatrix 1 & 0 & t_x \\\\ 0 & 1 & t_y \\\\ 0 & 0 & 1 \\endbmatrix \\beginbmatrix x \\\\ y \\\\ 1 \\endbmatrix ⎣⎡x′y′1⎦⎤=⎣⎡100010txty1⎦⎤⎣⎡xy1⎦⎤
而前面介绍的缩放和旋转也可以用齐次坐标来表示:
- 缩放:
[
x
′
y
′
1
]
=
[
a
0
0
0
以上是关于图像的几何变换的主要内容,如果未能解决你的问题,请参考以下文章