日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

halcon 图像差分_Halcon编程-基于纹理的mara检测

發(fā)布時間:2023/12/1 ChatGpt 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 halcon 图像差分_Halcon编程-基于纹理的mara检测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

表面瑕疵檢測是機器視覺領(lǐng)域非常重要的一個應用。機器視覺是集光學、機電和計算機三個領(lǐng)域的一門不算新的技術(shù)。但目前表面瑕疵檢測在學界主要是計算機專業(yè)或者控制專業(yè)瞄準圖像處理方向在做,而視覺光學系統(tǒng)這一塊主要是光學工程專業(yè)在做。很少有研究者把這三塊都結(jié)合的很好,而國內(nèi)做這機器視覺(注意是機器視覺 不是計算機視覺)基本上都是小公司。

軟件這一塊就不說了,國內(nèi)的整體軟件環(huán)境不好。據(jù)我所知,日本、德國和美國在機器視覺方面有很多相對成熟的軟件。中國農(nóng)業(yè)大學的陳兵旗教授在留日期間弄過很多機器視覺方面的農(nóng)業(yè)機器人,同時他也寫過一本書介紹視覺圖像處理,后面還附錄了他們自己主推的軟件。德國的軟件就是下面要介紹的halcon。提到halcon就有必要和開源的opencv進行對比,opencv在圖像處理方面也是小有名氣,但是其成型的圖像模塊函數(shù)并不多,而且由于是開源,并沒有專門對各種圖像處理領(lǐng)域方面的檢測需求進行擴展,還是那句話,畢竟是開源。

halcon是商業(yè)軟件,國內(nèi)主要是大恒公司在代理,其在圖像處理方面,特別是檢測測量方面有很多優(yōu)勢。下面我以一個例子在介紹halcon圖像算法開發(fā)過程。

啟動軟件,ctrl+E彈出例程,選擇表面檢測中的detect_mura_defects_texture 。這個是液晶面板上的mura 損傷 。附錄上張存在損傷的圖像

在雜亂的紋理上出現(xiàn)的黑色區(qū)域就是損傷。如何檢測呢?

代碼如下:

* this example shows how to detect mura defects

* in highly textured images

*

dev_close_window ()

dev_update_off ()

Path := 'lcd/mura_defects_texture_'

read_image (Image, Path+'01')

get_image_size (Image, Width, Height)

dev_open_window (0, 0, 640, 480, 'black', WindowHandle)

set_display_font (WindowHandle, 14, 'courier', 'true', 'false')

dev_set_draw ('margin')

dev_set_line_width (3)

dev_set_color ('red')

for f := 1 to 2 by 1

read_image (Image, Path+f$'.2i')

decompose3 (Image, R, G, B)

* defects are characterized by dark patches. Hence, by substracting the

* estimated background illumination from the original image the

* defects become more apparent

estimate_background_illumination (B, ImageFFT1)

sub_image (B, ImageFFT1, ImageSub, 2, 100)

* median filter smooths out the fine texture, simplifying the following

* segmentation and final detection of defects

median_image (ImageSub, ImageMedian, 'circle', 9, 'mirrored')

watersheds_threshold (ImageMedian, Basins, 20)

* dark patches corresponding to defects have a very low energy

cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)

tuple_find (sgn(Energy-0.05), -1, Indices)

select_obj (Basins, Defects, Indices+1)

*

dev_display (Image)

dev_display (Defects)

count_obj (Defects, NDefects)

disp_message (WindowHandle, NDefects+' \'mura\' defects detected', 'window', -1, -1, 'red', 'true')

if (f < 2)

disp_continue_message (WindowHandle, 'black', 'true')

stop ()

endif

endfor

1對彩色圖像進行R G B分解,選取B作為后續(xù)圖像。這個原因是通過實驗處理的,在B圖像下黑色斑和背景差異最大吧。

2 生成背景模板,將圖像傅里葉變換到頻域中,通過高斯濾波,然后傅里葉反變換回來,得到的圖像就是背景模板

3 背景差分。采用以下函數(shù),增強兩幅圖像的差異

sub_image?( ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

ImageSub=(ImageMinuend-ImageSubtrahend)*Mult+Add

4 分水嶺算法分割,在分割之前采用中值濾波來抑制小斑點或細線。分水嶺后,圖像分割為多個輪廓(region)。

5 計算多個輪廓region的灰度信息,包括能量。相關(guān)度、同一度、對比度,通過灰度共生矩陣。 前面的兩個參數(shù)是灰度級和方向,灰度級是2^,方向即灰度共生矩陣方向。

6 根據(jù)能量信息對多個region進行篩選,篩選后的region就是檢測結(jié)果。

Halcon::tuple_find ((Energy-0.05).Sgn(), -1, &Indices);

image_opencv_test=m_ip->HImageToIplImage(m_hoImage);

int number=Indices.Num();

for (int i=0;i

{

Halcon::HTuple new_Indices;

new_Indices[0]=Indices[i].I()+1;

Halcon::select_obj (Basins, &Defects, new_Indices);

Hlong x1,x2,y1,y2;

Halcon::smallest_rectangle1(Defects,&y1,&x1,&y2,&x2);

cvRectangle(image_opencv_test,cvPoint(x1,y1),cvPoint(x2,y2),cvScalar(0,0,255),2,8,0);

}

判斷能量是否大于0.05,通過sgn函數(shù)將大于0.05的置1,小于的置-1。通過find

在(Energy-0.05).Sgn()中尋找-1出現(xiàn)的位置,注意這個位置是從0開始的。貌似這個是經(jīng)過人為排序的,所以indices 中就是前三個 0 1 2

select_obj (Basins, &Defects, new_Indices);是從Basins提取序號為new_Indices的region 。為什么重新定義一個HTuple 因為HTuple實際上是個數(shù)組。find后得到的就是一個indices 數(shù)組,里面存在三個數(shù)。

select_obj?的參數(shù)必須是HTuple,也就是數(shù)組,所以只能重新定義,而且序號從1開始,因此要加1,只能獲取數(shù)組中的值加1,

獲取的代碼為new_Indices[0]=Indices[i].I()+1; 也就是說數(shù)組中的值可以直接訪問,然后轉(zhuǎn)化為需要的類型。

這是我弄的比較笨的方法,直接通過halcon轉(zhuǎn)化c++代碼,只有一句。我覺得還是單個取出來比較靠譜。

貼一個檢測結(jié)果吧:

總結(jié)

以上是生活随笔為你收集整理的halcon 图像差分_Halcon编程-基于纹理的mara检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。