影象處理結果:
主要思想:
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...