图像处理之基础---仿射变换

几种典型的仿射变换:

  public static AffineTransform getTranslateInstance(doubl

仿射变换-例

e tx, double ty)

  平移变换,将每一点移动到(x+tx, y+ty),变换矩阵为:

  [ 1 0 tx ]

  [ 0 1 ty ]

  [ 0 0 1 ]

  (译注:平移变换是一种“刚体变换”,rigid-body transformation,中学学过的物理,都知道啥叫“刚体”吧,就是不会产生形变的理想物体,平移当然不会改变二维图形的形状。同理,下面的“旋转变换”也是刚体变换,而“缩放”、“错切”都是会改变图形形状的。)

  public static AffineTransform getScaleInstance(double sx, double sy)

  

  缩放变换,将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵为:

  [ sx 0 0 ]

  [ 0 sy 0 ]

  [ 0 0 1 ]

  当sx=sy时,称为尺度缩放,sx不等于sy时,这就是我们平时所说的拉伸变换。

  public static AffineTransform getShearInstance(double shx, double shy)

  

  剪切变换,变换矩阵为:

  [ 1 shx 0 ]

  [ shy 1 0 ]

  [ 0 0 1 ]

  相当于一个横向剪切与一个纵向剪切的复合

  [ 1 0 0 ][ 1 shx 0 ]

  [ shy 1 0 ][ 0 1 0 ]

  [ 0 0 1 ][ 0 0 1 ]

  (译注:“剪切变换”又称“错切变换”,指的是类似于四边形不稳定性那种性质,街边小商店那种铁拉门都见过吧?想象一下上面铁条构成的菱形拉动的过程,那就是“错切”的过程。)

  public static AffineTransform getRotateInstance(double theta)

  


典型的仿射变换-平移变换


典型的仿射变换-缩放变换


典型的仿射变换-剪切变换


典型的仿射变换-旋转变换


典型的仿射变换-旋转变换

?

编辑本段相关例子

  

  旋转变换1,目标图形围绕原点逆时针旋转theta弧度,变换矩阵为:

  [ cos(theta) -sin(theta) 0 ]

  [ sin(theta) cos(theta) 0 ]

  [ 0 0 1 ]

  public static AffineTransform getRotateInstance(double theta, double x, double y)

  

  旋转变换2,目标图形以(x, y)为轴心逆时针旋转theta弧度,变换矩阵为:

  [ cos(theta) -sin(theta) x-x*cos+y*sin]

  [ sin(theta) cos(theta) y-x*sin-y*cos ]

  [ 0 0 1 ]

  相当于两次平移变换与一次原点旋转变换的复合:

  [1 0 x][cos(theta) -sin(theta) 0][1 0- x]

  [0 1 y][sin(theta) cos(theta) 0][0 1 -y]

  [0 0 1 ][ 0 0 1 ][0 0 1]

  这里是以空间任一点为圆心旋转的情况。

http://blog.csdn.net/carina197834/article/details/8090467

时间: 2024-10-10 02:20:55

图像处理之基础---仿射变换的相关文章

图像处理之基础---卷积傅立叶变换中的复数

整个看FFT过程中复数一直很折磨我. 原本的实数的东西通过复数表达很像旋转矩阵用quaternion来表达,尽管旋转vector还是要用matrix来做,但是通过用quaternion表达的旋转意义可以做插值等很多快速的操作,而且内存消耗也小,在做完这些操作之后再转成matrix用就好了. 复数表达也是类似. a+bi = M*(cos(theta)+sin(theta)*i)----极坐标 cos(x) + sin(x)*i = exp(x*i)----欧拉公式 这个用欧拉公式转出来的exp(

图像处理之基础---内积、点积

定义在数学中,数量积(dotproduct;scalarproduct,也称为标量积.点积.点乘)是接受在实数R上的两个矢量并返回一个实数值标量的二元运算.它是欧几里得空间的标准内积.两个矢量a=[a1,a2,…,an]和b=[b1,b2,…,bn]的点积定义为:a·b=a1b1+a2b2+……+anbn使用矩阵乘法并把(纵列)矢量当作n×1矩阵,点积还可以写为:a·b=a^T*b,这里的a^T指示矩阵a的转置. 内积(inner product),又称 数量积(scalar product).

图像处理之基础---卷积,滤波,平滑

/*今天师弟来问我,CV的书里到处都是卷积,滤波,平滑……这些概念到底是什么意思,有什么区别和联系,瞬间晕菜了,学了这么久CV,卷积,滤波,平滑……这些概念每天都念叨好几遍,可是心里也就只明白个大概的意思,赶紧google之~ 发现自己以前了解的真的很不全面,在此做一些总结,以后对这种基本概念要深刻学习了~*/ 1.图像卷积(模板) (1).使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)

图像处理之基础---二维卷积运算原理剖析

卷积运算(Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表示函数f 与经过翻转和平移与g 的重叠部分的累积.如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广.假设: f(x),g(x)是R1上的两个可积函数,并且积分是存在的.这样,随着 x 的不同取值,这个积分就定义了一个新函数h(x),称为函数f 与g 的卷积,记为h(x)=(f*g)(x). 两个向量卷积,说白了就是多项式乘法.下面用个矩阵例子说明其工作原理: a和d的卷积就是

图像处理之基础---卷积模板简介

1.使用模板处理图像相关概念:       模板:矩阵方块,其数学含义是一种卷积运算. 卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别与卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值. 卷积核:卷积时使用到的权,用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行.列都是奇数,是一个权矩阵. 卷积示例: 假设3 * 3的像素区域R与卷积核G分别为: 则卷积运算为: R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 +

图像处理之基础---卷积模板运算

1.使用模板处理图像相关概念: 模板:矩阵方块,其数学含义是一种卷积运算.      卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相                乘,所有乘积之和作为区域中心像素的新值.      卷积核:卷积时使用到的权用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行.列都是奇数,              是一个权矩阵.      卷积示例:              3 * 3 的像素区域R与卷积核G的卷积运算: 

图像处理之基础---矩阵求逆实现

最近做一个加密算法遇到需要计算矩阵的逆,闲着无聊,记录一下,以后免得再麻烦. [cpp] view plaincopyprint? #include #include #include #define MAX 20 #define E 0.000000001 /** * 计算矩阵src的模 */ double calculate_A( double src[][MAX], int n ) { int i,j,k,x,y; double tmp[MAX][MAX], t; double resul

图像处理之基础---频域分析

1.频域值得坐标轴 1.在傅里叶变换中,低频主要决定图像在平滑区域中总体灰度级的现实,而高频决定图像细节部分,如边缘和噪声: 滤波器: 使低频通过而使高频衰减的滤波器称为“低通滤波器” 相反特性的滤波器 称为“高通滤波器” 被低通滤波的图像比原始图像少了一些尖锐的细节部分,因为高频部分已被衰减.同样,被高通滤波的图像在平滑区域 中将减少一些灰度 级的变化,并突出过渡(边缘)灰度级的细节.这样的图像将更为锐化 preference:http://www.cnblogs.com/itchq/p/38

图像处理之基础---彩色转灰度算法优化

File:      StudyRGB2Gray.txtName:      彩色转灰度算法彻底学习Author:    zyl910Version:   V1.0Updata:    2006-5-22 一.基础 对于彩色转灰度,有一个很著名的心理学公式:Gray = R*0.299 + G*0.587 + B*0.114 二.整数算法 而实际应用时,希望避免低速的浮点运算,所以需要整数算法. 注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:Gray = (R*2