AutoCAD坐标与图像坐标

AutoCAD坐标与图像坐标

(python二次开发AutoCAD进行栅格图像处理前言理论)

坐标系之间的联系

今天给各位简单介绍一下在AutoCAD中,AutoCAD坐标系与图像的图像坐标系之间的关系,偏理论性质,希望各位看的不要太无聊。后续会介绍AutoCAD如何对栅格图像进行开发。

我们知道,坐标系使用量化的思想去描述某一事物相对于其他事物之间的关系、位置。坐标系是建立图形与数之间对应联系的参考系,用以描述某一图形或者物体相对于该坐标系下原点的位置。能够直观方便的记录图形的几何信息、大小、位置。往往我们在描述某一个场景或者物体时,在不同的参考系下使用到的坐标系也不同。因此我们需要找到不同坐标系之间的关系。一般的说,表达像点位置的坐标系统应该直接与像点的坐标量测相联系,而表达地面点位置的坐标系统则应直接与大地测量的坐标系统相联系。

在计算机图形学中,在像面上用以表示像点位置的坐标系叫做像平面坐标系,图像中的像素按行列次序排列成矩阵形式,图像坐标系为左手坐标系,以像素为坐标单位。往往在读取某一像点的位置时,是计算该像点到相片左上角点的水平距离与垂直距离,即使用像素构成的二维坐标系来表示该像素点所在的位置。其坐标系的构建往往以水平方向向右作为x轴,顺时针旋转90°作为y轴,原点为相片的左上角点。

在AutoCAD软件中,有其自定义的坐标系,该坐标系为右手坐标系,以作图区域左下方为原点,水平方向向右作为x轴,逆时针旋转90°作为y轴,垂直屏幕向外作为z轴。由于我们在插入栅格图像时,往往是二维的平面图形,因此我们认为二维图元的z轴坐标均为0。在AutoCAD插入栅格图像时,如果有定位文件,那么即可根据定位文件中插入点,以及像素的分辨率确定栅格图像所在的位置。例如某一栅格图像的定位文件如下:

32.0000000000 a 0.0000000000 b 0.0000000000 c -32.0000000000 d 12623888.0000000000 e 4120559.9999999981 f

即可根据该定位文件实现图像的定位,此时图像中的每一像素在AutoCAD坐标系下所代表的长度为32米,插入点为(e,f)。

因此我们需要找到AutoCAD坐标系与图像坐标系的关系。我们认为在AutoCAD中坐标系为XOY坐标系,图像坐标系为xoy坐标系。因此如图所示: 在上图中,AutoCAD坐标系XOY下一点(X,Y)与图形坐标系xoy下一点(x,y) 相同,且已知图像的左下角点在AutoCAD坐标系下的坐标为(X0,Y0),右上角点在AutoCAD坐标系下的坐标为(X1,Y1),栅格图像的像素行数为high,列数为length。即可根据其对应的关系找到AutoCAD坐标系与图形坐标系之间的关系。 { [ X − X 0 Y − Y 0 ]    =    λ [ x h i g h − y ] λ    =    Y 1 − Y 0 h i g h = X 1 − X 0 l e n g t h   . egin{cases} left[ egin{array}{c} X-X_0\ Y-Y_0\ end{array} ight] ,,=,,lambda left[ egin{array}{c} x\ high-y\ end{array} ight]\ lambda ,,=,,frac{Y_1-Y_0}{high}=frac{X_1-X_0}{length}\ end{cases},. ⎩⎨⎧[X−X0Y−Y0]=λ[xhigh−y]λ=highY1−Y0=lengthX1−X0. 公式中的lambda即为每一像素所代表的具体长度,即图像中一像素代表坐标系下的具体长度。由此即可得到坐标系与图形坐标系之间的转换关系。

备注:特别感谢哈工大的Hulunbuir学长以及335工作室的群主和小伙伴们的帮助与支持。后期会出一期博客详细介绍一下基于AutoCAD的python二次开发对于栅格图像的应用 。

希望能和各位小伙伴们共同进步,欢迎各位和我一起探讨学习有关python二次开发AutoCAD的具体实例。

经验分享 程序员 微信小程序 职场和发展