生活随笔
收集整理的這篇文章主要介紹了
基于视觉halcon的对pcb元件缺失快速检测参考处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
對于常規(guī)的pcb的元件缺失檢測大致步驟。
第一:售前,需要快速判斷元件是貼片,引腳式,常規(guī)裸露式,并使用ROI直接進(jìn)行快速的blob分析,使用特征面積選擇即可快速的完成早期評估工作。
第二:根據(jù)需求判斷,是否需要模板匹配單對多還是多對多的處理。
第三:實際代碼書寫,對于模板匹配的輸出文件,應(yīng)以寫入新的文件。
本次需求:對c6旁邊的電阻進(jìn)行檢測是否存在電阻或者電阻脫落的情況
halcon程序
read_image (Image
, 'D
:/shijue
/11/pcb缺陷
/Image__2022
-05-04__17
-01-48.bmp
')
*讀圖
gen_rectangle2 (ROI_0
, 58.5102, 543.681, rad(-101.309), 70.7985, 80.6545)
*對c6進(jìn)行ROI選取
reduce_domain (Image
, ROI_0
, ImageReduced2
)
*裁圖
rgb1_to_gray (ImageReduced2
, GrayImage
)
*轉(zhuǎn)為單通道灰度值
threshold (GrayImage
, Regions2
, 168, 220)
*二值化扣出c6
closing_rectangle1 (Regions2
, RegionClosing2
, 5,5)
*膨脹,防止字符沒有扣好
reduce_domain (Image
, RegionClosing2
, ImageReduced3
)
*裁圖
inspect_shape_model (ImageReduced3
, ModelImages
, ModelRegions
,5,25)
select_obj (ModelImages
, ObjectSelected
, 1)
dev_display (ObjectSelected
)
create_shape_model (ImageReduced3
, 3, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID
)
get_shape_model_contours (ModelContours
, ModelID
, 1)
*以上創(chuàng)建模板
find_shape_model (Image
, ModelID
, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, 0.5, RowCheck
, ColumnCheck
, AngleCheck
, Score
)
*根據(jù)模板尋找c6
if (|Score
| > 0)*判斷是否找到c6
vector_angle_to_rigid (0, 0, 0, RowCheck
, ColumnCheck
, AngleCheck
, HomMat2D
)affine_trans_region (ObjectSelected
, RegionAffineTrans
, HomMat2D
, 'nearest_neighbor')affine_trans_image (ModelImages
, ImageAffineTrans
, HomMat2D
, 'constant', 'false')dev_display (ImageAffineTrans
)dev_display (RegionAffineTrans
)*對找到的c6進(jìn)行仿射變化
orientation_region (RegionAffineTrans
, Phi
)area_center (RegionAffineTrans
, Area
, Row
, Column
)*獲取c6的坐標(biāo)和角度
vector_angle_to_rigid (Row
, Column
, 0, Row
, Column
, rad(0), HomMat2D
)affine_trans_image (Image
, ImageAffineTrans
, HomMat2D
, 'constant', 'false')affine_trans_region (RegionAffineTrans
, RegionAffineTrans2
, HomMat2D
, 'nearest_neighbor')*將c6運用到圖中
reduce_domain (ImageAffineTrans
, RegionAffineTrans2
, ImageReduced4
)*裁圖
rgb1_to_gray (ImageReduced4
, GrayImage1
)*轉(zhuǎn)為單通道灰度
shape_trans (GrayImage1
, RegionTrans
, 'convex')*練成一個區(qū)域
area_center (RegionTrans
, Area1
, Row1
, Column1
)orientation_region (RegionTrans
, Phi1
)*獲取中心坐標(biāo)和角度
gen_rectangle2_contour_xld (Rectangle1
, Row
, Column1
-300, Phi1
, 150,80)*根據(jù)實際繪制一個在c6旁的元件的矩形輪廓
dev_display (ImageAffineTrans
)dev_display (Rectangle1
)*顯示檢測是否正確
gen_rectangle2 (Rectangle1
, Row
, Column1
-300, Phi1
, 150,80)*根據(jù)輪廓,繪制矩形區(qū)域
reduce_domain (ImageAffineTrans
, Rectangle1
, ImageReduced5
)*裁圖,對元件進(jìn)行處理
decompose3 (ImageReduced5
, Red
, Green
, Blue
)trans_from_rgb (Red
, Green
, Blue
, Hue
, Saturation
, Intensity
, 'hsv')*轉(zhuǎn)化為hsv
threshold (Saturation
, Regions
, 0, 89)*對s進(jìn)行二值化
opening_rectangle1 (Regions
, RegionOpening
, 3,3)closing_rectangle1 (RegionOpening
, RegionClosing1
, 3,3)*以上為blob分析
connection (RegionClosing1
, ConnectedRegions1
)select_shape (ConnectedRegions1
, SelectedRegions1
, 'area', 'and', 11907.4, 14351.9)*判斷SelectedRegions1數(shù)組是否為空即可
endif
*以下為快速實驗處理,可在售前階段,快速評估產(chǎn)品是否有能力完成
*沒有元件處理,常規(guī)blob分析
gen_rectangle2 (ROI_0
, 157, 780.727, rad(-12.3391), 151.872, 74.1818)
reduce_domain (Image
, ROI_0
, ImageReduced
)
decompose3 (ImageReduced
, Red
, Green
, Blue
)
trans_from_rgb (Red
, Green
, Blue
, Hue
, Saturation
, Intensity
, 'hsv')
threshold (Saturation
, Regions
, 0, 89)
opening_rectangle1 (Regions
, RegionOpening
, 3,3)
closing_rectangle1 (RegionOpening
, RegionClosing1
, 3,3)
connection (RegionClosing1
, ConnectedRegions1
)
select_shape (ConnectedRegions1
, SelectedRegions1
, 'area', 'and', 11907.4, 14351.9)*有元件處理
read_image (Image1
, 'D
:/shijue
/11/pcb缺陷
/Image__2022
-04-03__17
-25-28.bmp
')
gen_rectangle2 (ROI_0
, 866.364, 915.182, rad(17.1027), 126.123, 79.6594)
reduce_domain (Image1
, ROI_0
, ImageReduced1
)
decompose3 (ImageReduced1
, Red1
, Green1
, Blue1
)
trans_from_rgb (Red1
, Green1
, Blue1
, Hue1
, Saturation1
, Intensity1
, 'hsv')
threshold (Saturation1
, Regions1
, 0, 81)
opening_rectangle1 (Regions1
, RegionOpening1
, 3,3)
closing_rectangle1 (RegionOpening1
, RegionClosing
,3,3)
connection (RegionClosing
, ConnectedRegions
)
select_shape (ConnectedRegions
, SelectedRegions
, 'area', 'and', 11907.4, 14351.9)
*判斷SelectedRegions數(shù)組不為為空即可
實際完成效果
無原件輸出面積選擇為空
測試的圖片參考
由于csdn有要求的圖片上傳大小,所以這里使用jpg壓縮圖像并不是原圖,有需要原圖的可以私信我。
總結(jié)
以上是生活随笔為你收集整理的基于视觉halcon的对pcb元件缺失快速检测参考处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。