【Halcon學(xué)習(xí)筆記】15.投影變換
1.概述
????????投影變換,也稱(chēng)為透射變換、投影映射。是一種是二維(x,y)到三維(X,Y,Z),再到另一個(gè)二維(x',y')空間的變換。
????????與仿射變換不同,投影變換的結(jié)果是任意形狀,且不一定保持平直性的(如對(duì)邊不再平行、畸變等);而仿射變換的結(jié)果是維持形狀,且保持平直性的??梢园逊律渥儞Q理解為投影變換的一種特殊形式。
????????注:投影變換矩陣有8個(gè)未知數(shù),要求解就需要找到至少4組映射點(diǎn)。

2.相關(guān)算子
2.1 生成/計(jì)算
1)hom_vector_to_proj_hom_mat2d()????????//用給定點(diǎn)生成投影變換矩陣,輸入點(diǎn)的坐標(biāo)為三維齊次坐標(biāo)
? ? ? ? Px:變換前原圖像的行坐標(biāo)
? ? ? ? Py:變換前原圖像的列坐標(biāo)
? ? ? ? Pw:使用有限點(diǎn),通常 Pw和Qw設(shè)置為1
? ? ? ? Qx:變換后原圖像的行坐標(biāo)
? ? ? ? Qy:變換后原圖像的列坐標(biāo)
? ? ? ? Qw:使用有限點(diǎn),通常 Pw和Qw設(shè)置為1
? ? ? ? Method:變換的方法
? ? ? ? HomMat2D:輸出的變換矩陣
2)vector_to_proj_hom_mat2d()???????? //用給定點(diǎn)生成投影變換矩陣,輸入點(diǎn)為二維非齊次坐標(biāo)
????????Px:圖像變換前圖像的頂點(diǎn)x坐標(biāo)。
????????Py:圖像變換前圖像的頂點(diǎn)y坐標(biāo)。
????????Qx:圖像變換后圖像的頂點(diǎn)x坐標(biāo)。
????????Qy:圖像變換后圖像的頂點(diǎn)y坐標(biāo)。
????????Method:變換方式選擇。默認(rèn) 'normalized_dlt',
????????CovXX1:圖像變換前圖像對(duì)應(yīng)x值坐標(biāo)的row方向的變動(dòng)。默認(rèn)[]。
????????CovYY1:圖像變換前圖像對(duì)應(yīng)y值坐標(biāo)的col方向的變動(dòng)。默認(rèn)[]。
????????CovXY1:圖像變換前圖像對(duì)應(yīng)點(diǎn)的協(xié)方差。默認(rèn)[]。
????????CovXX2:圖像變換后圖像對(duì)應(yīng)x值坐標(biāo)的row方向的變動(dòng)。默認(rèn)[]。
????????CovYY2:圖像變換后圖像對(duì)應(yīng)y值坐標(biāo)的col方向的變動(dòng)。默認(rèn)[]。
????????CovXY2:圖像變換后圖像對(duì)應(yīng)點(diǎn)的協(xié)方差。默認(rèn)[]。
????????HomMat2D:輸出映射變換矩陣。
????????Covariance:輸出9×9協(xié)方差矩陣的投影變換矩陣。
2.2??執(zhí)行(執(zhí)行投影變換)
1)projective_trans_image() ???????? //對(duì)圖像投影變換
????????Image:待變換的圖像
????????TransImage:變換后的圖像
????????HomMat2D:投影變換的矩陣
????????Interpolation:插值方法
????????AdaptImageSize:是否自動(dòng)調(diào)整輸出圖像的大小
????????TransformDomain:是否轉(zhuǎn)換輸入圖像的域
2)projective_trans_image_size()????????//對(duì)圖像投影變換,并且指定輸出圖像的大小
3)projective_trans_region()????????????????//對(duì)區(qū)域投影變換
4)projective_trans_contour_xld()????????//對(duì)XLD投影變換
5)projective_trans_pixel()????????????????????//對(duì)像素投影變換
2.3?可變形模板
1)create_planar_uncalib_deformable_model()????//創(chuàng)建不帶標(biāo)定的可變形模板,支持投影變形
????????Template:輸入的模板圖像
????????NumLevels:金字塔級(jí)別
????????AngleStart:開(kāi)始角度(不使用此參數(shù))
????????AngleExtent:角度范圍(不使用此參數(shù))
????????AngleStep:角度步長(zhǎng)
????????ScaleRMin:行方向的最小比例
????????ScaleRMax:行方向的最大比例(不使用此參數(shù))
????????ScaleRStep:行方向的縮放步長(zhǎng)
????????ScaleCMin:列方向的最小比例
????????ScaleCMax:列方向的最大比例(不使用此參數(shù))
????????ScaleCStep:列方向的最小比例
????????Optimization:生成模型的優(yōu)化類(lèi)型
????????Metric:設(shè)置匹配方法,是否使用極性
????????Contrast:模板圖像中對(duì)象的對(duì)比度設(shè)置的滯后閾值
????????MinContrast:搜索圖像中目標(biāo)的最小對(duì)比度
????????GenParamName:通用參數(shù)名稱(chēng)
????????GenParamValue:通用參數(shù)值
????????ModelID:模板的句柄
2)find_planar_uncalib_deformable_model()???????? //匹配不帶標(biāo)定的可變形模板,支持投影變形
????????Image:輸入的匹配圖像
????????ModelID:模板的句柄
????????AngleStart:開(kāi)始角度
????????AngleExtent:角度范圍
????????ScaleRMin:行方向的最小比例
????????ScaleRMax:行方向的最大比例
????????ScaleCMin:列方向的最小比例
????????ScaleCMax:列方向的最大比例
????????MinScore:最小分?jǐn)?shù)
????????NumMatches:匹配結(jié)果的個(gè)數(shù)
????????MaxOverlap:重疊系數(shù)
????????NumLevels:金字塔級(jí)別
????????Greediness:貪婪度
????????GenParamName:通用參數(shù)名稱(chēng)
????????GenParamValue:通用參數(shù)值
????????HomMat2D:輸出匹配過(guò)程中所需要的變換矩陣(默認(rèn)情況下,原點(diǎn)是用于使用創(chuàng)建可變形模型的圖像域(區(qū)域)的重心)
????????Score:匹配分?jǐn)?shù)
3.投影變換在Halcon中的應(yīng)用步驟??
????????投影變換一般在圖像校正方面的應(yīng)用較為常見(jiàn)。

3.1 場(chǎng)景1:校正單張圖像
1)讀取、處理圖像
2)找出投影前的4個(gè)點(diǎn)
3)設(shè)置投影后的4個(gè)點(diǎn)
4)根據(jù)投影前后點(diǎn)生成投影矩陣
5)用投影變換矩陣校正圖像


3.2?場(chǎng)景2:校正多張圖像
1)尋找特征和特征中心
2)創(chuàng)建可變形模板(支持投影變換)
3)模板匹配
4)匹配成功得到模板矩陣
5)逆矩陣
6)矯正圖像




by Ryou2-