Halcon 藥品缺陷檢測

2021-10-14 01:31:26 字數 2731 閱讀 1205

影象處理結果:

主要思想:

blob +特徵

blob:使用採集影象,做藥片板的定位,藥片格仔的定位。然後將待測影象旋轉到模板影象的區域。

就可以直接使用藥片格仔的區域了。將藥片格仔區域和每次篩選出的藥片區域求交集。

特徵:篩選交集的區域,如果區域<3800或者最小灰度值<60,錯誤藥片+1。如果區域為空,說明空藥片+1.

*blob分析+特徵的方法

*環光反射的方式

*1.採集影象

*關閉視窗

dev_close_window ()

dev_update_off ()

*讀取影象

read_image (imageorig, 『blister/blister_reference』)

*開啟視窗

dev_open_window_fit_image (imageorig, 0, 0, -1, -1, windowhandle)

*設定字型

set_display_font (windowhandle, 14, 『mono』, 『true』, 『false』)

**設定邊界

dev_set_draw (『margin』)

*設定線寬3畫素

dev_set_line_width (3)

*2.定位演算法(求標準位置,用的是blob分析)

*原本是彩色影象,獲取其中的乙個灰度影象,1代表的是第一通道影象,b通道影象。1是b,2是g,3是r

access_channel (imageorig, image1, 1)

*手動二值化,通過固定引數設定

threshold (image1, region, 90, 255)

*選擇區域的凸性轉換。凸性:任意兩點相連,在所包含的區域內部

shape_trans (region, blister, 『convex』)

*先擬合橢圓,獲取區域的角度

*區域和水平的夾角。順時針為負,逆時針為正

orientation_region (blister, phi)

*求區域的中心點座標和區域面積

area_center (blister, area1, row, column)

*做乙個座標變換。當前只有角度是不同的,所以計算出的矩陣只有角度變換

vector_angle_to_rigid (row, column, phi, row, column, 0, hommat2d)

*將變換矩陣作用在之前的影象上,將之前影象變換成新的影象,大小位置不變,角度做了變化,變正

affine_trans_image (imageorig, image2, hommat2d, 『constant』, 『false』)

*3.將藥丸區域人工的設定出來

*獲取乙個空的區域

gen_empty_obj (chambers)

*代表列,從0-4,說明一列有5個

for i := 0 to 4 by 1

*代表每一列之間相差大約70個畫素。左上角第乙個區域的列座標為70

row := 88 + i * 70

*代表行,從0-2,說明一行有3個

for j := 0 to 2 by 1

*代表每一行之間相差大約150個畫素。左上角第乙個區域的行座標為163

column := 163 + j * 150

*獲取乙個區域,中心座標是 row, column,長度是64,寬度是30

gen_rectangle2 (rectangle, row, column, 0, 64, 30)

*將該區域新增到乙個容器裡面,這個容器代表的所有藥丸區域

concat_obj (chambers, rectangle, chambers)

endfor

endfor

*chambers就是藥丸區域的參考區域

*4.獲取藥丸的標準區域

*獲取之前整個藥丸板的區域做對應的變換

affine_trans_region (blister, blister, hommat2d, 『nearest_neighbor』)

*將藥丸板和藥丸區域做差值,獲取到的就是空的藥丸板區域

difference (blister, chambers, pattern)

*藥丸的區域之前是分開的,現在聯合起來

union1 (chambers, chambersunion)

*獲得藥丸板區域的角度

orientation_region (blister, phiref)

*角度+180°的原因是為了得到正值

phiref := rad(180) + phiref

*得到轉正區域的座標

area_center (blister, area2, rowref, columnref)

*上面從affine_trans_region到area_center這些**

*是為了得到模板藥丸區域的角度,重心座標。有些是不用的。例子中有,就保留對應的

對應示例程式:

check_blister.hdev

Halcon 餅乾缺陷檢測

使用的主要是blob 特徵的方式 blob用於定位 特徵 這裡主要使用的是區域所佔的面積數 和矩形度兩個指標。因為面積數是個經驗值,所以上面有些ng和ok是很接近的。讀取read image image,food hazelnut wafer 01 關閉視窗 dev close window 開啟乙...

利用HALCON進行瑕疵(缺陷)檢測(附原始碼)

halcon是德國mvtec公司開發的一套完善的標準的機器視覺演算法包,擁有應用廣泛的機器視覺整合開發環境。它節約了產品成本,縮短了軟體開發周期 halcon靈活的架構便於機器視覺,醫學影象和影象分析應用的快速開發。在歐洲以及日本的工業界已經是公認具有最佳效能的machine vision軟體。使用...

Halcon表面缺陷檢測 不均勻光照的表面缺陷

對應示例程式 find scratches bandpass fft.hdev 目標 實現不均勻光照的表面缺陷。思路為 先建立乙個合適的帶通濾波器,然後把影象 例程做了影象反轉 傅利葉變換在頻域濾波,加強高頻部分,然後變回時域做形態學處理,最後通過line gauss檢測出缺陷。影象 dev upd...