仿射變換
仿射變換主要包括平移變換、旋轉變換、縮放變換(也叫尺度變換)、傾斜變換(也叫錯切變換、剪切變換、偏移變換)、翻轉變換。有六個自由度。
要進行仿射變換,必須先獲取變換矩陣。要獲取變換矩陣,必須先獲取特徵點座標、角度等信息,幾何匹配和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使用標準圖像座標系,原點在左上角像素的中心