目的
確定拍攝對象的平面位置,以便能準確計算出檢測區域。以拍攝對象中有關鍵特徵的部分作為匹配模板,就可以採取模板匹配的方法實現自動定位。
第一章 緒論
相機的性能、相機鏡頭的精確程度等因素都會極大地影響到整個系統,因此,對相機的功能控制、性能測試與校正顯得尤為重要,這也是機器視覺測試系統取得理想效果的關鍵所在。自動對焦技術是獲取優質圖像的關鍵,鏡頭對焦不好對後續的圖像處理影響很大,因此,自動對焦技術是目前機器視覺的研究熱點之一。
只有同時擁有高效的軟體、模塊化I/O硬體和用於集成的軟硬體平臺這三大組成部分,才能充分發揮虛擬儀器技術性能高、擴展性強、開發時間少以及出色的集成這四大優勢。基於虛擬儀器技術的機器視覺技術可以快速地開發機器視覺應用程式,其中包括各種圖像處理的功能,並可應用在很多實際工程中。
虛擬儀器概述
1986年美國國家儀器公司NI(National Instruments)首先提出了虛擬儀器的概念。
與傳統儀器相比,虛偽儀器打破了傳統儀器的「萬能」功能概念,充分利用計算機技術,強調**「軟體就是儀器」的新概念,軟體在某種程序上可以完成傳統儀器不可能實現的硬體測試功能:儀器或系統的功能,規模可以由用戶自己定義**,虛擬儀器的開放性和功能軟體的模塊化,使得組建系統變得更加靈活簡單。虛擬儀器是建立在當今世界最新的計算機和數據採集技術的基礎上,技術更新很快。
虛擬儀器具有虛擬儀器的主要特點有:
軟體是虛擬儀器的核心虛擬儀器的性價比高虛擬儀器的出現,縮短了了儀器廠商與用戶之間的距離。虛擬儀器具有良好的人機界面虛擬儀器具有和其它設備互聯的能力虛擬儀器的硬軟體都具有開放性模塊化可重複使用及互換性等特點
課題意義
無論是傳統的檢測方法還是光電檢測方法,凡光學系統都有成像的問題,成像質量是人們對多數光學系統進行研究時比較關心的重要問題之一,因為它直接關係到研究的結果。為此,人們找出了多種方法來提高成像的質量,對焦作為提高成像質量的手段之一,己廣泛應用於顯微鏡、照相機和攝像機等多種精密儀器之中,但在過去很長的時間內都是以非自動即目測和手動調節的方式來進行的。
手動對焦是由大腦直接參與對焦過程,圖像是否對焦清晰的判斷是由人腦來決定的;而自動對焦是由系統的計算機提取圖像的某種特徵來判斷是否對焦清晰,通過調整鏡頭參數或恢復觀察的物體特徵來達到對焦的目的。
批註:
基於計算機提取圖像特徵通過調整鏡頭參數或恢復觀察的物體特徵焦距或物距的調節至關重要
圖像採集系統中為了獲得清晰的圖像,焦距或者物距的調節至關重要。在圖像測量中,判斷圖像是否對焦與圖像的高頻成分有關,當系統完全對焦時,圖像清晰,其包含邊緣信息的高頻分量最多。通常,判斷圖像對焦與否是通過對焦評價函數來衡量的。自動對焦的實現使採集系統具備一定的智能,在特殊應用中更可以代替手動對焦的環節,譬如無人視頻監控系統中焦距的調節、顯微鏡下焦距的調節等。
但是,在自動對焦系統研究發展中,人們為了得到清晰的顯微圖像、或者其他目標圖像,只得依靠專門的人員進行不斷的、反覆的手工操作,直到調到被測對象的對焦位置。這樣的過程花費的時間比較多,而且個人評判圖像的清晰度的標準跟理想的清晰圖像存在一定的差距。單憑在個人主觀條件下拍攝的圖片並不一定是最優的,而且在一些工作條件下人工操作會存在很大的困難。因此自動對焦控制系統的研究越顯其必要性,在一些特殊的領域內的應用變得很急需。
基於圖像技術的自動對焦方法採用了與傳統對焦技術完全不同的方式進行對焦,傳統的對焦方法是通過傳感器檢測焦點或測量距離的方式實現的,而基於圖像技術的對焦方法直接根據圖像分析出圖像的質量,從而獲得當前的成像狀態,通過比較不同成像位置的成像狀態,找出最佳成像位置,完成對焦操作。
第二章 LabVIEW程序設計技術
LabVIEW是一個面向最終用戶的工具。它可以增強你構建自己的科學和工程系統的能力,提供了實現儀器編程和數據採集系統的便捷途徑。使用它進行原理研究、設計、測試系統時,可以大大提高工作效率。
labview基礎:略
第三章 程序設計算法分析
3.1 基於邊緣檢測的自動對焦算法
邊緣是圖像最基本特徵的之一,包含圖像中用於識別的有用信息,本設計採用了邊緣檢測技術和爬山法去實現自動對焦。
在本設計中,邊緣檢測算法是基於邊界灰度變化的梯度。由於圖像邊緣是圖像最基本的特徵,往往攜帶著圖像中最重要的信息。因此邊緣檢測在機器視覺、圖像分析等應用中起著重要的作用。
邊緣檢測分為彩色圖像邊緣檢測和灰度圖像邊緣檢測兩種,由於彩色圖像有八種彩色基,在邊緣檢測時選用不同的彩色基將直接影響實時性、兼容性和檢測效果,其中邊緣定位是對邊緣圖像進行處理,以得到單像素寬的二值邊緣圖像,通常使用的技術是閾值法和零交叉法。邊緣定位後往往存在一些小的邊緣片斷,通常是由於噪聲等因素引起的,為了形成有意義的邊緣需要對定位後的邊緣進行連結。通常有兩種算法:局部邊緣連結和全局邊緣連結。圖像中的邊緣通常分為:階躍邊緣、斜坡邊緣、三角型屋脊邊緣、方波型屋脊邊緣、樓梯邊緣、雙階躍邊緣和雙屋脊邊緣。本設計採用灰度圖像邊緣檢測的方法。
3.2 爬山法分析
爬山法是指經過評價當前狀態後,去增加這一狀態與目標狀態的差異,經過迂迴前進,最終達到解決問題的總目標。就如同爬山一樣,為了到達山頂,有時不得不先上矮山頂,然後再下來…。這樣翻越一個個的小山頭,直到最終達到山頂。可以說,爬山法是一種"以退為進"的方法,往往具有"退一步進兩步"的作用,後退乃是為了更有效地前進。爬山法也叫逐個修改法、瞎子摸象法或k-means法。
由於圖像清晰度評價函數為一單峰曲線,由函數單調性可以得出極點區域定位的重要原則。
如果評價函數曲線F( x) 是單峰尖銳的, 則有唯一極大值點,即在極點左側單調遞增,在極點右側單調遞減。如果在閉區間[ a1 , a2 ] 內存在點p , 使F( p) > F( a1) 和F( p) > F( a2) 同時成立,則極點必在區間[ a1 , a2 ] 內。重要原則在性能曲線上的示意圖如下圖所示。
由區域定位原則,假設當前定位的區間是[ a1 ,a2 ] ,從a1一側爬山到b 點,由於F( b) > F( a1) 和F( b) > F( p1) 成立,則a2 點被捨棄,新的區間可以由[ a1 , p1 ] 確定。每次爬山都可以縮小極點區域範圍,直至收斂到極點。
在傳統爬山算法中, 僅僅靠的是比較當前位置與前一位置評價函數值的大小來確定爬山方向和步長的,**沒有充分利用爬山過程中的先驗知識。**在改進的隨機起點爬山算法中利用了三組參數來標記歷史「腳印」: { Peak , F(Peak) }表示爬山「腳印」中最大值點和其評價函數值,{ L , F( L ) } 表示靠近Peak 點的「腳印」位置和其評價函數值,{ R , F( R) } 表示另一側靠近Peak 點的「腳印」位置和其評價函數值。根據極點區域定位原則可知,極點在區間[ L , R ]內。縮小移動步長分別從L 和R 兩側搜索,更新區間範圍,最終可以收斂到極值點。
實際系統中,鏡頭初始狀態對當前成像點是隨機的,而傳統爬山算法大多是從一側起點搜尋極點。為了適應實際系統的需要,隨機起點爬山算法分為三個階段:
測試爬山方向搜索極點區域區域內收斂到極點爬山過程採用了類似於二分查找法的變步長搜索;極點區域搜索時加大步長確定粗略區域,在收斂到極點過程中逐漸縮小步長,提高精確度。
具體算法如下:
(1) 初始化基本步長和參考方向。移動參考方向上的步長,比較移動前後的評價函數值。如果評價函數值增大表示參考方向正確,取較大值Max ;否則參考方向相反。
(2) 將步長增大一倍,繼續移動參考方向上的步長,取當前位置評價函數值F( P) ,如果F( P) >Max ,則取Max = F( P) ,繼續步驟(2) ;否則表示已經跨過極點, 區域尋找結束, 分別用L , R , Peak 標記極點區域的上下界、Max 點和當前位置的距離。如果參考方向相反, 且評價函數值大於Max , 表示起始點即為極點,結束搜索。
(3) 步長縮小一倍,參考移動方向相反,交替地從L 和R 兩側縮小極點區域, 計算移動距離。用P表示當前位置,計算評價函數值F( P) 。如果Max >F( P) 表示極點在[ P : R ] 之間; 如果Max =F( P) ,則表示極點在[ L :Peak ] 之間。更新L , Peak ,R 值,繼續步驟(3) , 直至步長小於所設定的極小值限δ,搜索結束, Peak 點即為聚焦點。
爬山算法搜索聚焦點的過程如上圖所示。圖中的數字表示移動的順序。1 ~ 2 為測試爬山方向;3~5 為極點區域搜索,3 和5 為確定的邊界;4 為「腳印」極大值;分別從3 和5 的兩側縮小區域範圍,直至收斂到極點10 。
與傳統方式相比,隨機起點爬山算法複雜度有所增加,需要三組數據來記錄區域信息,但該算法有效地減少了爬山步數。根據爬山過程的不同階段特點:
在區域搜索時,移動步長較大,評價函數值變化明顯,可以採用計算量最小的灰度方差法;在收斂到極點的過程中,為了提高聚焦精度,可以採用尖銳性好的邊緣能量方式,甚至是頻域方式評價函數。
(1)建立一個描述資料庫變化的單極值函數,且使極值對應目標狀態;
(2)選取使函數值增長最大的那條規則作用於資料庫;
(3)重複上步,直到沒有規則使函數值繼續增長。
3.3 查表法
除了上述爬山法逼近最佳對焦外,還有一種簡單的算法叫查表法。就是將最佳對焦效果的圖像尺寸標準值,以及不同拍攝距離時測量到對象特定位置的尺寸預先存入一個數據文件中。在實際拍攝圖像時做同樣的測量,並與數據文件中的數據比較,然後根據其大小調整拍攝距離,達到對焦清楚的目的。這種方法原理簡單且效率高,但對焦有一定的局限性,例如,拍攝對象必須是機械尺寸一致的物體。
第四章 基於邊緣檢測的自動對焦程序設計
4.1 程序設計思想
自動對焦程序利用檢測區域的邊緣點數量作為聚焦評價函數。一個理想的聚焦評價函數應該具有
靈敏度高單值無偏離計算量小較高的信噪比等。拍攝圖像的聚焦狀況反映在空域上是圖像的邊界及細節部分是否清晰。後者可以對圖像進行微分來獲取圖像的邊緣及細節信息。所謂邊緣是指其周圍像素灰度有階躍變化或屋頂變化的那些像素的集合,邊緣點個數的多少可以直觀地反映出圖像的聚焦程度[6]。
因此,檢測圖像特定區域邊緣點的數量,可作為聚焦程度的判據。該程序就是基此思想設計的。
以下主要從各個功能模塊劃分的角度,結合前面板和後臺流程框圖進行具體描述。程序中拍攝對象是鏡頭。
4.1.1 程序總體
(1)程序人機界面
友好的人機界面是應用軟體開發的重要設計要素之一。圖4-1A是運行狀態下的程序人機界面。
(2)程序框圖總圖
圖4-1B是基於邊緣檢測的自動對焦程序的程序框圖,其各個部分具體功能將在後續中介紹。
4.1.2 程序初始化工作
要實現圖像處理,首先要做的就是創建圖像變量和獲取圖像,這涉及路徑選擇的問題,圖4-1 所示的代碼正要解決此問題,找出當前VI所在路徑,並經過重新組合,得到圖像所在路徑。通過一個FOR循環語句預先創建多個圖像變量並為每個變量設定一個特定名字,以便後續圖像處理時存放圖像數據變量。
4.1.3 定位程序模塊
要實現自動對焦通常要解決自動定位問題,自動定位目的是確定拍攝對象的平面位置,以便能準確計算出檢測區域。本程序以加工工件(鏡頭)的左下角部分作為匹配模板,然後採取模板匹配的方法實現了自動定位。因此,在人機界面所顯示的工件左下角會自動生成反映該工件位置的坐標線。
下圖是定位程序模塊。通過讀取模板圖像信息,可以找到參考標準,模板圖像為對焦效果最佳圖像,**其它圖像將與模板圖像的參數作比較,以確定離焦情況。**通過IMAQ Find CoordSys函數可以找出模板圖像原點的X,Y坐標位置,利用匹配參數設置控制項可以確定比較範圍,模式等。在這裡,程序處理的均為灰度圖。
4.1.4 邊緣檢測參數設置
下圖是邊緣參數設置前面板和程序框圖,通過Multi edge函數,可以設置檢測區域,檢測方向,檢測強度,數據處理方式,它能計算出邊緣點的數量等參數,為對焦效果評價提供了依據。
4.1.5 檢測區域的設置
選擇灰度變化比較明顯的地方作為檢測區域才能更準確地反映圖像聚焦的真實狀況。在此程序中,工件的中部是比較合適的檢測區域(見圖4-5A)。測量工件高度(見圖4-5A中的垂直檢測線)的目的是準確計算出檢測區域的範圍,因為,拍攝距離不同,工件的圖像尺寸也不一樣,但各部分的比例是相同的。並自動設置定位檢測線,檢測線密度可調,最密達到每行像素設一條檢測線。
4.1.6 檢測過程記錄
通過各種顯示控制項,可以顯示檢測過程(見圖4-6),檢測其中包括檢測趨向、檢測圖片的名稱、邊緣點數和水平偏移量。
4.1.7檢測區域拍攝對焦特性圖
邊緣點個數是判斷對焦效果的重要依據,不同的區域大小會影響邊緣點的個數多少,因此我們還要根據區域大小取其平均數作比較。下圖表明基於邊緣檢測點統計的對焦評價方式具有良好的單一峰值。其左圖顯示的是總邊緣點數,右圖顯示的是平均數,它們均有明顯的單峰。
4.1.8 測量結果
測量結果記錄了當前工件的各種參數,如工件左右偏移度,工件高度,當前測線圖片數量,當前邊緣點總數等。還將檢測線根據具體圖片的調整後的檢測線位置作了標定,並給出相應的邊緣信息,使結果清晰明了。
4.1.9 圖像信息顯示
下圖通過一系列顯示控制項,將起始拍攝圖片,當前位置,直到最佳對焦圖片顯示出來。還有當前圖片的具體路徑,當前圖片形狀和檢測線的分布。
4.2 基於邊緣檢測的自動對焦程序重點的分析
4.2.1 圖像對焦距離及隨機選擇程序
為驗證系統對檢測穩定性和適應能力,利用隨機數發生子VI隨機選擇一張圖片開始,隨機數發生子VI實則為自行創立的一個VI函數,其程序框如下圖所示。利用子VI的設計可大大改善程序的複雜混亂狀況,使調試模塊化,減少錯誤的發生。對於圖像對焦距離,利用了索引數組、截取字符串、字符串到十進位數轉換等函數。
4.2.2 水平檢測線調整程序
檢測線的調整是一個關鍵程序段為每次拍得的圖片尺寸大小不一樣,其高度也就不一樣,因些要先算出圖像的高度,並根據相應的比例算出圖像應該檢測的區域位置,再決定水平檢測線的分布。因此,4-11和4-12的程序段是相互關聯的。
4.2.3 垂直線繪製程序
繪畫垂直檢測線用於計算當前的圖像的高度,進而計算出水平的邊緣檢測線的設置範圍。
4.2.4 邊緣點等參數計算程序
下圖是邊緣點等參數計算程序,邊緣點的提取涉及複雜的算法過程,而提取出邊緣點是實現離焦判斷的基礎。
4.2.5 多檢測線邊緣檢測子程序
邊緣信息獲取提供直觀的圖像信息,從而可以做下一步的數據分析。其中最重要的信息是檢測區域中邊緣點的數量。
4.2.6 檢測過程序記錄程序
檢測過程記錄可以我們對對焦過程有一個直觀認識,能回放逼近的路線軌跡。
4.2.7 對焦效果判斷程序段
下圖是採用爬山法判斷對焦效果的程序。
批註:
1.對於顯微鏡成像以上對焦都用不了,因為沒有固定工件進行模板匹配,樣品的形狀和大小隨機變化。
2.但是有一點說對了,目前的基於閾值和方差的樣品識別程序對對焦模糊圖像的識別不太好,所以對焦是識別的前提和基礎。
3.找遍了官網論壇和lava論壇,自動對焦目前最好的解決辦法是購買一個自動對焦相機。
4.目前佳能等相機廠商都有自動對焦專利,思路基本都是在變焦光學元件之後放置一個分光鏡,LED上有一些已知的周期(DIA)光 ,通過光周期變化進行對焦識別。
5.其實位移平臺不平整,如果把位移滑臺弄絕對平整,很難,畢竟放大了200倍。
6.其實找到的跟需要實現的最類似的一個帖子:
解答是:
7.如果非要通過算法去實現自動對焦也不是不可以,但是目前寫的程序工作很不好。
首先分析一下對焦算法的工作方式:
直接圖像方差(細分為ROI和整個圖像分析)對比度分析頻域分析
這三個方法實際使用都不好使,方差會突變,邊緣對於樣品數少的情況差異會很小,由於背景都一樣,高頻分量都微乎其微
所以第一步就是修正對焦方式。
有論文中提出了對圖像進行濾波處理後再使用基於邊緣的對比度檢測
還有論文提出了對焦窗口的選擇,這可以提升運算效率。
其實我認為識別出邊緣ROI區域,然後對ROI區域進行對焦判定結果會更準。
第二步:修改z軸運行方式
1.目前使用的是遍歷當前位置上下4,8,10,20,100距離內的八個位置,其實效果不好。
2.峰位檢測效果也不好,峰寬不好設置。
3.爬山法沒嘗試,判斷太多,不太好寫
可以,明天嘗試一下
第四步:確定哪些是對焦圖像
目前是每一排的第3、7、12,矽片每次放在不一樣的位置對焦情況就會變得不一樣...