halcon常用仿射變換算子

仿射變換

仿射變換主要包括平移變換、旋轉變換、縮放變換(也叫尺度變換)、傾斜變換(也叫錯切變換、剪切變換、偏移變換)、翻轉變換。有六個自由度。

要進行仿射變換,必須先獲取變換矩陣。要獲取變換矩陣,必須先獲取特徵點座標、角度等信息,幾何匹配和bolb是獲取特徵點的高效方法,除此之外還有其它方法,只要能穩定的求出特徵點即可。

仿射變換流程

(1.)獲取特徵點座標、角度

(2.)計算仿射變換矩陣

(3.)對圖像、區域、輪廓進行仿射變換

根據特徵點、角度計算仿射變換矩陣

hom_mat2d_identity(:::HomMat2DIdentity)

功能:產生仿射變換矩陣


hom_mat2d_rotate(::HomMat2D,Phi,Px,Py:HomMat2DRotate)

功能:把旋轉角度添加到仿射變換矩陣

HomMat2D:(輸入參數)仿射變換矩陣

Phi(輸入參數):旋轉角度(單位弧度)

Px(輸入參數):變換的固定點行座標。固定點是指以該點爲支撐進行仿射變換 (這裏是指圍繞這點進行旋轉)

Py:(輸入參數)變換的固定點列座標

HomMat2DRotate:(輸出參數)輸出變換矩陣


hom_mat2d_scale(::HomMat2D,Sx,Sy,Px,Py:HomMat2DScale)

功能:把縮放添加到仿射變換矩陣

HomMat2D(輸入參數):仿射變換矩陣

Sx(輸入參數):x軸方向的縮放因子

Sy(輸入參數):y軸方向的縮放因子

Px(輸入參數):變換的固定點行座標

Py(輸入參數):變換的固定點列座標

HomMat2DScale(輸出參數):輸出變換矩陣


hom_mat2d_translate(::HomMat2D,Tx,Ty:HomMat2DTranslate)

功能:把平移添加到防射變換矩陣

HomMat2D:(輸入參數)仿射變換矩陣

Tx(輸入參數):沿x軸方向平移的距離

Ty:輸入參數):沿y軸方向平移的距離

HomMat2DTranslate(輸出參數):輸出變換矩陣


hom_mat2d_slant(::HomMat2D,Theta,Axis,Px,Py:HomMat2DSlant)

功能:把斜切添加到防射變換矩陣

HomMat2D(輸入參數):仿射變換矩陣

Theta(輸入參數):斜切角度(單位:弧度)

Axis(輸入參數):斜切的座標軸。取值列表:x,y

Px(輸入參數):變換的固定點x座標

Py(輸入參數):變換的固定點y座標

HomMat2DSlant(輸出參數):輸出仿射變換矩陣

vector_angle_to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D)

功能:根據點和角度計算剛性仿射變換矩陣,支持旋轉和平移

Row1(輸入參數):原始點行座標

Column1(輸入參數):原始點列座標

Angle1(輸入參數):原始點角度

Row2(輸入參數):變換的目的點行座標

Column2(輸入參數):變換的目的點列座標

Angle2(輸入參數):變換的目的點角度

HomMat2D(輸出參數):輸出仿射變換矩陣


根據兩個以上特徵點計算仿射變換矩陣

vector_to_rigid(::Px,Py,Qx,Qy:HomMat2D)

功能:根據兩個以上點對計算計算剛性仿射變換矩陣,支持旋轉和平移

Px:(輸入參數)原始點組的x座標

Py:(輸入參數)原始點組的y座標

Qx:(輸入參數)變換的目的點組的x座標

Qy:(輸入參數)變換的目的點組的y座標

HomMat2D:(輸出參數)輸出仿射變換矩陣

vector_to_similarity(::Px,Py,Qx,Qy:HomMat2D)

功能:根據兩個以上點對計算相似仿射變換矩陣,支持旋轉、平移和縮放

Px:(輸入參數)原始點組的x座標

Py:(輸入參數)原始點組的y座標

Qx:(輸入參數)變換的目的點組的x座標

Qy:(輸入參數)變換的目的點組的y座標

HomMat2D:(輸出參數)輸出仿射變換矩陣


根據三個以上特徵點獲取仿射變換矩陣

vector_to_hom_mat2d(::Px,Py,Qx,Qy:HomMat2D)

功能:根據三個以上點對計算仿射變換矩陣,支持旋轉、平移、縮放、斜切

Px:(輸入參數)原始點組的x座標

Py:(輸入參數)原始點組的y座標

Qx:(輸入參數)變換的目的點組的x座標

Qy:(輸入參數)變換的目的點組的y座標

HomMat2D:(輸出參數)輸出仿射變換矩陣

計算仿射變換參數

hom_mat2d_to_affine_par(::HomMat2D:Sx,Sy,Phi,Theta,Tx,Ty)

功能:根據仿射變換矩陣(齊次二維變換矩陣)計算仿射變換參數

HomMat2D(輸入參數):仿射變換矩陣

Sx(輸出參數):x方向的縮放因子(如果從圖像空間變換到物理空間,就是x方向的 像素單量)

Sy(輸出參數):y方向的縮放因子(如果從圖像空間變換到物理空間,就是y方向的 像素單量)

Phi(輸出參數):旋轉角度

Theta(輸出參數):斜切角度

Tx(輸出參數):沿x方向平移的距離

Ty(輸出參數):沿y方向平移的距離

8.對圖像、ROI和XLD進行仿射變換

affine_trans_contour_xld(Contours:ContoursAffinTrans:HomMat2D)

功能:對XLD輪廓進行二維仿射變換,支持縮放,旋轉,平移,斜切

Contours(輸入參數):輸入XLD輪廓

ContoursAffinTrans(輸出參數):輸出變換的XLD輪廓

HomMat2D(輸入參數):仿射變換矩陣

affine_trans_image(Image:ImageAffinTrans:HomMat2D,Interpolation,AdaptImageSize)

功能:對圖像輪廓進行二維仿射變換,支持縮放、旋轉、平移,斜切

Image(輸入參數):輸入圖像

ImageAffinTrans(輸出參數):變換後的圖像

HomMat2D(輸入參數):仿射變換矩陣

Interpolation(輸入參數):插值算法。參數值列表: nearest_neighbor,bilinear,constant,weighted

AdaptImageSize(輸入參數):結果圖像尺寸是否自適應。默認值:false

affine_trans_region(Region:RegionAffineTrans:HomMat2D,Interpolate:)

功能:對區域進行任意二維仿射變換

Region(輸入參數):輸入區域

RegionAffineTrans(輸出參數):變換的區域

HomMat2D(輸入參數):仿射變換矩陣

Interpolate(輸入參數):插值算法。默認值:nearest_neighbor。參數值列表:constant,nearest_neighbor

affine_trans_polygon_xld(Polygon:PolygonsAffinTrans:HomMat2D:)

功能:對XLD多邊形進行任意二維仿射變換

Polygon(輸入參數):輸入XLD多邊形

PolygonsAffinTrans(輸出參數):變換的XLD多邊形

HomMat2D(輸入參數):仿射變換矩陣

affine_trans_point_2d(::HomMat2D,Px,Py:Qx,Qy)

功能:對點進行任意二維仿射變換,支持縮放、旋轉、平移、斜切

HomMat2D(輸入參數):仿射變換矩陣

Px(輸入參數):原始點x或行座標

Py(輸入參數):原始點y或列座標

Qx(輸出參數):變換點x或行座標

Qy(輸出參數):變換點y或列座標

affine_trans_pixel(::HomMat2D,Row,Col:RowTrans,ColTrans)

功能:對像素進行任意二維仿射變換

HomMat2D(輸入參數):仿射變換矩陣

Row(輸入參數):輸入像素行座標

Col(輸入參數):輸入像素列座標

RowTrans(輸出參數):變換的像素行座標

ColTrans(輸出參數):變換的像素列座標

ps:affine_trans_point_2d與affine_trans_pixel的區別:affine_trans_pixel使用的圖像座標系的原點在圖像的左上角,affine_trans_point_2d使用標準圖像座標系,原點在左上角像素的中心

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章