什么是旋转平移矩阵及其应用
旋转平移矩阵是机器视觉里面最常见的几个概念之一了。如果要深入了解,没有一定的线性代数知识是不行的。好在halcon是给好东西,什么都封装的比较好,所以读完本节,你就算没学过线性代数,相信也会应用它实现各种需要的功能了。
不管是旋转矩阵还是平移矩阵,还是合在一起的,都是一种转换关系。只要知道这一点就足够了。比如你要把一个中心点在(100,100)的矩形region平移到中心点在(300,300)的位置,那么转换关系就是把这个矩形region里面的每一个像素点的row和column各加200就ok了。这是最简单的平移,如果你希望把这个矩形region的中心点移到(300,300)的位置同时让矩形旋转30°呢?这样的转换关系可能就不那么一目了然了,但是说到底,其实也是有一个转换关系的,我们只要求出这个转换关系,再应用到原矩形region的每一个像素点上,就完成了转换。那么步骤就很明显了:
第一步:求出这个转换关系
代码如下(图3- 12-1):
看名称就差不多猜到前三个参数的含义就是初始矩形的位置以及角度,第四到六个参数是目标处的位置以及角度,最后一个参数就是halcon帮咱们算出来的转换关系了(管它怎么算的呢?)。
按照上例的话,这行代码我们就要这样写:
vector_angle_to_rigid (100,100,0,300,300,rad(30),HomMat2D)
得到转换关系,就到了第二步:应用到原矩形region的每一个像素点上
还是只有一行代码搞定(图3-12-2):
第一个参数就是初始的矩形,第二个是转换后的矩形,第三个是转换矩阵,第四个是插值方法(插值方法,前面的某章节TIPS里面有讲解,在此就不赘述了)随便选一个也不会有太大影响。
就是这么简单的两步,实现了一个region的平移和旋转,多看两遍本章节就会用了,什么线性代数,矩阵方程,去你的吧~~看看效果吧(图3-12-3)
如果你转换后发现矩形变形了,如下图(图3-12-4),下方评论区告诉我,我告诉你为啥!
最后,其实除了region,图片、XLD,三维空间的region,点云等的平移旋转都是大同小异的。都是这两步,稍微修改下代码即可!欢迎大家自己举一反三!