本文參考博客:https://blog.csdn.net/qq_20161893/article/details/72917780,在此基礎上按照自己的理解,進行了整理
一、Halcon圖像處理的兩個坐標系
coordinate system
standard image coordinate system
(0,0) to (Width-1,Height-1) (-0.5,-0.5) to (Width+0.5, Height+0.5)
二、各個算子使用的坐標系
1)affine_trans_pixel,affine_trans_contour_xld,affine_trans_region,affine_trans_image: 第一個坐標系,像素坐標系
eg1:affine_trans_pixel
eg2:affine_trans_image
//繞着圖像中心點旋轉90度 area_center(Image,Area,Row,Column)//這是基於標准圖像坐標系 vector_angle_to_rigid(Row,Column,0,Row,Column,rad(90),HomMat2D) //以下兩個運算交換下順序也可以,因為矩陣乘法滿足結合律 hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp) //矩陣左乘 hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted) //矩陣右乘,基於本地坐標系 affine_trans_image(Image, ImageAffinTrans, HomMat2DAdapted, 'constant', 'false') //這是基於像素坐標系 //繞着圖像中心點旋轉90度(另一種實現方式) get_image_size(Image,Width,Height) Row := Height/2 Column := Width/2 vector_angle_to_rigid(Row,Column,0,Row,Column,rad(90),HomMat2D) affine_trans_image(Image, ImageAffinTrans, HomMat2DAdapted, 'constant', 'false') //繞着圖像中心點旋轉90度(第三種實現方式) area_center(Circle,Area, Row,Column) vector_angle_to_rigid(Row+0.5,Column+0.5,0,Row+0.5,Column+0.5,rad(90),HomMat2D) affine_trans_image(ImageResult,ImageAffinTrans2,HomMat2D,'constant', 'false')
2)affine_trans_point_2d, area_center:第二個坐標系,標准圖像坐標系