基于匹配模板的術(shù)語自動(dòng)翻譯方法 halcon學(xué)習(xí)_模板匹配
日期:2023-03-11 12:39:36 / 人氣: 998 / 發(fā)布者:成都翻譯公司
模板匹配中有基于點(diǎn)、基于灰度值、基于描述符、基于相關(guān)性、基于形狀、基于組件的方法?;谙嚓P(guān)性的模板匹配在創(chuàng)建模板時(shí),會(huì)將模板角度轉(zhuǎn)為0°;基于相關(guān)性的模板匹配ps:使用基于互相關(guān)的時(shí)候,要使用灰度圖像!基于灰度值的模板匹配基于形狀的模板匹配ps:創(chuàng)建函數(shù)第二個(gè)參數(shù)金字塔層數(shù)不要寫1,不然識(shí)別起起來困難(而且應(yīng)該離焦?fàn)顟B(tài)就找不到了)ps:學(xué)會(huì)靈活運(yùn)用halcon自帶例子,把它當(dāng)字典用。模板匹配有基于點(diǎn)、基于灰度值、基于描述符、基于相關(guān)性、基于形狀和基于組件的方法。
一般流程:裁剪→創(chuàng)建模板→查找對(duì)象→仿射變換→顯示
基于相關(guān)性的模板匹配會(huì)在創(chuàng)建模板時(shí)將模板角度轉(zhuǎn)換為0°;
創(chuàng)建模板時(shí),基于形狀的模板匹配會(huì)將模板角度轉(zhuǎn)為0°基于匹配模板的術(shù)語自動(dòng)翻譯方法,并將坐標(biāo)移動(dòng)到圖像的左上角(0,0))。
基于相關(guān)性的模板匹配
1、 演示-模板匹配(基于相關(guān)性)-find_ncc_model_exposure
2、 Correlation適用于光照不均和明暗變化的場(chǎng)合(優(yōu)點(diǎn)),但背景不宜太復(fù)雜(缺點(diǎn))。
當(dāng)照度變化很大時(shí),使用良好的相關(guān)性,不要使用基于灰度的。
3、 可以通過調(diào)整參數(shù)來改變匹配效果。并且金字塔層數(shù)越??多,搜索速度越快;反之,搜索速度越慢。
4、 相關(guān)值越接近1,越相關(guān)。
5、 實(shí)現(xiàn)模板匹配有兩種方式:①助手②代碼
6、 集合助手-創(chuàng)建參數(shù)→ 相對(duì)于create_ncc_model
…////Collection Assistant-Application → 相對(duì)于 find_ncc_model
ps:*大匹配數(shù)為0,表示查找所有匹配
7、 創(chuàng)建模板的方式可以是手繪,也可以是blob分析,然后就得拉出來了。減少域()
8、 助手方法,在圖片中找到飛機(jī)(注意我用的圖片,不是視頻)
步:
先看一張圖片-打開配對(duì)助手
創(chuàng)建tab-template資源:圖像窗口(或使用文件或采集助手)-繪制ROI區(qū)域-基于互相關(guān)選擇
應(yīng)用選項(xiàng)卡-圖片文件-加載-選擇加載圖片的名稱-(勾選總是查找)-調(diào)整*低分
代碼生成-插入代碼
ps:我是來先插入圖片的。如果使用攝像頭,可以直接在抓圖和應(yīng)用的地方使用抓圖助手。
ps:使用基于互相關(guān),顯示時(shí)為框架,如果基于形狀,則顯示為輪廓
ps:使用互相關(guān)時(shí),使用灰度圖像!?。?/p>
9、 代碼方法,找到圖中的平面
步:
看圖→繪制ROI區(qū)域→area_center區(qū)域信息→裁剪ROI區(qū)域
創(chuàng)建ncc模板→找到ncc模板→仿射變換→顯示
ps:基于歸一化互相關(guān)(NCC)比較兩幅圖像的相似度是一種常見的圖像處理方法。NCC算法可以有效降低光照對(duì)圖像比對(duì)結(jié)果的影響。
ps:學(xué)會(huì)靈活使用復(fù)制粘貼
read_image (Image, 'C:/Users/yuan/Desktop/7.tif')
gen_rectangle2 (ROI_0, 415.916, 176.48, rad(-40.041), 19.9162, 16.9716)
area_center (ROI_0, Area, RowRef, ColumnRef)
reduce_domain (Image, ROI_0, ImageReduced)
dev_display (Image)
dev_set_draw ('margin')
create_ncc_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'use_polarity', ModelID)
find_ncc_model (Image, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'true', 0, Row, Column, Angle, Score)
vector_angle_to_rigid (RowRef, ColumnRef, 0, Row, Column, Angle, HomMat2D)
affine_trans_region (ROI_0, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
dev_display (Image)
dev_display (RegionAffineTrans)
ps:仿射變換函數(shù)剛開始是這樣打的
vector_angle_to_rigid (RowRef, ColumnRef, rad(-40.041), Row, Column, angle, HomMat2D)
affine_trans_region (ROI_0, RegionAffineTrans, HomMat2D,'nearest_neighbor')
這時(shí)候就說明模板匹配找到的區(qū)域不是有角度的,不是水平的。
這是因?yàn)樵趧?chuàng)建ncc模板的時(shí)候,ROI_0的角度自動(dòng)轉(zhuǎn)為0°,所以仿射變換的起始角度應(yīng)該變成0。記住這種情況在獲取仿射矩陣的時(shí)候,起始角度是直接只需填寫0°,并為改變的角度寫下角度。
vector_angle_to_rigid (RowRef, ColumnRef, 0, Row, Column, 角度, HomMat2D)
ps:另外需要注意的就是創(chuàng)建和查找ncc模板的功能,第一次打出來的時(shí)候
create_ncc_model (ImageReduced,'auto', 0, 0,'auto','use_polarity', ModelID)
find_ncc_model (Image, ModelID, 0, 0, 0.5, 1, 0.5,'true', 0, Row, Column, Angle, Score)
三、的四個(gè)位置是搜索的起始角度和結(jié)束角度,這里改成rad(0和rad(360),像這樣。
find_ncc_model (Image, ModelID, rad(0), rad(360), 0.5, 1, 0.5,'true', 0, Row, Column, Angle , 分?jǐn)?shù))
vector_angle_to_rigid (RowRef, ColumnRef, 0, Row, Column, Angle, HomMat2D)
ps:由于仿射變換,查找ncc目標(biāo)的函數(shù)第6個(gè)位置只能填1(匹配一個(gè)),否則會(huì)因?yàn)楦袷綀?bào)錯(cuò)。
10、 一次代碼匹配多架飛機(jī)
read_image (Image, 'C:/Users/yuan/Desktop/7.tif')
gen_rectangle2 (ROI_0, 415.916, 176.48, rad(-40.041), 19.9162, 16.9716)
area_center (ROI_0, Area, RowRef, ColumnRef)
reduce_domain (Image, ROI_0, ImageReduced)
dev_display (Image)
dev_set_draw ('margin')
create_ncc_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'use_polarity', ModelID)
find_ncc_model (Image, ModelID, rad(0), rad(360), 0.5, 3, 0.5, 'true', 0, Row, Column, Angle, Score)
if(|Score|>0)
for Index := 1 to 3 by 1
vector_angle_to_rigid (RowRef, ColumnRef, 0, Row[Index-1], Column[Index-1], Angle[Index-1], HomMat2D)
affine_trans_region (ROI_0, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
dev_display (Image)
dev_display (RegionAffineTrans)
endfor
endif
ps:匹配了3個(gè)平面,所以行、列等值都是3個(gè)數(shù)字。
ps:|score|的值 是向量的維度!不是絕對(duì)值!
基于灰度值的模板匹配
1、 基于灰度值的目標(biāo)匹配使用Mean Absolute Differences (MAD)
2、 rad() 函數(shù)將角度轉(zhuǎn)換為弧度基于匹配模板的術(shù)語自動(dòng)翻譯方法,deg() 函數(shù)將弧度轉(zhuǎn)換為角度。
3、 disp_arrow() 函數(shù)用于顯示箭頭。注意disp顯示只是一個(gè)顯示,在變量窗口是看不到數(shù)值的。
4、 rot 表示旋轉(zhuǎn)搜索,mg 表示金字塔搜索。
best_match(), best_match_rot(), best_match_mg(), best_match_rot_mg()
fast_match(), fast_match_rot(), fast_match_mg(), fast_match_rot_mg()
基于形狀的模板匹配
教程的前幾課都是關(guān)于demo的,我們先來看看demo。
1、 對(duì)光線要求高,不適合室外自然光
2、基于形狀的模板匹配創(chuàng)建模板時(shí),ROI的位置自動(dòng)移動(dòng)到像素點(diǎn)(0,0)位置,角度旋轉(zhuǎn)到0°。
3、 創(chuàng)建:
create_shape_model(), create_shape_model_xld(), create_scale_shape_model() / *后這個(gè)函數(shù)帶有縮放功能
ps:如果用get_shape_model()創(chuàng)建模板,得到的是xld的輪廓,用于仿射變換函數(shù)中,顯示的圖形為輪廓。affine_trans_contour_xld() 使用這種仿射變換來顯示輪廓。也可以不顯示輪廓而想顯示繪制的矩形框,那么affine_trans_region()函數(shù),仿射變換之前繪制的roi區(qū)域,注意roi的行列角要填充在仿射前面矩形,而不是 (0,0,0).
ps:創(chuàng)建函數(shù)的第二個(gè)參數(shù)金字塔層不要寫1,否則會(huì)很難識(shí)別(而且應(yīng)該是失焦,找不到)
4、 查找:
find_shape_model(), find_scale_shape_model(), find_shape_models() / *后這個(gè)函數(shù)找到多個(gè)模板
5、 仿射變換:
平移和旋轉(zhuǎn):vector_angle_to_rigid()
比例:hom_mat2d_scale()
6、 顯示:
dev_disp(圖片)
dev_disp(RegionAffineTrans)
7、 詳細(xì)了解demo,學(xué)習(xí)應(yīng)用到實(shí)戰(zhàn)項(xiàng)目中
ps:輪廓n。形狀、輪廓
8、 演示模板匹配(形狀)-align_measurements()
9、 演示模板匹配(形狀)-create_average_shape_model():
①channels_to_image(Templates,MultichannelImage)
將多張圖片變成多通道圖片
②mean_n(MultichannelImage,ImageMean)
平均變成通道(然后用平均圖像作為模板進(jìn)行創(chuàng)建)
10、 演示-模板匹配(形狀)-align_measurements()
write_shape_model(ModelID,'green-dot.shm')
將模板保存在 .shm 文件中,以備將來直接使用
檢查形狀模型()
檢查模型輪廓
11、 演示-模板匹配(形狀)-create_roi_via_vision()
dev_set_part(左上x,左上y,右下x,右下y)
這之后顯示的圖片都顯示了劃定的區(qū)域
12、 演示-模板匹配(形狀)-create_shape_model_xld()
binary_threshold() //快速二值化
13、 演示-模板匹配(形狀)-inspect_shampoo_label()
添加頻道()
向區(qū)域添加灰度值
14、 演示-模板匹配(形狀)-matching_coins()
前一個(gè)循環(huán)是創(chuàng)建模板,后一個(gè)循環(huán)是查找和顯示
15、 演示-模板匹配(形狀)-reuse_model()
write_shape_model()
存儲(chǔ)為.sbm文件(上面是.shm文件,幫助也是shm文件,看不懂,但是這個(gè)例子中使用了.sbm文件,我試了一下,可以用),您可以保存創(chuàng)建的模型。
16、 demo-模板匹配(形狀)-synthetic_circle
如果set_shape_model_para()函數(shù)中的第二個(gè)參數(shù)GenParamName是'timeout',這個(gè)函數(shù)的作用就是在時(shí)間過去后停止搜索。
油漆_xld(), 油漆區(qū)域()
從輪廓到圖像,從區(qū)域到圖像
17、 demo-模板匹配(形狀)-pm_measure_board
我講了(電路板芯片)定位+測(cè)量。通過定位電路板芯片的中心位置和角度,可以定位兩排引腳,用兩個(gè)矩形框來選擇。
ps:對(duì)于膨脹腐蝕,二值圖是面積的增減,灰度圖是灰度值(亮度)的增減。
18、 demo-模板匹配(形狀)-pm_multiple_models
以后做更多模板完全可以復(fù)制粘貼這個(gè)例子
inspect_shape_model() 用于檢查模型的輪廓。如果您不滿意,可以在創(chuàng)建后進(jìn)行修改。使用特征直方圖進(jìn)行過濾。請(qǐng)注意,選擇該功能時(shí)應(yīng)將 xld 放在前面。
create_shape_model (Image, 5, rad(0), rad(360), 'auto', 'pregeneration', 'use_polarity', 30, 10, ModelID)
get_shape_model_contours (ModelCont, ModelID, 1)
select_shape_xld (ModelCont, ModelContours, 'contlength', 'and', 20, 1000)
下面的代碼是為了方便直接建模,不用修改,然后進(jìn)行仿射變換然后顯示。
count_obj (ModelContours, NumModel)
count_obj (Models, NumModels)
concat_obj (Models, ModelContours, Models)
IndexS := [IndexS,NumModels + 1]
IndexE := [IndexE,NumModels + NumModel]
ModelIDs := [ModelIDs,ModelID]
用這張圖更容易理解這段代碼。(個(gè)人使用)
19、 演示-模板匹配(形狀)-multiple_dxf_model
識(shí)別部分和前面的例子一樣,區(qū)別在上半部分。
read_contours_xld_dxf() //這個(gè)demo的重點(diǎn)
本demo讀取dxf文件,將輪廓轉(zhuǎn)換為圖像,然后創(chuàng)建輪廓
20、實(shí)戰(zhàn)(實(shí)時(shí)查找瓶蓋上的文字):
(基本上,寫重要幾乎很簡單)
①:助手模式:
檢測(cè)選項(xiàng)卡-需要點(diǎn)擊執(zhí)行,結(jié)果會(huì)顯示到檢測(cè)選項(xiàng)卡
②:編碼方式:
裁剪(手繪或blob方法)→創(chuàng)建模板→查找識(shí)別→仿射變換→顯示
在搜索函數(shù)的下一行添加一個(gè)if(|Score|> 1),防止找不到frame時(shí)出錯(cuò)
ps:取消勾選運(yùn)行模式。連續(xù)運(yùn)行時(shí),創(chuàng)建模板時(shí)左上角顯示的輪廓會(huì)消失。
ps:學(xué)會(huì)靈活使用halcon自己的例子,當(dāng)成字典來使用。
- 上一條翻譯后的計(jì)算機(jī)化系統(tǒng)驗(yàn)證模板 計(jì)算機(jī)化系統(tǒng)驗(yàn)證常見的
- 下一條股權(quán)轉(zhuǎn)讓協(xié)議翻譯模板 上市公司股權(quán)轉(zhuǎn)讓協(xié)議模板
相關(guān)閱讀Relate
熱門文章 Recent
- 真誠地道歉模板翻譯 英語道歉信范文精選(帶翻譯)2023-03-11
- 舊版結(jié)婚證翻譯件標(biāo)準(zhǔn)模板 結(jié)婚證翻譯_婚姻登記證明書翻譯蓋章2023-03-11
- 高中英語感謝信中間模板帶翻譯 英語感謝信萬能句子帶翻譯2023-03-11
- 企業(yè)銷售人員勞動(dòng)合同翻譯模板 勞動(dòng)合同免費(fèi)2023-03-11
- 勞務(wù)合同模板翻譯中英文對(duì)照 site:.cn,教師勞動(dòng)合同范本2023-03-11
- 大學(xué)生英文簡歷模板翻譯 武漢英語翻譯大學(xué)生個(gè)人簡歷模板2023-03-11
- 加拿大簽證營業(yè)執(zhí)照翻譯模板 加拿大商務(wù)簽證2023-03-11
- 銀行對(duì)賬單翻譯模板 銀行對(duì)賬單有哪些功能2023-03-11
- 英語求職信萬能模板帶翻譯 中考英語作文范文及翻譯:愛麗絲的*后章節(jié)2023-03-11
- 翻譯碩士答辯模板 中國人民大學(xué)翻譯碩士專業(yè)學(xué)位授予點(diǎn)審核報(bào)告2023-03-11