-
2021-10-24 20:30:45
2021SC@SDUSC
secp256k1曲线——Affine到Jacobian的转换
在libsecp256k1比特币密码算法开源库(四)中定义了有限域下椭圆曲线的相关运算,在那一篇中对于椭圆曲线几何加法运算的过程有了非常详细的说明。但是在那一篇中,对与不同的两点P和Q,计算其几何加法结果R必须要经过非常重要的一步,即求斜率m:
m = y P − y Q x P − x Q m o d p = ( y P − y Q ) ( x P − x Q ) − 1 m o d p m=\frac{y_P-y_Q}{x_P-x_Q} \,mod\,p=(y_P-y_Q)(x_P-x_Q)^{-1} mod\,p m=xP−xQyP−yQmodp=(yP−yQ)(xP−xQ)−1modp在这一步中不可避免地要求一个乘法逆元,即 ( x P − x Q ) − 1 (x_P-x_Q)^{-1} (xP−xQ)−1。计算乘法逆元可以使用扩展欧几里得算法,这个开销或许不是很大,但这里的 x P x_P xP和 x Q x_Q xQ都是非常大的数(BigInt),用扩展欧几里得算法计算相应的乘法逆元是非常困难的。除此之外,计算椭圆曲线的标量乘法也有非常关键的一步,也就是计算最开始两个相同数的几何加法,其中也要计算斜率m:
m = 3 x P 2 + a 2 y P m o d p = ( 3 x P 2 + a ) ( 2 y P ) − 1 m o d p m =\frac {3 x_P^2 + a} { 2 y_P }\, mod\,p=(3 x_P^2 + a)(2 y_P)^{-1}\, mod\,p m=2yP3xP2+amodp=(3xP2+a)(2yP)−1modp在这一步中还是不可避免地要求乘法逆元 ( 2 y P ) − 1 (2 y_P)^{-1} (2yP)−1。除此之外,在介绍椭圆曲线群中的元素中,除了那些满足椭圆曲线方程具有横纵坐标的点之外,我还提到一个“无穷远点”。这个无穷远点从何而来,本文将会进行解答。
那么在实际算法实现过程中,避开扩展欧几里得算法,以求更加快速高效地求大数的乘法逆元是很重要的一个问题。实际上,在椭圆曲线上点的表示有两种形式:仿射坐标Affine表示和射影坐标Projection表示,通过将椭圆曲线上的点坐标从仿射坐标转换到射影坐标中,就可以巧妙地避开扩展欧几里得算法。下面开始:
Affine 仿射坐标
虽然这里给仿射坐标放了一个title,但其实这里已经没有必要给仿射坐标讲太多东西了。之前几篇讲的椭圆曲线的方程表示和坐标运算其实都是基于仿射坐标的。也就是说,椭圆曲线的仿射方程就是 y 2 = x 3 + a x + b y^2=x^3+ax+b y2=x3+ax+b,在有限域中,这个方程也就表达为 y 2 = ( x 3 + a x + b ) m o d p y^2=(x^3+ax+b)\,mod\,p y2=(x3+ax+b)modp。也就是说,在仿射坐标下才存在要使用扩展欧几里得算法求解乘法逆元的问题。
Projection射影坐标
射影坐标分为:标准射影坐标、Jacobian加重射影坐标、Chudnovsky射影坐标。在椭圆曲线中使用的是Jacobian加重射影坐标,Chudnovsky射影坐标和这里的椭圆曲线没什么关系,所以不讲它。为了说明白Jacobian加重射影坐标,先从最基本的标准射影坐标开始。
标准射影坐标
在仿射坐标中,我们有椭圆曲线方程: y 2 = x 3 + a x + b y^2=x^3+ax+b y2=x3+ax+b,对应点的坐标就是 ( x , y ) (x,y) (x,y),射影坐标是三维的,一个点的坐标表示为 ( x , y , z ) (x,y,z) (x,y,z)。这里我们规定:
在标准射影坐标中,点 ( x , y , z ) (x,y,z) (x,y,z)对应仿射坐标中的点 ( x z , y z ) (\frac xz,\frac yz) (zx,zy);
同理有,在仿射坐标中的点 ( x , y ) (x,y) (x,y)对应标准射影坐标中的点 ( x , y , 1 ) (x,y,1) (x,y,1)。有了这样的一个对应关系,我们令椭圆曲线方程 y 2 = x 3 + a x + b y^2=x^3+ax+b\, y2=x3+ax+b中 x = x z \,x=\frac xz\, x=zx, y = y z \,y=\frac yz\, y=zy就得到了标准射影坐标中的椭圆曲线方程: y 2 z = x 3 + a x z 2 + b z 3 y^2z=x^3+axz^2+bz^3\, y2z=x3+axz2+bz3可以看到,由于点 ( x , y , z ) (x,y,z) (x,y,z)对应仿射坐标中的点 ( x z , y z ) (\frac xz,\frac yz) (zx,zy),这就使得z不能为0,如果z为零,在射影坐标中的点 ( 0 , y , 0 ) (0,y,0) (0,y,0)就找不到一个对应的仿射坐标值。但实际上椭圆曲线的点还是以射影坐标为准,也就是说就是有这样一个点 ( 0 , y , 0 ) (0,y,0) (0,y,0),于是在仿射坐标中称这个点为“无穷远点”,也就是在射影坐标中这个z=0的点。
有了上面的从仿射坐标到标准射影坐标的映射关系,可以定义在标准射影坐标下的几何加法运算。令P和Q为不相等的两点, P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1), Q ( x 2 , y 2 , z 2 ) Q(x_2,y_2,z_2) Q(x2,y2,z2),令 R ( x 3 , y 3 , z 3 ) R(x_3,y_3,z_3) R(x3,y3,z3),且R=P+Q(几何加法运算),标准射影坐标下的几何加法运算过程如下: λ 1 = x 1 z 2 λ 2 = x 2 z 1 λ 3 = λ 1 − λ 2 λ 4 = y 1 z 2 λ 5 = y 2 z 1 λ 6 = λ 4 − λ 5 λ 7 = λ 1 + λ 2 λ 8 = z 1 z 2 λ 9 = λ 3 2 λ 10 = λ 3 λ 9 λ 11 = λ 8 λ 6 2 − λ 7 λ 9 x 3 = λ 3 λ 11 y 3 = λ 6 ( λ 9 λ 1 − λ 11 ) − λ 4 λ 10 z 3 = λ 10 λ 8 \lambda_1=x_1z_2\\\lambda_2=x_2z_1\\\lambda_3=\lambda_1-\lambda_2\\\lambda_4=y_1z_2\\\lambda_5=y_2z_1\\\lambda_6=\lambda_4-\lambda_5\\\lambda_7=\lambda_1+\lambda_2\\\lambda_8=z_1z_2\\\lambda_9=\lambda_3^2\\\lambda_{10}=\lambda_3\lambda_9\\\lambda_{11}=\lambda_8\lambda_6^2-\lambda_7\lambda_9\\x_3=\lambda_3\lambda_{11}\\y_3=\lambda_6(\lambda_9\lambda_1-\lambda_{11})-\lambda_4\lambda_{10}\\z_3=\lambda_{10}\lambda_{8} λ1=x1z2λ2=x2z1λ3=λ1−λ2λ4=y1z2λ5=y2z1λ6=λ4−λ5λ7=λ1+λ2λ8=z1z2λ9=λ32λ10=λ3λ9λ11=λ8λ62−λ7λ9x3=λ3λ11y3=λ6(λ9λ1−λ11)−λ4λ10z3=λ10λ8最后得到的 x 3 , y 3 , z 3 x_3,y_3,z_3 x3,y3,z3即为得到的R点标准射影坐标。
对于标量乘法中,我们首先需要计算两个相等点P+P,即计算2P,令 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1), R ( x 3 , y 3 , z 3 ) R(x_3,y_3,z_3) R(x3,y3,z3),标准射影坐标运算过程如下:
λ 1 = 3 x 1 2 + a z 1 2 λ 2 = 2 y 1 z 1 λ 3 = y 1 2 λ 4 = λ 3 x 1 z 1 λ 5 = λ 2 2 λ 6 = λ 1 2 − 8 λ 4 x 3 = λ 2 λ 6 y 3 = λ 1 ( 4 λ 4 − λ 6 ) − 2 λ 5 λ 3 z 3 = λ 2 λ 5 λ_1 = 3x_1^2 +az^2_1\\λ_2 = 2y_1z_1\\λ_3 = y^2_1\\λ_4 = λ_3x_1z_1\\λ_5 = λ_2^2\\λ_6 = λ^2_1 −8λ_4\\ x_3 = λ_2λ_6\\y_3 = λ_1(4λ_4 −λ_6)−2λ_5λ_3\\z_3 = λ_2λ_5 λ1=3x12+az12λ2=2y1z1λ3=y12λ4=λ3x1z1λ5=λ22λ6=λ12−8λ4x3=λ2λ6y3=λ1(4λ4−λ6)−2λ5λ3z3=λ2λ5最后得到的 x 3 , y 3 , z 3 x_3,y_3,z_3 x3,y3,z3即为得到的R点标准射影坐标。上面的公式对于libsecp256k1开源库其实意义不大,在libsecp256k1开源库中使用的射影坐标是Jacobian加重射影坐标。
Jacobian加重射影坐标
Jacobian加重射影坐标与标准射影坐标方法类似,在Jacobian加重射影坐标中,一个射影点的坐标表示为 ( x , y , z ) (x,y,z) (x,y,z),这里我们规定:
在Jacobian加重射影坐标,点 ( x , y , z ) (x,y,z) (x,y,z)对应仿射坐标中的点 ( x z 2 , y z 3 ) (\frac {x}{z^2},\frac {y}{z^3}) (z2x,z3y);
同理有,在仿射坐标中的点 ( x , y ) (x,y) (x,y)对应Jacobian加重射影坐标中的点 ( x , y , 1 ) (x,y,1) (x,y,1)。有了这样的一个对应关系,我们令椭圆曲线方程 y 2 = x 3 + a x + b y^2=x^3+ax+b\, y2=x3+ax+b中 x = x z 2 \,x=\frac {x}{z^2}\, x=z2x, y = y z 3 \,y=\frac {y}{z^3}\, y=z3y就得到了Jacobian加重射影坐标中的椭圆曲线方程: y 2 = x 3 + a x z 4 + b z 6 y^2=x^3+axz^4+bz^6\, y2=x3+axz4+bz6同样可以看到,由于点 ( x , y , z ) (x,y,z) (x,y,z)对应仿射坐标中的点 ( x z 2 , y z 3 ) (\frac {x}{z^2},\frac {y}{z^3}) (z2x,z3y),当z为零,有射影坐标中的点 ( x , y , 0 ) (x,y,0) (x,y,0),该点同样的在仿射坐标中称为“无穷远点”,也就是在射影坐标中这个z=0的点。
有了上面的从仿射坐标到Jacobian加重射影坐标的映射关系,可以定义在Jacobian加重射影坐标下的几何加法运算。令P和Q为不相等的两点, P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1), Q ( x 2 , y 2 , z 2 ) Q(x_2,y_2,z_2) Q(x2,y2,z2),令 R ( x 3 , y 3 , z 3 ) R(x_3,y_3,z_3) R(x3,y3,z3),且R=P+Q(几何加法运算),Jacobian加重射影坐标下的几何加法运算过程如下: λ 1 = x 1 z 2 2 λ 2 = x 2 z 1 2 λ 3 = λ 1 − λ 2 λ 4 = y 1 z 2 3 λ 5 = y 2 z 1 3 λ 6 = λ 4 − λ 5 λ 7 = λ 1 + λ 2 λ 8 = λ 4 + λ 5 x 3 = λ 6 2 − λ 7 λ 3 2 λ 9 = λ 7 λ 3 2 − 2 x 3 y 3 = ( λ 9 λ 6 − λ 8 λ 3 3 ) / 2 z 3 = z 1 z 2 λ 3 λ_1=x_1z_2^2\\λ_2=x_2z_1^2\\λ_3 = λ_1 −λ_2\\λ_4 = y_1z^3_2\\λ_5 = y_2z^3_1\\λ_6 = λ_4 −λ_5\\λ_7 = λ_1 +λ_2\\ λ_8 = λ_4 +λ_5\\x_3 = λ^2_6 −λ_7λ^2_3\\λ_9 = λ_7λ^2_3 −2x_3\\y_3 = (λ_9λ_6 −λ_8λ_3^3)/2\\z_3 = z_1z_2λ_3 λ1=x1z22λ2=x2z12λ3=λ1−λ2λ4=y1z23λ5=y2z13λ6=λ4−λ5λ7=λ1+λ2λ8=λ4+λ5x3=λ62−λ7λ32λ9=λ7λ32−2x3y3=(λ9λ6−λ8λ33)/2z3=z1z2λ3最后得到的 x 3 , y 3 , z 3 x_3,y_3,z_3 x3,y3,z3即为得到的R点Jacobian加重射影坐标。
对于标量乘法中,我们首先需要计算两个相等点P+P,即计算2P,令 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1), R ( x 3 , y 3 , z 3 ) R(x_3,y_3,z_3) R(x3,y3,z3),Jacobian加重射影坐标运算过程如下:
λ 1 = 3 x 1 2 + a z 1 4 λ 2 = 4 x 1 y 1 2 λ 3 = 8 y 1 4 x 3 = λ 1 2 − 2 λ 2 y 3 = λ 1 ( λ 2 − x 3 ) − λ 3 z 3 = 2 y 1 z 1 λ_1 = 3x_1^2 +az^4_1\\λ_2 = 4x_1y^2_1\\λ_3 = 8y^4_1\\x_3 = λ^2_1 −2λ_2\\y_3 = λ_1(λ_2 −x_3)−λ_3\\z_3 = 2y_1z_1 λ1=3x12+az14λ2=4x1y12λ3=8y14x3=λ12−2λ2y3=λ1(λ2−x3)−λ3z3=2y1z1最后得到的 x 3 , y 3 , z 3 x_3,y_3,z_3 x3,y3,z3即为得到的R点Jacobian加重射影坐标。可以看到,在这两个过程中没有除法运算,也就不需要定义乘法逆元。那么这时候想要避开扩展欧几里得算法求乘法逆元就很简单了:只需将椭圆曲线在仿射坐标中的点,转化为在射影坐标中的点,用射影坐标几何加法运算得到结果点,最后再把这个点的射影坐标转化为仿射坐标就可以了。
libsecp256k1的坐标转换
在libsecp256k1中就采用了从仿射坐标到射影坐标再到仿射坐标的过程。
libsecp256k1采用的坐标就是Jacobian加重射影坐标。这个方法避开了扩展欧几里得算法求乘法逆元,大大提高了算法效率。同时注意,在secp256k1中定义椭圆曲线参数a=0,b=7,那么就可以得到Jacobian射影坐标中的secp256k1椭圆曲线方程: y 2 = x 3 + 7 z 6 y^2=x^3+7z^6\, y2=x3+7z6同样地,把a=0代入到上面Jacobian加重射影坐标几何加法运算公式中,就可以得到secp256k1在射影坐标中的几何加法运算过程。
更多相关内容 -
仿射坐标系的平行投影 (2004年)
2021-05-26 15:26:35空间仿射坐标系的平行投影问题在计算机图形识别、跟踪目标及三维实体重建中具有重要意义。通过分析广义投影公式指出了各种投影之间的内在联系,并由广义投影公式推导出以平面图形叻为空间仿射坐标系平行投影的充要... -
仿射坐标系中椭圆曲线算法的新快速算法
2021-03-23 17:15:11仿射坐标系中椭圆曲线算法的新快速算法 -
仿射变换和透视变换和图像坐标系、相机坐标系和世界坐标系的定义
2020-07-11 16:02:06仿射变换和透视变换和图像坐标系、相机坐标系和世界坐标系的定义开篇仿射变换透视变换图像坐标系、相机坐标系和世界坐标系三维的点投影在二维平面上坐标系和坐标变换公式合体Zhang方法 开篇 本文主要介绍计算机视觉...仿射变换和透视变换和图像坐标系、相机坐标系和世界坐标系的定义
开篇
本文主要介绍计算机视觉的位姿估计,相机标定原理,和zhang方法求解内外相机参数。
仿射变换
这个是一般的仿射变换的公式。
为了能够更好的理解它,我们首先来看看下面几幅图:
上面的x和y分别代表像素的坐标,然后x0,y0代表的是平移量。然后生成了新的位置u和v。然后旋转也是一样的。首先这个旋转一定要在原点,所以一般opencv的第一步就是把这个图像的中心放到原点。最终在平移回去
上面这个是缩放的公式,都是大同小异,一样的到底。把x放大Sx倍,把y放大Sy倍。那么现在再来看看咱们上面的那仿射变换的公式。
其中A中的对角线决定 缩放,反对角线决定 旋转 或 错切。
这就好比缩放的公式乘以了旋转的公式加上了平移的变化。
这里有一点要注意的就是多边形的图片不能用仿射变换,因为会导致四边形的边消失,可以看看这个:https://www.zhihu.com/question/20666664/answer/15790507
(个人认为是在Shear的过程中,多边形可能会在某个值重合成一条线,这里我也不太明白,有大牛可以告知一下)
这里一般来说,opencv中的实现需要咱们提供至少6个点,其中三个点是输入,后三个是输出。透视变换
先上一张图,其实我觉得透视变换就是仿射变换的升级版。
透视变换就是从左图转换到了右图。相信也很容易理解。相当于换了个视角来看事物。如下图:
下面来看看公式:
opencv的实现和仿射变换差不多,不过这个是需要至少4个点集才能进行。就比如上面那个公路的图,首先自己要决定点在哪里,这个图的话肯定选择的是白线上的点,得到坐标之后,如果想变成一个类似于长方形的(就是右图)的图像的话,这里的点的坐标也是需要自己决定的,如果想要使刚刚左图中选择的点成为一些比如平行等关系,需要自己合理安排一下,然后套到公式里面进行暴力求解,求得这9个值。图像坐标系、相机坐标系和世界坐标系
图像左边西和相机坐标系和时间坐标系都是可以用过线性变化来互相转化的。先看看这幅图:
图中壶的位置是图像坐标系,也可以说是物体坐标系,两个相机有两个不同的相机坐标系,然后相机和物体存在的这个房间或者什么地方可以被叫做世界坐标系。
怎么样才能从一个坐标系变换到另外一个坐标系呢?
首先来看看坐标系是如何旋转的。
同理,上图是绕Z轴旋转的示意图,当然也可以绕x或y轴旋转。
那么从一个坐标系可以通过各种旋转加平移变成另外一个坐标系。通过上面的等式,我们可以看到物体点P通过旋转位移便可以得到在相机坐标系的坐标三维的点投影在二维平面上
这个说白了就是一个小孔成像模型,摄像机通过小孔,把成像映射在平面的点上。
对应的公式就是上面图右下角的公式,便可以得到对应的二维平面坐标坐标系和坐标变换
首先,图像坐标系和像素坐标系都是二维的。只不过他们的度量单位和原点不同而已。像素坐标系是以每个像素为基本单位,就好比说咱们一副3*3的图像一共有9个像素一个道理。但图像坐标系的单位是mm,dx,dy分别代表的是一个像素点的长和宽,单位是mm。公式合体
其中,算是外参矩阵,后面的RT矩阵是内参矩阵。看下图
很明显我们最后有了12个未知数,然后每一个点可以为我们带来二个式子。
所以现在就是解方程了,只要有6个点切非共面(如果不满足这个的话求出来的解不满足正交矩阵,咱们的R旋转矩阵一定是正交矩阵),变可以得出内参和外参。
需要注意的是这里的求出来的解是内参加外参的一个矩阵。所以这里需要QR分解出来R。具体的求解方法可以看看opencv solvePnp函数。
还有就是这个内参数:
现以NiKon D700相机为例,焦距 f = 35mm 最高分辨率:4256×2832 传感器尺寸:36.0×23.9 mm
根据以上定义可以有:
u0= 4256/2 = 2128 v0= 2832/2 = 1416 dx = 36.0/4256 dy = 23.9/2832
fx = f/dx = 4137.8 fy = f/dy = 4147.3
分辨率可以从显示分辨率与图像分辨率两个方向来分类。
[1]显示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。
[2]图像分辨率则是单位英寸中所包含的像素点数,其定义更趋近于分辨率本身的定义。Zhang方法
需要小心的是,当我们使用真实的数据求解时,将计算得到的r向量放在一起(R=(r1,r2,r3)),我们并不能得到精确的旋转矩阵R,使得R为正交阵。为了解决这个问题,我们常使用强制的方法,即对R进行奇异值分解,R=UDVT,U,V为正交阵,D为对角阵,如果R是正交阵,那么奇异值分解后的对角阵D是单位阵,那么我们将单位阵I代替对角阵D,进而重构出满足正交条件的R.
奇异值分解的含义: https://www.cnblogs.com/endlesscoding/p/10033527.html
从上面的图片的压缩结果中可以看出来,奇异值可以被看作成一个矩阵的代表值,或者说,奇异值能够代表这个矩阵的信息。当奇异值越大时,它代表的信息越多。因此,我们取前面若干个最大的奇异值,就可以基本上还原出数据本身。
我对这个的理解就是咱们一般用的照相机之类的拍照都会有一定的误差,而这个误差就出现在透镜的凸凹的状况。一般我们用一个相机拍摄一个三维的东西,咱们会有物体真实的角点,和图片上的角点,然后用这些先计算一遍,不考虑畸变的外参数和内参数。然后在通过一个叫做Brown的方法来计算畸变参数。然后我们就可以用这些参数去估计坐标系旋转。 -
OpenSSL密码库算法笔记——第5.4.1章 椭圆曲线上点的仿射坐标表示
2019-03-05 09:11:43椭圆曲线上点的表示分成仿射坐标系表示和射影坐标表示形式,首先来看看仿射坐标表示形式。 素域Fp上的椭圆曲线E由(仿射)方程y2=x3+ax+b决定,设曲线上的两个点为P1=(x1,y1),P2=(x2,y2),并且记椭圆曲线加法...椭圆曲线上点的表示分成仿射坐标系表示和射影坐标表示形式,首先来看看仿射坐标表示形式。
素域Fp上的椭圆曲线E由(仿射)方程y2=x3+ax+b决定,设曲线上的两个点为P1=(x1,y1),P2=(x2,y2),并且记椭圆曲线加法群的单位元为,称为无穷远点或者零点。如果P1≠-P2,则P3=P1+P2=(x3,y3),可以由如下公式计算出来:
当P1≠P2时,计算P3需要1次逆运算、2次乘法运算和1次平方运算,简记为1I+2M+1S(这里的I表示逆运算,M表示乘法运算,S表示平方运算,下同)。由于素域上的加法和减法比逆、乘法和平方快的多(参见[3],表2),所以可以忽略加法和减法的时耗,甚至小常数(比如2、3)与大整数的乘法也可以忽略不计。
当P1=P2时,计算P3需要1I+2M+2S。
然而,计算素域Fp上的逆是很耗时的(参见[3],§3.6),所以采用射影坐标以尽量避免做逆运算。
-
仿射坐标公式推导
2014-08-14 17:39:52 -
halcon学习拓展系列—《halcon精髓之坐标系仿射篇》
2020-06-29 14:55:584、九点标定中的图像机械坐标系仿射(涉及较多二维点集的坐标系仿射) 5、总结 1、图像定位中的矩形框仿射(坐标系仿射) vector_angle_to_rigid( : :Row1,Column1,Angle1,Row2,Column2,Angle2:... -
自由质点测地线仿射参量时空坐标系
2019-12-29 04:48:32自由质点测地线仿射参量时空坐标系,卞保民,赖小明,以时序t为自变量,可给出自由质点空间测地线的参数方程组{Xi(t)},借助于仿射参量R(t)变换实现测地线微分方程的齐次化,推导出仿射参量R� -
图像坐标空间变换:仿射变换(Affine Transformation)
2020-05-04 19:32:44文章目录仿射变换(Affine Transformation)简介仿射变换的基础类型恒等尺度旋转剪切水平剪切垂直剪切镜像平移仿射变换通式一个需要小心的坑:图像索引与坐标的关系求解仿射变换矩阵一种特殊的仿射变换及变换矩阵... -
齐次坐标与平移仿射变换(MATLAB)
2020-06-09 11:23:17在齐次坐标系下进行图像的几何变换,我们把他称之为仿射变换。一个三维的齐次坐标轴下的仿射变换,就是线性运算。运算过程如下: 在matlab环境下实现仿射变换 %放射变换实现图像平移 F = imread('cameraman.tif'); ... -
笛卡尔坐标系与仿射变换.
2013-04-06 20:19:30笛卡尔坐标系与测量平面坐标系之间的仿射变换. -
抛物线坐标系及其度规、仿射联络 (2010年)
2021-05-30 12:14:44抛物线坐标系是一种特殊的坐标系,对于静止质量类似于Coulomb势对称分布的物质,运用该坐标系有助于获得广义相对论时空下爱因斯坦引力场方程的近似解甚至解析解。本文详细地描述了它的坐标变量、坐标面及线元、体元... -
平面坐标转换-四参数仿射变换(源码)
2021-01-12 08:00:18通过一个以上的控制点,计算四参数转换参数,并利用转换参数将其他测量点转换成不同的坐标系下的坐标! 通过一个以上的控制点,计算四参数转换参数,并利用转换参数将其他测量点转换成不同的坐标系下的坐标! -
计算机视觉基础(一)——左右手坐标系转换时R和T的具体形式分析
2016-11-18 12:44:39在科学计算和仿真中,经常涉及到左手系和右手系的转换,这里我们总结一下转换的规律,以备使用。 -
MATLAB通过两个坐标系对应点计算转换关系
2018-10-27 17:51:39参考推广: ...matlab通过两个坐标系对应点计算转换关系 https://blog.csdn.net/sinat_29886521/article/details/77506426?utm_source=blogxgwz0 python计算两个对应点集之间的旋转矩阵R和转移矩阵T ... -
什么是仿射空间里的直线方程和平面方程
2017-01-16 17:47:36在仿射空间中,点与点之间做差可以得到向量,点与向量做加法将得到另一个点.设任意两个有序点P、Q对应于n维矢量空间中的一个矢量a,那么过两点的直线方程为:(1-t)P + tQ笛卡尔平面是一个仿射空间,那么空间两点(a... -
相机成像---世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
2022-03-01 09:32:08新学期第一天开始写的这篇文章,看看我啥时候能把他发...相机焦距f,相机之间距离为b,右上角为目标位置P(x,y),目标的水平坐标为x,相机离目标垂直距离(所求目标距离相机的深度)为z。 如果要计算深度z,必须. -
http://blog.sina.com.cn/s/blog_4b700c4c0100ou6y.html 关于仿射坐标
2012-07-10 12:43:32笛卡尔坐标系 笛卡尔坐标系就是直角坐标系和斜角坐标系的统称。相交于原点的两条数轴,构成了平面放射坐标系(http://www.docin.com/p-4003026.html)。如两条数轴上的度量单位相等,则称此放射坐标系为笛卡尔... -
地理坐标系和投影坐标系之间的关系 基本概念
2021-01-18 09:29:15地理坐标系和投影坐标系之间的关系 基本概念 地理坐标系:为球面坐标。 参考平面地是椭球面,坐标单位:经纬度; 投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等; 地理坐标转换到投影坐标... -
空间直角坐标转换之仿射变换(转)
2009-03-18 15:53:00空间直角坐标转换之仿射变换一、引言工作开发中常常会遇到坐标系转换的问题,关于如何实现不同坐标系之间的转换的论述非常之多,基于实际应用项目,大都提出了一种较好的解决方法。两年前,我也从网上下载了一篇文章... -
OpenCV图像旋转、缩放、翻转、仿射变换的坐标变换计算
2022-03-28 13:48:07下面说几种OpenCV下常用的坐标变换计算,旋转、缩放、翻转和仿射变换,完全同步对应OpenCV的图像处理操作。 一、旋转+缩放+翻转 代码展示的是主要逻辑,稍微改一改就可以用到项目里去。m_img是原图,m_src_corners... -
霍夫直线变换 python版
2021-01-29 10:43:42霍夫直线变换 python版 霍夫变换是一种常用的在图像中查找...对于霍夫直线变换首先需要明确的是变换之后的空间并不是传统意义上的极坐标系,而是 Hesse 仿射坐标系 对于图像空间上的一个点而言,对应 Hesse 仿射.. -
week11-三角形的仿射变换
2020-05-06 11:42:43在计算机图形学中,人们一直都在处理变形的三角形,因为任何3D表面都可以由三角形近似。图像可以分解为三角形并变形。...请注意,使用仿射变换可以将正方形的形状更改为任何方向和比例的平行四边... -
【从零开始学习SLAM】坐标变换 像素坐标系 图像坐标系 相机坐标系 相机归一化坐标系 世界坐标系
2020-11-05 21:06:12按照十四讲的顺序我们首先接触的是像素坐标系、图像坐标系、相机坐标系、相机归一化坐标系、世界坐标系,这里学着学着就蒙了,所以我建议先学习投影模型,我认为二者可以理解为互逆过程。 -
欧氏-相似-仿射-射影几何
2017-02-19 22:59:06欧式-相似-仿射-射影几何 从欧氏几何到射影几何, -
通过 OpenLayers 加载CAD导出位图 和 math.js 构造的仿射变换实现地理坐标系到任意CAD图上像素坐标系的互转
2019-11-18 01:23:28WebGIS开发过程中会遇到这样一种情况:需要使用OpenLayers加载一个未校准的CAD导出的位图;并且还需要通过经纬度坐标...由于从CAD导出的位图并不带有定位信息,所以需要通过仿射变换将图上的像素坐标转换到地理坐标... -
rasterio实用教程(4)——坐标系转换
2021-02-09 23:17:57在测绘领域中提到的坐标系有两种,一种是地理坐标系,用经纬度高程来表达;另一种是投影坐标系,即经过投影变换后的平面坐标系,通常是xy表达。 坐标系转换有四种情况: 地理坐标系转投影坐标系(也叫大地坐标正算... -
坐标系
2020-03-11 11:06:23坐标系(coordinate system、CS) 由两个、三个甚至更多个...坐标轴不必相互垂直的仿射(affine)坐标系;用经纬度、高程来确定点位置的椭球面(ellipsoidal)坐标系等。 坐标参照系(coordinate reference system... -
空间直角坐标转换之仿射变换(转)
2010-01-16 10:16:00一、引言 工作开发中常常会遇到坐标系转换的问题,关于如何实现不同坐标系之间的转换的论述非常之多,基于实际应用项目,大都提出了一种较好的解决方法。两年前,我也从网上下载了一篇文章——《坐标系转换公式》... -
Slicer学习笔记(三十六)slicer坐标系
2021-12-31 23:11:18Slicer学习笔记(三十六)slicer坐标系1、坐标系统1.1、世界坐标系1.2、解剖坐标系1.3、图像坐标系1.4、图像变换1.5、二维示例或计算IJtoLS矩阵1.6、与其他软件/约定的关系1.7、参考 后面几篇博客以Slicer学习笔记...