版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器視覺系統(tǒng)編程與開發(fā)<Halcon版>《HALCON機(jī)器視覺系統(tǒng)編程基礎(chǔ)》項(xiàng)目8模版匹配【知識目標(biāo)】1、理解圖像分割的概念的作用;2、了解幾種圖像分割的方法和應(yīng)用場合;3、會(huì)用普通閾值分割圖像。1.知道模板匹配的流程2.會(huì)用模板匹配的方法對圖形進(jìn)行定位;1.提升圖像識讀能力和編程能力;2.培養(yǎng)圖像分析能力?!灸芰δ繕?biāo)】【素養(yǎng)目標(biāo)】項(xiàng)目導(dǎo)讀
模板匹配是機(jī)器視覺工業(yè)現(xiàn)場中定位較為常用的一種方法,通過算法,在目標(biāo)圖像中找到模板圖像的位置,即通過模板圖像與目標(biāo)圖像之間的比對,從目標(biāo)圖像中尋找與模板圖像灰度、邊緣、外形結(jié)構(gòu)等特征的相似圖形,從圖像的左上角開始從左向右、從上向下滑動(dòng),依次遍歷整幅圖像,根據(jù)不同的匹配算法,采用對應(yīng)的規(guī)則來判斷匹配的結(jié)果,一般來說,輸入是設(shè)定的圖像或者圖像中區(qū)域,輸出匹配目標(biāo)圖像中感興趣區(qū)域的位置、相對模板圖像的旋轉(zhuǎn)角度、縮放比例以及匹配數(shù)量。Halcon軟件常用的模板匹配方式有許多,本項(xiàng)目主要分析基于形狀的和基于相關(guān)性的模板匹配。利用模板匹配查找多個(gè)商標(biāo)利用相關(guān)性模板匹配檢測瓶蓋圖案利用模板匹配查找電子零配件任務(wù)3任務(wù)4任務(wù)2利用模板匹配查找回形針任務(wù)1利用模板匹配查找回形針任務(wù)12課時(shí)【任務(wù)要求】
根據(jù)形狀模板匹配對圖中的回形針進(jìn)行匹配,依次匹配一個(gè)。【知識鏈接】
基于形狀的模板匹配,也稱為基于邊緣方向梯度的匹配,是一種最常用也最前沿的模板匹配算法。該算法以物體邊緣的梯度相關(guān)性作為匹配標(biāo)準(zhǔn),提取ROI中的邊緣特征,結(jié)合灰度信息創(chuàng)建模板,并根據(jù)模板的大小和清晰度的要求生成多層級的圖像金字塔模型,然后在圖像金字塔層中自上而下逐層搜索模板圖像,直到搜索到最底層或得到確定的匹配結(jié)果為止。Halcon軟件中形狀模板匹配的算子為創(chuàng)建模板算子create_shape_model和匹配模板算子find_shape_model。算子釋義:create_shape_model—Prepareashapemodelformatching.格式:create_shape_model(Template::NumLevels,AngleStart,AngleExtent,AngleStep,Optimization,Metric,Contrast,MinContrast:ModelID)參數(shù):Template
--模板圖像;NumLevels--金字塔的最大層級--層級越高搜索越快;AngleStart,AngleExtent--模板旋轉(zhuǎn)的起始、終止角度--弧度;AngleStep--角度步長,一般>=0且<=pi/16;Optimization--設(shè)置模板優(yōu)化和模板創(chuàng)建方法;Metric--匹配方法設(shè)置;Contrast
--設(shè)置對比度;MinContrast--設(shè)置最小對比度;ModelID--模板窗口句柄。作用:創(chuàng)建形狀匹配模板。例:create_shape_model(ImageReduced,0,0,rad(360),'auto','no_pregeneration','use_polarity',40,10,ModelID)表示:創(chuàng)建形狀匹配模板,模板的金字塔層數(shù)為0,起始角度為00,終止角度為3600,角度步長為‘a(chǎn)uto',模板優(yōu)化方法為‘no_pregeneration',匹配方法選擇‘use_polarity',則圖像中的對象和模型中的對象必須具有相同的對比度;對比度為40,最小對比度為10,模板窗口的句柄名為‘ModelID’。算子釋義:find_shape_model—Findthebestmatchesofashapemodelinanimage.格式:find_shape_model(Image::ModelID,AngleStart,AngleExtent,MinScore,NumMatches,MaxOverlap,SubPixel,NumLevels,Greediness:Row,Column,Angle,Score)參數(shù):Image
--輸入圖像;ModelID--模板窗口句柄;AngleStart,AngleExtent--搜索時(shí)起始和終止角度;MinScore--被找到的模板最小匹配度--大于等于這個(gè)值才能被匹配,[0,1],默認(rèn)0.5;NumMatches--要找到的模板最大實(shí)例數(shù),0為不限制;MaxOverlap--要找到的模型實(shí)例的最大重疊比例;SubPixel--計(jì)算精度的設(shè)置;NumLevels--搜索時(shí)金字塔的層級;Greediness
--貪婪度,搜索啟發(fā)式,一般都設(shè)為0.8,值越高速度越快;Row,Column,Angle--輸出匹配位置的行和列坐標(biāo)、角度;
Score
--得分。作用:進(jìn)行形狀模板匹配操作。例:find_shape_model(Image,ModelID,0,rad(360),0.7,13,0.5,'none',0,0.9,Row,Column,Angle,Score)表示:利用創(chuàng)建的模板ModelID,在圖像變量Image中的圖像上匹配所需的形狀特征,起始角度為'0-3600',最小匹配度為'0.7',最大匹配個(gè)數(shù)為'13',模型的最大重疊比例為'0.5',不使用亞像素精度,金字塔的層數(shù)與創(chuàng)建的模板金字塔相同,貪婪度為'0.9',輸出匹配位置的行和列坐標(biāo)、角度以及匹配得分。【任務(wù)實(shí)施】
1.讀取圖像并初始化*讀取圖像
read_image
(Image,
'clip')
*獲取圖像尺寸大小
get_image_size
(Image,
Width,
Height)
*關(guān)閉窗口
dev_close_window
()
*新建一個(gè)圖像窗口
dev_open_window
(0,
0,
Width/2,
Height/2,
'black',
WindowHandle)
*顯示圖像,如圖8-2所示dev_display
(Image)
*繪制最小外接矩形
gen_rectangle2
(Rectangle,
Row1,
Column1,
Phi,
Length1,
Length2)
*膨脹操作,將外接矩形擴(kuò)大dilation_rectangle1
(Rectangle,
RegionDilation,
9,
9)
*裁剪出一個(gè)回形針的圖形為創(chuàng)建模板用,如圖8-4所示reduce_domain
(Image,
RegionDilation,
ImageReduced)
*以ImageReduced創(chuàng)建模板,角度為0~360度
create_shape_model
(ImageReduced,
0,
0,
rad(360),
0,
'no_pregeneration',
'use_polarity',
40,
10,
ModelID)
*獲取模型參數(shù)
get_shape_model_params
(ModelID,
NumLevels,
AngleStart,
AngleExtent,
AngleStep,
ScaleMin,
ScaleMax,
ScaleStep,
Metric,
MinContrast)
2.選擇特征創(chuàng)建模板*閾值分割
threshold
(Image,
Regions,
0,
132)
*連通處理,打斷各個(gè)區(qū)域
connection
(Regions,
ConnectedRegions)
*開運(yùn)算,去除噪聲
opening_rectangle1
(ConnectedRegions,
RegionOpening,
5,5)
*選擇左上角的回形針,如圖8-3所示select_shape
(RegionOpening,
SelectedRegions,
'row1',
'and',
0,
72)
select_shape
(SelectedRegions,
SelectedRegions1,
'column2',
'and',
100,
500)
*填充
fill_up
(SelectedRegions1,
RegionFillUp)
*最小外接矩形
smallest_rectangle2
(RegionFillUp,
Row1,
Column1,
Phi,
Length1,
Length2)
3.查找匹配特征
*查找匹配圖形find_shape_model
(Image,
ModelID,
0,
rad(360),
0.7,
13,
0.5,
'interpolation',0,
0.9,
Row,
Column,
Angle,
Score)
*獲取模型的輪廓contours
get_shape_model_contours
(ModelContours,
ModelID,
1)
4.顯示匹配結(jié)果
for
i
:=
0
to
|Score|
-
1
by
1
*計(jì)算剛性仿射變換矩陣
vector_angle_to_rigid
(0,
0,
0,
Row[i],
Column[i],
Angle[i],
HomMat2D)
*獲得的模型輪廓旋轉(zhuǎn)到匹配的輪廓,如圖8-5所示
affine_trans_contour_xld
(ModelContours,
ContoursAffinTrans,
HomMat2D)
endfor
*清除模板,釋放內(nèi)存
clear_shape_model
(ModelID)
下一任務(wù)介紹:利用模板匹配查找多個(gè)商標(biāo)。利用模板匹配查找多個(gè)商標(biāo)任務(wù)22課時(shí)【任務(wù)要求】根據(jù)形狀模板匹配對圖8-6進(jìn)行檢索,一次查找多個(gè)商標(biāo)?!救蝿?wù)實(shí)施】
1.讀取圖像并初始化*讀取圖像
read_image
(Image,
'green-dot')
*獲取圖像尺寸
get_image_size
(Image,
Width,
Height)
*關(guān)閉圖像
dev_close_window
()
*新建一個(gè)圖像窗口
dev_open_window
(0,
0,
Width,
Height,
'black',
WindowHandle)
*設(shè)定顯示顏色
dev_set_color
('red')
*顯示圖像,如圖8-7所示dev_display
(Image)
2.圖像處理,提取特征區(qū)域*閾值分割
threshold
(Image,
Region,
0,
128)
*連通域處理,打斷不相連的區(qū)域
connection
(Region,
ConnectedRegions)
*選擇面積在[10000,20000]之間的區(qū)域,就是選中中間圓的區(qū)域
select_shape
(ConnectedRegions,
SelectedRegions,
'area',
'and',
10000,
20000)
*填充
fill_up
(SelectedRegions,
RegionFillUp)
*膨脹操作,將圓擴(kuò)大
dilation_circle
(RegionFillUp,
RegionDilation,
5.5)
*利用上一步的圓對原圖進(jìn)行裁剪,不改變圖像大小,只是屏蔽圓以外的區(qū)域
,如圖8-8所示reduce_domain
(Image,
RegionDilation,
ImageReduced)
3.創(chuàng)建各向同性比例縮放形狀模板*創(chuàng)建各向同性模板
create_scaled_shape_model
(ImageReduced,
5,
rad(-45),
rad(90),
'auto',
0.8,
1.0,
'auto',
'none',
'ignore_global_polarity',
40,
10,
ModelID)
*獲取模板圖形的輪廓,中心點(diǎn)在原點(diǎn)(0,0)位置,如圖8-9所示get_shape_model_contours
(Model,
ModelID,
1)
*獲取模板區(qū)域的中心和角度
area_center
(RegionFillUp,
Area,
RowRef,
ColumnRef)
*創(chuàng)建仿射矩陣,從坐標(biāo)(0,0)移動(dòng)到模板中心(RowRef,
ColumnRef)
vector_angle_to_rigid
(0,
0,
0,
RowRef,
ColumnRef,
0,
HomMat2D)
*對模板輪廓進(jìn)行仿射變換,將其移動(dòng)到模板的中心,如圖8-10所示affine_trans_contour_xld
(Model,
ModelTrans,
HomMat2D)
*在模板匹配中,常用仿射變換來顯示結(jié)果的,每次完成匹配后,都需要把模板位置轉(zhuǎn)移到目標(biāo)位置上去。*顯示圖像
dev_display
(Image)
*顯示模板輪廓
dev_display
(ModelTrans)
4.檢索特征*讀取要搜索的圖像
read_image
(ImageSearch,
'green-dots')
*顯示圖像
dev_display
(ImageSearch)
*搜索末班圖形,允許縮放,旋轉(zhuǎn)角度在(0,3600)度之間,搜索到的數(shù)量放在變量Score中
find_scaled_shape_model
(ImageSearch,
ModelID,
rad(0),rad(360),
0.8,
1.0,
0.5,
0,
0.5,
'least_squares',
5,
0.8,
Row,
Column,
Angle,
Scale,
Score)
*對搜索到的每個(gè)形狀進(jìn)行放射變換,變換到原位置
for
I
:=
0
to
|Score|
-
1
by
1
*創(chuàng)建單位矩陣
hom_mat2d_identity
(HomMat2DIdentity)
*添加平移矩陣
hom_mat2d_translate
(HomMat2DIdentity,
Row[I],
Column[I],
HomMat2DTranslate)
*添加旋轉(zhuǎn)變換
hom_mat2d_rotate
(HomMat2DTranslate,
Angle[I],
Row[I],
Column[I],
HomMat2DRotate)
*添加比例縮放
hom_mat2d_scale
(HomMat2DRotate,
Scale[I],
Scale[I],
Row[I],
Column[I],
HomMat2DScale)
*進(jìn)行仿射變換
affine_trans_contour_xld
(Model,
ModelTrans,
HomMat2DScale)
*顯示變換結(jié)果,遍歷圖像,找到所有特征,如圖8-11所示
dev_display
(ModelTrans)
endfor
*清除模型,釋放內(nèi)存
clear_shape_model
(ModelID)
下一任務(wù)介紹:利用模板匹配查找電子零配件。利用模板匹配查找電子零配件任務(wù)32課時(shí)【任務(wù)要求】
根據(jù)形狀模板匹配對圖像進(jìn)行檢索,一次查找多個(gè)特征?!救蝿?wù)實(shí)施】
1.讀取圖像并初始化*獲取圖像
read_image
(Image,
‘Parts00.png’)
*獲取圖像尺寸
get_image_size
(Image,
Width,
Height)
*關(guān)閉窗口
dev_close_window
()
*新建一個(gè)窗口
dev_open_window_fit_image
(Image,
0,
0,
-1,
-1,
WindowHandle)
*顯示圖像
,如圖8-13所示dev_display
(Image)
2.繪制ROI,獲取區(qū)域,制作模板*設(shè)定顯示線寬
dev_set_line_width
(2)
*利用ROI工具,在圓形墊圈上繪制圓形ROI
gen_circle
(ModelRegion,
170.157,
318.094,
66.5761)
*裁剪制作模板1,如圖8-14所示reduce_domain
(Image,
ModelRegion,
TemplateImage)
*創(chuàng)建模板1
create_shape_model
(TemplateImage,
5,
rad(0),
rad(360),
rad(1.9272),
['none','no_pregeneration'],
'use_polarity',
[29,54,4],
5,
ModelID)*獲取模板1模板輪廓金字塔
get_shape_model_contours
(ModelContours,
ModelID,
1)
*利用ROI工具在蝸桿上繪制矩形ROI
gen_rectangle1
(ModelRegion1,
379.087,
307.217,
474.547,
458.583)
*裁剪制作模板2,如圖8-15所示reduce_domain
(Image,
ModelRegion1,
TemplateImage1)
*創(chuàng)建模板2
create_shape_model
(TemplateImage1,
5,
rad(0),
rad(360),
rad(1.9272),
['none','no_pregeneration'],
'use_polarity',
[29,54,4],
5,
ModelID1)
*獲取模板2模板輪廓金字塔
get_shape_model_contours
(ModelContours1,
ModelID1,
1)
3.依次讀取圖像進(jìn)行模板匹配并顯示匹配結(jié)果*依次獲取圖像,對圖像進(jìn)行檢測
TestImages
:=
['Parts01.png','Parts02.png']
for
T
:=
0
to
|TestImages|-1
by
1
*讀取圖像
read_image
(Image,
TestImages[T])
*模板匹配
find_shape_models
(Image,
[ModelID,ModelID1],
rad(0),
rad(360),
0.5,
5,
0.5,
'least_squares',
0,
0.9,
Row,
Column,
Angle,
Score,
Model)
dev_display
(Image)
if
(|Score|>=1)
*顯示匹配結(jié)果,如圖8-16所示
dev_display_shape_matching_results
([ModelID,ModelID1],
['red','green'],
Row,
Column,
Angle,
1,
1,Model)
endif
endfor
*釋放模板文件
clear_shape_model
(ModelID)
下一任務(wù)介紹:利用相關(guān)性模板匹配檢測瓶蓋圖案。利用相關(guān)性模板匹配檢測瓶蓋圖案任務(wù)42課時(shí)【任務(wù)要求】
相關(guān)性模板匹配檢測圖所示的瓶蓋圖案。
【知識鏈接】歸一化相關(guān)性NCC,(normalizationcross-correlation)是基于統(tǒng)計(jì)學(xué)計(jì)算兩組樣本相關(guān)性的算法,其取值范圍為[-1,1]之間,而對圖像來說,每個(gè)像素看成RGB的向量,整個(gè)圖像就是一個(gè)樣本集合,如果它有一個(gè)子集,與另一個(gè)樣本數(shù)據(jù)相互匹配,則它的NCC值為1;表示相關(guān)性最高,如果是-1,表完全無關(guān);基于此原理實(shí)現(xiàn)模板的匹配識別。相關(guān)性模板匹配的算子為創(chuàng)建模板算子create_ncc_model和匹配模板算子find_ncc_model。算子釋義:create_ncc_model—PrepareanNCCmodelformatching.格式:create_ncc_model(Template::NumLevels,AngleStart,AngleExtent,AngleStep,Metric:ModelID)參數(shù):Template
--模板圖像;NumLevels--金字塔的最大層級--層級越高搜索越快;AngleStart,AngleExtent--模板旋轉(zhuǎn)的起始、終止角度--弧度;AngleStep--角度步長;Metric--匹配方法設(shè)置;ModelID--模板窗口句柄。作用:創(chuàng)建相關(guān)性匹配模板。例:create_ncc_model(Image,'auto',0,0,'auto','use_polarity',ModelID)表示:模板所在的圖像為Image,金字塔層數(shù)為自動(dòng)計(jì)算,起始角度為'0-3600',步長為'自動(dòng)計(jì)算',檢測圖像中的目標(biāo)對象和模板中的目標(biāo)對象具有相同的對比度“方向”,模板句柄為ModelID。算子釋義:find_ncc_model—FindthebestmatchesofanNCCmodelinanimage.格式:find_ncc_model(Image::ModelID,AngleStart,AngleExtent,MinScore,NumMatches,MaxOverlap,SubPixel,NumLevels:Row,Column,Angle,Score)參數(shù):Image
--輸入圖像;ModelID--模板窗口句柄;AngleStart,AngleExtent--搜索時(shí)起始和終止角度;MinScore--被找到的模板最小分?jǐn)?shù)--大于等于這個(gè)值才能被匹配,[0,1],默認(rèn)0.5;NumMatches--要找到的模板最大實(shí)例數(shù),0為不限制;MaxOverlap
--要找到的模型實(shí)例的最大重疊比例;SubPixel--計(jì)算精度的設(shè)置;NumLevels
--搜索時(shí)金字塔的層級;Row,Column,Angle--輸出匹配位置的行和列坐標(biāo)、角度;Score
匹配得分。作用:進(jìn)行相關(guān)性模板匹配操作。例:find_ncc_model(Image,ModelID,0,0,0.5,1,0.5,'true',0,Row,Column,Angle,Score)表示:利用創(chuàng)建的模板
ModelID,在圖像變量Image中的圖像上匹配所需的形狀特征,起始角度為'0-3600',最小匹配度為'0.5',最大匹配個(gè)數(shù)為'1',模型的最大重疊比例為'0.5',使用亞像素精度,金字塔的層數(shù)為0,輸出匹配位置的行和列坐標(biāo)、角度以及匹配得分。
【任務(wù)實(shí)施】
1.讀取圖像并初始化*
讀取圖像
read_image
(Image,
'cap_exposure/cap_exposure_03')
*獲取圖像尺寸
get_image_size
(Image,
Width,
Height)
*關(guān)閉當(dāng)前窗口
dev_close_window
()
*新建一個(gè)窗口,和圖像大小一致
dev_open_window_fit_image
(Image,
0,
0,
-1,
-1,
WindowHandle)
*設(shè)定顯示字體
set_display_font
(WindowHandle,
16,
'mono',
'true',
'false')
*顯示圖像,如圖8-14所示dev_display
(Image)
2.獲取模板區(qū)域*增強(qiáng)對比度
scale_image_max
(Image,
ImageScaleMax)
*閾值分割
threshold
(ImageScaleMax,
Regions,
34,
255)
*填充孔洞
fill_up
(Regions,
RegionFillUp)
*開運(yùn)算,去除噪聲
opening_circle
(RegionFillUp,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 磁粉探傷檢測技術(shù)方法詳解
- 2026屆北京市東城區(qū)高三上學(xué)期期末歷史試題(含答案)
- 石油工程考試題庫及答案
- 手衛(wèi)生規(guī)范考試題及答案
- 氣壓泵護(hù)理試題及答案
- 廣東省廣州市2026年九年級上學(xué)期期末物理試卷附答案
- 2026年大學(xué)大二(計(jì)算機(jī)科學(xué)與技術(shù))計(jì)算機(jī)網(wǎng)絡(luò)階段測試試題及答案
- 2026年深圳中考數(shù)學(xué)考綱解讀精練試卷(附答案可下載)
- 昆山護(hù)理招聘題庫及答案
- 2026年深圳中考?xì)v史三輪復(fù)習(xí)沖刺試卷(附答案可下載)
- 2025 年度VC PE 市場數(shù)據(jù)報(bào)告 投中嘉川
- 2025年網(wǎng)約車司機(jī)收入分成合同
- 2026年海南財(cái)金銀河私募基金管理有限公司招聘備考題庫參考答案詳解
- 2026年GRE數(shù)學(xué)部分測試及答案
- 浙江省寧波市鎮(zhèn)海中學(xué)2026屆高二上數(shù)學(xué)期末教學(xué)質(zhì)量檢測模擬試題含解析
- (2025年)電力交易員練習(xí)試題附答案
- 2026年咨詢工程師現(xiàn)代咨詢方法與實(shí)務(wù)模擬測試含答案
- 黑龍江省生態(tài)環(huán)境廳直屬事業(yè)單位招聘考試真題2025
- GB/T 42973-2023半導(dǎo)體集成電路數(shù)字模擬(DA)轉(zhuǎn)換器
- 肝性腦病教學(xué)查房課件
- 膜式壁制造及檢驗(yàn)工藝演示文稿
評論
0/150
提交評論