LabVIEW图像灰度分析与变换(基础篇—4)
目錄
1、圖像灰度分析
1.1、直方圖分析
1.1.1、灰度圖像直方圖分析
1.1.2、彩色圖像直方圖分析
1.2、線灰度曲線分析
1.3、圖像線灰度均值分析
1.4、圖像形心和質心分析
1.5、圖像灰度定量描述分析
2、圖像灰度變換
1、圖像灰度分析
圖像灰度分析是圖像分析中最基本的內容,它使用各種圖像灰度分析工具,提取圖像或ROI區域內的灰度特征信息。基于對圖像灰度的分析測量,可以實現最基本的機器視覺檢測系統,如目標存在性檢測系統等。
直方圖(histogram)是最基本的圖像灰度分析工具。使用它不僅可以判斷圖像中是否包含可從背景中分割出的區域、圖像的飽和度和對比度是否適合檢測任務,還能確定應該如何對圖像采集系統進行調整以獲得較高質量的圖像。
除直方圖外,線灰度分布曲線(line profile)、圖像線灰度均值(linear averages)ROl邊界灰度曲線、圖像形心(centroid,又稱幾何中心)和圖像質心(central of mass)、灰度定量描述(grayscale quantify)以及圖像結構相似度(structuresimilarity index)分析也是較為有效的圖像灰度分析工具。
1.1、直方圖分析
圖像直方圖是最基本的圖像分析工具。由于其具有簡單易用等特點,因此在圖像分割、圖像灰度變換等處理過程中發揮著重要作用。圖像直方圖常見的作用包括:判斷圖像中是否包含可以清晰地從背景中分割出的區域,分析圖像的亮度和對比度是否滿足機器視覺系統的檢測要求,以及確定如何對圖像采集系統進行調整改進。
圖像的直方圖包含了豐富的圖像信息,是圖像最基本的統計特征,描述了圖像的灰度級內容,反映了圖像的灰度分布情況。圖像的灰度直方圖以圖表的方式顯示了圖像中每個灰度級與其所對應像素數量的關系,其中像素數量可被看作灰度級的函數。圖表的橫坐標為灰度級,縱坐標是各個灰度級在圖像中出現的頻率。直方圖是概率密度函數,從概率論的角度來看灰度出現的頻率可被看作其出現的概率。
對于數字圖像來說,常見的直方圖類型有線性直方圖(linear histogram)和累計直方圖(cumulative histogram)。兩種情況下,直方圖的橫軸均為灰度級,線性直方圖的縱軸為灰度級對應的像素數,累計直方圖的縱軸則表示所有小于或等于灰度級k的像素數量之和。若以離散函數形式表示兩種類型的灰度直方圖,則線性直方圖可表示為:
累計直方圖則可表示為:
其中:
- H(k)和n,表示灰度級對應的像素數量;
- k表示灰度級;
- max表示圖像數據類型可表示的最大值,如當圖像類型為U8時,max=255。
下圖分別顯示了線性直方圖和累計直方圖的例子。其中線性直方圖說明圖像主要由3個灰度不同的部分構成,兩個灰度較低的部分比較接近,而第三個灰度較高的部分與前兩個灰度較低的部分區別明顯。累計直方圖則說明兩個灰度較低的部分大約占整個圖像的80%,而灰度較高的部分約占圖像的20%。
機器視覺系統的光源對于成像質量至關重要。當視場中光線過暗時,圖像傳感器成像過程會出現曝光不足的情況;而若光線太強,則會導致曝光過度。無論曝光不足還是曝光過度,都會導致所采集的圖像中檢測目標的特征信息丟失。使用直方圖可以直觀地判斷圖像的亮度是否滿足系統檢測要求。由于曝光不足的圖像中包含大量灰度值較低的像素,因此常會在直方圖的左邊出現峰值;相反,曝光過度的圖像常包含大量灰度值較高的像素,峰值會出現在直方圖的右端。這兩種情況如下圖所示:
1.1.1、灰度圖像直方圖分析
Nl Vision為圖像直方圖的操作提供了易用的IMAQ Histograph和IMAQ Histogram,它們位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數選板中,如下圖所示:
函數的說明和使用可參見幫助文檔:
通過一個案例了解IMAQ Histograph和IMAQ Histogram計算圖像直方圖的使用方法和區別,設計思路如下所示:
- 程序在將圖像讀入內存后即可直接使用VI計算其直方圖,其中參數#Classes指定了要將圖像中的像素分為多少級別;
- 默認情況下,8位灰度圖像的像素將被分為256級,也就是說每個灰度級都會被作為單個類來對待。NI建議采用2的整數次冪來對像素進行分級。參數Interval Range為直方圖計算時的最大和最小邊界值,只有那些落在最大值和最小值所約定的范圍內的像素才會參與直方圖的計算;
- 如果指定的像素級數超出了Interval Range中最大值和最小值約定的范圍,則最終計算所得到的像素灰度級數會與指定的灰度級數不同。
- IMAQ Histograph返回的Histograph參數是以LabVIEW Graph數據格式組織的灰度直方圖數據,它可以直接連接到Graph控件顯示直方圖曲線。Mean Value參數會返回參與直方圖計算的像素灰度平均值。Standard Deviation參數返回直方圖灰度的標準差,其值越大,則說明參與直方圖計算的灰度級分布越分散,對這個圖像來說對比度就越強。同時顯示了經過計算得到Iron.tif圖像的直方圖。
程序設計如下所示:
效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/18997435
1.1.2、彩色圖像直方圖分析
Nl Vision提供了3個進行彩色圖像直方圖的計算操作函數IMAQ ColorHistogram、IMAQ ColorHistograph和IMAQ ColorEqualize,它們位于LabVIEW的視覺與運動→Image Processing→Color Processing函數選板中。這3個函數的作用與灰度圖像的直方圖函數IMAQ Histogram、IMAQ Histograph和IMAQ Equalize類似,只是它們可作用于彩色圖像的3個不同分量,如下所示:
函數的說明和使用可參見幫助文檔:
這三個函數功能說明如下所示:
- IMAQ?ColorHistogram可適用于RGB、HSL、HSV、HSI、CIE Lab和CIE XYZ 6種色彩空間;
- 雖然lMAQ ColorHistograph僅可支持RGB、HSL、HSV和HSI4種色彩空間,但是它返回的數據卻能直接與LabVIEW的Graph數據格式兼容,直接在前面板上繪制曲線;
- IMAQ ColorEqualize可對彩色圖像的3個分量進行直方圖匹配或均衡操作。
通過一個案例來了解彩色圖像直方圖的實現方法(IMAQ ColorHistograp函數為例),程序設計思路如下所示:
- 程序先將RGB-U32格式彩色圖像pepper.png讀入內存,然后使用IMAQ Castlmage將其轉換為HSL-U32格式;
- IMAQ ColorHistograph在程序中的作用是計算HSL彩色圖像各個圖層的直方圖數據,并以LabVIEW Graph的格式返回這些數據,以方便顯示。
程序設計如下所示:
程序效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/18998403
1.2、線灰度曲線分析
線灰度曲線分析(line profile)繪制了沿圖像中某條線段的像素灰度變化。它的橫軸為線段上的像素點位置索引,縱軸為各點的灰度。線灰度分布曲線可用于檢測圖像中相鄰部分的邊界,定量表示灰度變化并可檢測圖像中是否存在某種特征。在線灰度曲線中,波峰和波谷代表圖像中某一區域灰度沿著所選線段的增減,波峰和波谷的寬度和幅度分別代表區域在圖像中的尺寸和亮度。例如,若圖像中包含某一亮度較高的區域,則沿著穿過它的線段所繪制的灰度分布曲線中將出現一個波峰,該區域相對于背景的亮度越高,則波峰就越陡峭。注意,圖像中的噪聲通常會導致一系列較窄的尖峰。
Nl Vision中IMAQ LineProfile可實現線灰度曲線分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數選板中(位置參照文章:1.1.1部分),函數的說明和使用可參見幫助文檔:
通過統計生產線上某種針形產品數量的例子理解線灰度曲線分析的應用方法,程序設計思路如下所示:
- 程序將圖像讀入內存后,先通過IMAQ GetlmageSize獲取圖像寬度;
- 然后用IMAQ Overlay Line沿著圖像中產品上部放置一條和圖像等寬度的線段無損圖層;
- 該線段所覆蓋的像素正是IMAQ Line Profile用于繪制線灰度曲線的線段。
程序設計如下所示:
在線灰度曲線中,每個上升或下降沿都代表灰度由暗到亮或由亮到暗的劇烈變化,而每個針形部件剛好對應一個"脈沖”。因此,只要統計“脈沖"的個數,即可得知圖像中包含的要檢測部件的數量,程序效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/18999559
1.3、圖像線灰度均值分析
圖像線灰度均值分析(linear averages)可以計算整個圖像或指定矩形區域內像素的4種類型線灰度均值,包括沿X軸方向上每列像素的灰度線性平均值(XAxis Average)、沿Y軸方向上每行像素的灰度線性平均(YAxis Average)、沿左下到右上角對角線方向,垂直于該對角線的像素灰度均值(X+YAxisAverage),以及沿左上角到右下角對角線方向上垂直于該對角線的像素灰度均值(×-YAxis Average)。下圖顯示了計算4種類型的圖像線灰度均值的邏輯示意圖,其中虛線代表像素灰度均值,實線表示參與計算的像素。
Nl Vision中IMAQ LinearAverages可實現圖像線灰度均值分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數選板中(位置參照文章:1.1.1部分),函數的說明和使用可參見幫助文檔:
通過使用圖像線灰度均值和ROI邊界灰度曲線檢查液態藥品灌裝質量的例子理解圖像線灰度均值分析的應用方法,程序設計思路如下所示:
- 程序先將采集到的圖像讀入內存;
- 然后使用IMAQ LinearAverage計算指定矩形區域內沿坐標X方向上每列像素的灰度線性平均值XAxis Average;
- 為了檢查藥品灌裝質量是否達標,程序所指定的矩形區域正好覆蓋灌裝達標時的液位;
- 為了直觀地讓用戶看到所指定ROI區域的位置,程序使用IMAQ Overlay Rectangle在圖像中標記出矩形區域;
- IMAQ ROIProfile用于返回指定的矩形ROI區域的灰度曲線ROI Profile。
程序設計如下所示:
觀察程序運行后返回的曲線XAxis Average和ROlProfile,可以發現對于灌裝正常的藥瓶,沿著X軸方向上每列像素的灰度線性平均值均在160附近;而未灌滿的藥瓶,其沿著X軸方向上每列像素的灰度線性平均值則在灰度范圍最大值255附近,這是由于未灌滿的藥瓶在矩形ROI范圍內白色區域所占比例要比正常藥瓶大。矩形ROI區域的邊界灰度曲線和線灰度分布曲線類似,它從矩形ROI的左上角開始,按照順時針方向繪制邊界所覆蓋的各像素灰度。由圖中ROI邊界灰度曲線可以看出,矩形上邊框對應的灰度曲線變化類似于脈沖,這是因為白色藥瓶與黑色背景之間交替變化而形成的。矩形下邊框對應的灰度曲線變化則稍有不同,其中一個未正常灌裝的藥瓶灰度"脈沖"值明顯高于其他幾個正常灌裝的藥瓶。程序效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/19000935
1.4、圖像形心和質心分析
圖像形心(centroid)又稱為圖像的幾何中心,它是指幾何區域內所有像素坐標值在各方向上的平均。若區域的像素數量為W×H(其中W為寬度,H為高度),則幾何中心可以用以下公式計算:
圖像質心(center of mass)與圖像形心是兩個完全不同的概念。質心(質量中心的簡稱)是一個假想點,它是組成目標物的所有質點質量分布的平均位置。若假定目標物由n個質點組成,它們的質量分別是m, m2,...,mn,各質點相對于某一固定點О(特殊情況下為坐標原點〉的矢徑分別為r1,r2,...,rn,質心到O的矢徑為rmass,則有:
換句話說,組成目標物的所有質點質量與質點到固定點的矢徑乘積之和,等于質心矢徑與所有質點質量和的乘積。由上式可得到質點的矢徑:
質心僅與各質點的質量大小和分布的相對位置有關。選擇的坐標系不同,質心坐標可能會不同,但相對于各質點的位置與坐標系的選擇無關。
對于大小為W×H的數字圖像來說,可將各像素灰度值p,視為質點的質量,則圖像質心位置可通過以下計算x、y兩個方向上質心坐標的公式得到:
其中xi、yi為圖像中各像素點的坐標。圖像的形心與質心相對于圖像中各個像素來說有較為明顯的特征,它們的位置通常不會隨著圖像移動、旋轉、伸縮以及噪聲的影響有大幅度變化。由于基于圖像形心和質心的特征相對較為穩定,因此可基于這些特征構建魯棒性較高的機器視覺系統。此外,在進行顆粒分析時,圖像形心或質心也常作為各種測量分析的基點。
Nl Vision中IMAQ Centroid可實現圖像線灰度均值分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數選板中(位置參照文章:1.1.1部分),函數的說明和使用可參見幫助文檔:
通過使用圖像形心和質心計算某種皮膚細胞圖像形心的例子理解圖像形心和質心的應用方法,程序設計思路如下所示:
- 程序先將采集到的細胞圖像讀入內存,并由IMAQ Threshold對圖像進行二值化處理;
- 經二值化處理后,原圖像中位于35~255灰度區間的像素灰度均被置為255;
- 此后IMAQ LowPass將濾除二值圖像中的高頻噪聲;
- IMAQ FillHole用于填充二值化的細胞圖像中各個“孔洞”,以獲取"實心"的細胞目標圖像;
- 此后又用IMAQ Remove Particle去除了圖像中各類噪聲點;
- 由于IMAQCentroid在計算圖像中某個目標的形心時要使用目標的遮罩圖像,因此程序先使用IMAQ Label對二值圖像進行標記,即將圖像中被認為屬于同一組的像素(即顆粒)值全部更改為某一固定灰度值,再由IMAQ LabelToROl和IMAQ ROIToMask2將標記的圖像轉換為ROl和需要的遮罩圖像;
- 一旦獲得細胞對應的遮罩圖像,即可由IMAQCentroid計算得到非規則形狀的細胞形心;
- 在程序中,IMAQ OverlayROl和IMAQ OverlayPoints分別在圖像中添加了細胞輪廓和細胞形心的無損圖層。
程序設計如下所示:
程序效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/19008331
1.5、圖像灰度定量描述分析
圖像灰度定量描述分析(grayscale quantify)指對整個圖像或圖像中某個區域內的像素灰度進行定量計算的過程。包括計算像素灰度均值(mean gray value)、最大值(maxmum gray value)、最小值(minimum gray value)、像素灰度的標準差(standard deviation)以及某個區域的面積(area)等。若圖像的大小為H×W,像素用P(i,j)表示,則像素的均值u和標準差o可通過以下公式計算:
Nl Vision中IMAQ Quantify 2可返回圖像或其中某一區域的定量描述參數,包括:像素灰度均值、標準差、最大值、最小值以及通過像素數量或用戶自定義單位(校準坐標及單位)表示的圖像區域面積。它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數選板中(位置參照文章:1.1.1部分),函數的說明和使用可參見幫助文檔:
若要使用IMAQ Quantify2計算圖像中某個或多個區域的灰度數據,必須使用標記過的遮罩圖像(Labeled lmage Mask)來說明各個區域,每個區域均使用一個數字標記。也就是說,8位的遮罩圖像可以最多標記256個區域,16位的遮罩圖像可以最多標記65535個區域。
使用IMAQ Quantify2計算時,若已由標記過的遮罩圖像在圖像中指定了多個區域,則IMAQ Quantify2不僅會通過Global Report簇返回整個圖像的灰度定量描述數據,還會通過Region Reports數組返回每個區域(按標記由小到大順序)的灰度定量描述參數。數組中元素的類型為簇,包含圖像中各區域的灰度定量數據。
通過使用IMAQ Quantify2計算矩形ROI區域內灰度定量描述數據的例子理解圖像灰度定量描述分析的應用方法,程序設計思路如下所示:
- 程序先為待處理圖像和遮罩圖像在內存中分配了緩沖區,隨后枚舉Light Meter目錄中的".jpg"圖像路徑,交由For循環處理;
- 針對目錄每一".jpg"圖像文件,For循環先將其讀入緩沖區,并由IMAQ Clear Overlay清除圖像中的無損圖層(若有);
- IMAQ Convert?Rectangle to ROI可以把矩形(110,25,160,85,0)轉換為ROI Descriptor數據類型,IMAQ ROl to Mask進而將矩形ROI轉換為圖像遮罩,存儲在圖像緩沖區Mask中;
- IMAQ Label會對生成的遮罩圖像進行標記,并將其傳遞給IMAQ Quantify2用于計算矩形區域內的灰度定量描述數據;
- 為便于觀察,For循環還使用IMAQ Overlay ROI在源圖中添加了矩形無損圖層;
- 為進行比較,For循環還使用IMAQ Histogram和遮罩圖像直接計算了矩形ROI區域內的灰度信息。
程序設計如下所示:
觀察程序運行結果可發現,IMAQ Quantify2和IMAQ Histogram均可計算得到某些相同的灰度數據,但前者需要以標記過的遮罩圖像作為輸入。
灰度定量描述工具常用于基于灰度的目標存在性檢查和缺陷檢測。通常情況下,先基于觀測目標上某一相對固定的特征確定單個或多個監測區域。隨后,對區域內的像素灰度進行統計測量,并通過綜合分析灰度測量結果來判斷檢測目標是否存在或產品是否存在缺陷。例如,若上述例子中矩形ROI區域代表某手機工作時顯示屏的亮度,則可以通過設定平均灰度值的閾值范圍來檢測手機顯示屏的亮度范圍是否符合要求。
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/19010776
2、圖像灰度變換
圖像灰度變換是圖像處理的基本內容之一,它以點對點映射的方式將原圖像的像素灰度值變換為新灰度值。由于像素的新灰度值僅由原像素的灰度和灰度變換函數決定,因此圖像灰度變換并不會改變像素點之間的空間關系?;叶茸儞Q主要用于圖像增強,通過它不僅可調整圖像的亮度和對比度,還能對圖像中的高灰度級或低灰度級進行壓縮或擴展,突出圖像中的重要信息。
若假定輸入圖像為SrcA(x,y),輸出圖像為Dst(x,y),則圖像灰度變換可由下式表示。顯然,它由灰度變換函數GST決定,并不改變圖像內像素點之間的空間關系。
圖像灰度變換可以分為線性和非線性兩大類。
- 線性變換的灰度變換函數為線性函數,此時運算后輸出的灰度級與輸入灰度級呈線性關系。為方便起見,將分段線性變換、窗口變換、閾值變換也作為線性變換來講解。
- 常用的非線性變換包括對數變換、指數變換和冪變換,而冪變換又分為“冪值大于1"和“冪值在0~1之間"的兩種情況。
這些灰度變換不僅可以拉伸或壓縮圖像或其中某一部分的整體灰度,也可以在壓縮或拉伸低灰度區間的同時對高灰度區間進行變換。下表對各種變換按其功能進行了分類匯總:
Nl Vision為實現圖像灰度變化提供了便捷的VI,它們位于LabVIEW的視覺與運動→lmage Processing→Processing函數選板中,如下圖所示:
為提高效率,這些VI先將各種線性和非線性灰度變換函數轉換為查找表(Lookup Table,LUT),再以查表的方式對輸入圖像或其中某一灰度區域進行灰度變換。因此Nl Vision將灰度變換又稱為LUT變換。查找表中包含輸入圖像的像素灰度和根據灰度變換函數計算得到的對應輸出灰度值。
以8位灰度圖像為例,其查找表可以用包含256個元素的數組來表示,數組元素的索引代表輸入像素灰度級,而元素中的值則是根據灰度變換函數計算得到的輸出灰度值。為變換后的新元素值。若查找表中未包含某一原圖像中的像素值,則保留其值不變。根據IMAQ UserLookup的特點,當要使用諸如分段線性變換等IMAQ MathLookup未定義的灰度變換時,就可以先根據灰度變換函數計算得到自定義的查找表,然后再調用IMAQ UserLookup,用自定義查找表對原圖的像素進行灰度映射。
當然,對于分段線性變換的特例:閾值變換,NI Vision提供了IMAQ Threshold和IMAQ MultiThreshold兩個VI,其中前一個通過雙固定閾值法將閾值區域內的像素置為1或用戶自定義的值,其余像素設置為0,而后者則可對多個灰度區域進行閾值化。IMAQ Threshold和IMAQ MultiThreshold提供了一種手動的圖像閾值分割方法。Nl Vision還支持其他自動方式的圖像閾值分割方法,說明和使用可參見幫助文檔:
通過使用IMAQ BCGLookup對圖像進行亮度、對比度和高低灰度級壓縮的例子理解圖像灰度變換的應用方法,程序設計思路如下所示:
程序將檢測用戶是否更改BCG控件的值,若BCG控件中任何一個元素的值被更改,While循環就立即執行Case分支結構中的IMAQ BCGLookup和IMAQ Histogram,重新調整原圖像的亮度和對比度,并對其進行伽馬變換。
程序設計如下所示:
程序顯示了Brightness=145、Contrast=60和Gamma=1.5時程序的運行結果。可以看出,處理后的圖像不僅亮度提高,對比度增強,而且圖像的低灰度級被壓縮,高灰度級被擴展,效果如下所示:
項目資源下載請參見:https://download.csdn.net/download/m0_38106923/19009876
圖像灰度分析和變換是圖像分析和處理的基本內容之一。圖像灰度分析通過各種圖像灰度分析工具提取圖像或ROI區域內的灰度特征信息。圖像灰度變換以點對點映射的方式將原圖像的像素灰度值變換為新灰度值,以實現圖像亮度對比度的增強。
總結
以上是生活随笔為你收集整理的LabVIEW图像灰度分析与变换(基础篇—4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB天线无线模组如何布局摆放?
- 下一篇: LabVIEW图像增强算法(基础篇—5)