LabVIEW圖像灰度分析與變換(基礎篇—4)
圖像灰度分析
圖像灰度分析是圖像分析中最基本的內(nèi)容,它使用各種圖像灰度分析工具,提取圖像或ROI區(qū)域內(nèi)的灰度特征信息。基于對圖像灰度的分析測量,可以實現(xiàn)最基本的機器視覺檢測系統(tǒng),如目標存在性檢測系統(tǒng)等。
直方圖(histogram)是最基本的圖像灰度分析工具。使用它不僅可以判斷圖像中是否包含可從背景中分割出的區(qū)域、圖像的飽和度和對比度是否適合檢測任務,還能確定應該如何對圖像采集系統(tǒng)進行調(diào)整以獲得較高質(zhì)量的圖像。
除直方圖外,線灰度分布曲線(line profile)、圖像線灰度均值(linear averages)ROl邊界灰度曲線、圖像形心(centroid,又稱幾何中心)和圖像質(zhì)心(central of mass)、灰度定量描述(grayscale quantify)以及圖像結(jié)構(gòu)相似度(structuresimilarity index)分析也是較為有效的圖像灰度分析工具。
1.1、直方圖分析
圖像直方圖是最基本的圖像分析工具。由于其具有簡單易用等特點,因此在圖像分割、圖像灰度變換等處理過程中發(fā)揮著重要作用。圖像直方圖常見的作用包括:判斷圖像中是否包含可以清晰地從背景中分割出的區(qū)域,分析圖像的亮度和對比度是否滿足機器視覺系統(tǒng)的檢測要求,以及確定如何對圖像采集系統(tǒng)進行調(diào)整改進。
圖像的直方圖包含了豐富的圖像信息,是圖像最基本的統(tǒng)計特征,描述了圖像的灰度級內(nèi)容,反映了圖像的灰度分布情況。圖像的灰度直方圖以圖表的方式顯示了圖像中每個灰度級與其所對應像素數(shù)量的關系,其中像素數(shù)量可被看作灰度級的函數(shù)。圖表的橫坐標為灰度級,縱坐標是各個灰度級在圖像中出現(xiàn)的頻率。直方圖是概率密度函數(shù),從概率論的角度來看灰度出現(xiàn)的頻率可被看作其出現(xiàn)的概率。
對于數(shù)字圖像來說,常見的直方圖類型有線性直方圖(linear histogram)和累計直方圖(cumulative histogram)。兩種情況下,直方圖的橫軸均為灰度級,線性直方圖的縱軸為灰度級對應的像素數(shù),累計直方圖的縱軸則表示所有小于或等于灰度級k的像素數(shù)量之和。若以離散函數(shù)形式表示兩種類型的灰度直方圖,則線性直方圖可表示為:
累計直方圖則可表示為:
其中:
H(k)和n,表示灰度級對應的像素數(shù)量;
k表示灰度級;
max表示圖像數(shù)據(jù)類型可表示的最大值,如當圖像類型為U8時,max=255。
下圖分別顯示了線性直方圖和累計直方圖的例子。其中線性直方圖說明圖像主要由3個灰度不同的部分構(gòu)成,兩個灰度較低的部分比較接近,而第三個灰度較高的部分與前兩個灰度較低的部分區(qū)別明顯。累計直方圖則說明兩個灰度較低的部分大約占整個圖像的80%,而灰度較高的部分約占圖像的20%。

機器視覺系統(tǒng)的光源對于成像質(zhì)量至關重要。當視場中光線過暗時,圖像傳感器成像過程會出現(xiàn)曝光不足的情況;而若光線太強,則會導致曝光過度。無論曝光不足還是曝光過度,都會導致所采集的圖像中檢測目標的特征信息丟失。使用直方圖可以直觀地判斷圖像的亮度是否滿足系統(tǒng)檢測要求。
由于曝光不足的圖像中包含大量灰度值較低的像素,因此常會在直方圖的左邊出現(xiàn)峰值;相反,曝光過度的圖像常包含大量灰度值較高的像素,峰值會出現(xiàn)在直方圖的右端。這兩種情況如下圖所示:

1.1.1、灰度圖像直方圖分析
Nl Vision為圖像直方圖的操作提供了易用的IMAQ Histograph和IMAQ Histogram,它們位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數(shù)選板中,如下圖所示:

函數(shù)的說明和使用可參見幫助文檔:

通過一個案例了解IMAQ Histograph和IMAQ Histogram計算圖像直方圖的使用方法和區(qū)別,設計思路如下所示:
程序在將圖像讀入內(nèi)存后即可直接使用VI計算其直方圖,其中參數(shù)#Classes指定了要將圖像中的像素分為多少級別;
默認情況下,8位灰度圖像的像素將被分為256級,也就是說每個灰度級都會被作為單個類來對待。
NI建議采用2的整數(shù)次冪來對像素進行分級。
參數(shù)Interval Range為直方圖計算時的最大和最小邊界值,只有那些落在最大值和最小值所約定的范圍內(nèi)的像素才會參與直方圖的計算;
如果指定的像素級數(shù)超出了Interval Range中最大值和最小值約定的范圍,則最終計算所得到的像素灰度級數(shù)會與指定的灰度級數(shù)不同。
IMAQ Histograph返回的Histograph參數(shù)是以LabVIEW Graph數(shù)據(jù)格式組織的灰度直方圖數(shù)據(jù),它可以直接連接到Graph控件顯示直方圖曲線。Mean Value參數(shù)會返回參與直方圖計算的像素灰度平均值。Standard Deviation參數(shù)返回直方圖灰度的標準差,其值越大,則說明參與直方圖計算的灰度級分布越分散,對這個圖像來說對比度就越強。同時顯示了經(jīng)過計算得到Iron.tif圖像的直方圖。
程序設計如下所示:

效果如下所示:

1.1.2、彩色圖像直方圖分析
Nl Vision提供了3個進行彩色圖像直方圖的計算操作函數(shù)IMAQ ColorHistogram、IMAQ ColorHistograph和IMAQ ColorEqualize,它們位于LabVIEW的視覺與運動→Image Processing→Color Processing函數(shù)選板中。這3個函數(shù)的作用與灰度圖像的直方圖函數(shù)IMAQ Histogram、IMAQ Histograph和IMAQ Equalize類似,只是它們可作用于彩色圖像的3個不同分量,如下所示:

函數(shù)的說明和使用可參見幫助文檔:

這三個函數(shù)功能說明如下所示:
IMAQ ColorHistogram可適用于RGB、HSL、HSV、HSI、CIE Lab和CIE XYZ 6種色彩空間;
雖然lMAQ ColorHistograph僅可支持RGB、HSL、HSV和HSI4種色彩空間,但是它返回的數(shù)據(jù)卻能直接與LabVIEW的Graph數(shù)據(jù)格式兼容,直接在前面板上繪制曲線;
IMAQ ColorEqualize可對彩色圖像的3個分量進行直方圖匹配或均衡操作。
通過一個案例來了解彩色圖像直方圖的實現(xiàn)方法(IMAQ ColorHistograp函數(shù)為例),程序設計思路如下所示:
程序先將RGB-U32格式彩色圖像pepper.png讀入內(nèi)存,然后使用IMAQ Castlmage將其轉(zhuǎn)換為HSL-U32格式;
IMAQ ColorHistograph在程序中的作用是計算HSL彩色圖像各個圖層的直方圖數(shù)據(jù),并以LabVIEW Graph的格式返回這些數(shù)據(jù),以方便顯示。
程序設計如下所示:

程序效果如下所示:

1.2、線灰度曲線分析
線灰度曲線分析(line profile)繪制了沿圖像中某條線段的像素灰度變化。它的橫軸為線段上的像素點位置索引,縱軸為各點的灰度。線灰度分布曲線可用于檢測圖像中相鄰部分的邊界,定量表示灰度變化并可檢測圖像中是否存在某種特征。在線灰度曲線中,波峰和波谷代表圖像中某一區(qū)域灰度沿著所選線段的增減,波峰和波谷的寬度和幅度分別代表區(qū)域在圖像中的尺寸和亮度。
例如,若圖像中包含某一亮度較高的區(qū)域,則沿著穿過它的線段所繪制的灰度分布曲線中將出現(xiàn)一個波峰,該區(qū)域相對于背景的亮度越高,則波峰就越陡峭。注意,圖像中的噪聲通常會導致一系列較窄的尖峰。
Nl Vision中IMAQ LineProfile可實現(xiàn)線灰度曲線分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數(shù)選板中(位置參照文章:1.1.1部分),函數(shù)的說明和使用可參見幫助文檔:

通過統(tǒng)計生產(chǎn)線上某種針形產(chǎn)品數(shù)量的例子理解線灰度曲線分析的應用方法,程序設計思路如下所示:
程序?qū)D像讀入內(nèi)存后,先通過IMAQ GetlmageSize獲取圖像寬度;
然后用IMAQ Overlay Line沿著圖像中產(chǎn)品上部放置一條和圖像等寬度的線段無損圖層;
該線段所覆蓋的像素正是IMAQ Line Profile用于繪制線灰度曲線的線段。
程序設計如下所示:

在線灰度曲線中,每個上升或下降沿都代表灰度由暗到亮或由亮到暗的劇烈變化,而每個針形部件剛好對應一個"脈沖”。因此,只要統(tǒng)計“脈沖"的個數(shù),即可得知圖像中包含的要檢測部件的數(shù)量,程序效果如下所示:

1.3、圖像線灰度均值分析
圖像線灰度均值分析(linear averages)可以計算整個圖像或指定矩形區(qū)域內(nèi)像素的4種類型線灰度均值,包括沿X軸方向上每列像素的灰度線性平均值(XAxis Average)、沿Y軸方向上每行像素的灰度線性平均(YAxis Average)、沿左下到右上角對角線方向,垂直于該對角線的像素灰度均值(X+YAxisAverage),以及沿左上角到右下角對角線方向上垂直于該對角線的像素灰度均值(×-YAxis Average)。下圖顯示了計算4種類型的圖像線灰度均值的邏輯示意圖,其中虛線代表像素灰度均值,實線表示參與計算的像素。

Nl Vision中IMAQ LinearAverages可實現(xiàn)圖像線灰度均值分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數(shù)選板中(位置參照文章:1.1.1部分),函數(shù)的說明和使用可參見幫助文檔:

通過使用圖像線灰度均值和ROI邊界灰度曲線檢查液態(tài)****品灌裝質(zhì)量的例子理解圖像線灰度均值分析的應用方法,程序設計思路如下所示:
程序先將采集到的圖像讀入內(nèi)存;
然后使用IMAQ LinearAverage計算指定矩形區(qū)域內(nèi)沿坐標X方向上每列像素的灰度線性平均值XAxis Average;
為了檢查****品灌裝質(zhì)量是否達標,程序所指定的矩形區(qū)域正好覆蓋灌裝達標時的液位;
為了直觀地讓用戶看到所指定ROI區(qū)域的位置,程序使用IMAQ Overlay Rectangle在圖像中標記出矩形區(qū)域;
IMAQ ROIProfile用于返回指定的矩形ROI區(qū)域的灰度曲線ROI Profile。
程序設計如下所示:

觀察程序運行后返回的曲線XAxis Average和ROlProfile,可以發(fā)現(xiàn)對于灌裝正常的****瓶,沿著X軸方向上每列像素的灰度線性平均值均在160附近;而未灌滿的****瓶,其沿著X軸方向上每列像素的灰度線性平均值則在灰度范圍最大值255附近,這是由于未灌滿的****瓶在矩形ROI范圍內(nèi)白色區(qū)域所占比例要比正常****瓶大。矩形ROI區(qū)域的邊界灰度曲線和線灰度分布曲線類似,它從矩形ROI的左上角開始,按照順時針方向繪制邊界所覆蓋的各像素灰度。
由圖中ROI邊界灰度曲線可以看出,矩形上邊框?qū)幕叶惹€變化類似于脈沖,這是因為白色****瓶與黑色背景之間交替變化而形成的。矩形下邊框?qū)幕叶惹€變化則稍有不同,其中一個未正常灌裝的****瓶灰度"脈沖"值明顯高于其他幾個正常灌裝的****瓶。程序效果如下所示:

1.4、圖像形心和質(zhì)心分析
圖像形心(centroid)又稱為圖像的幾何中心,它是指幾何區(qū)域內(nèi)所有像素坐標值在各方向上的平均。若區(qū)域的像素數(shù)量為W×H(其中W為寬度,H為高度),則幾何中心可以用以下公式計算:

圖像質(zhì)心(center of mass)與圖像形心是兩個完全不同的概念。質(zhì)心(質(zhì)量中心的簡稱)是一個假想點,它是組成目標物的所有質(zhì)點質(zhì)量分布的平均位置。若假定目標物由n個質(zhì)點組成,它們的質(zhì)量分別是m, m2,...,mn,各質(zhì)點相對于某一固定點О(特殊情況下為坐標原點〉的矢徑分別為r1,r2,...,rn,質(zhì)心到O的矢徑為rmass,則有:
換句話說,組成目標物的所有質(zhì)點質(zhì)量與質(zhì)點到固定點的矢徑乘積之和,等于質(zhì)心矢徑與所有質(zhì)點質(zhì)量和的乘積。由上式可得到質(zhì)點的矢徑:

質(zhì)心僅與各質(zhì)點的質(zhì)量大小和分布的相對位置有關。選擇的坐標系不同,質(zhì)心坐標可能會不同,但相對于各質(zhì)點的位置與坐標系的選擇無關。
對于大小為W×H的數(shù)字圖像來說,可將各像素灰度值p,視為質(zhì)點的質(zhì)量,則圖像質(zhì)心位置可通過以下計算x、y兩個方向上質(zhì)心坐標的公式得到:

其中xi、yi為圖像中各像素點的坐標。圖像的形心與質(zhì)心相對于圖像中各個像素來說有較為明顯的特征,它們的位置通常不會隨著圖像移動、旋轉(zhuǎn)、伸縮以及噪聲的影響有大幅度變化。由于基于圖像形心和質(zhì)心的特征相對較為穩(wěn)定,因此可基于這些特征構(gòu)建魯棒性較高的機器視覺系統(tǒng)。此外,在進行顆粒分析時,圖像形心或質(zhì)心也常作為各種測量分析的基點。
Nl Vision中IMAQ Centroid可實現(xiàn)圖像線灰度均值分析操作,它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數(shù)選板中(位置參照文章:1.1.1部分),函數(shù)的說明和使用可參見幫助文檔:

通過使用圖像形心和質(zhì)心計算某種皮膚細胞圖像形心的例子理解圖像形心和質(zhì)心的應用方法,程序設計思路如下所示:
程序先將采集到的細胞圖像讀入內(nèi)存,并由IMAQ Threshold對圖像進行二值化處理;
經(jīng)二值化處理后,原圖像中位于35~255灰度區(qū)間的像素灰度均被置為255;
此后IMAQ LowPass將濾除二值圖像中的高頻噪聲;
IMAQ FillHole用于填充二值化的細胞圖像中各個“孔洞”,以獲取"實心"的細胞目標圖像;
此后又用IMAQ Remove Particle去除了圖像中各類噪聲點;
由于IMAQCentroid在計算圖像中某個目標的形心時要使用目標的遮罩圖像,因此程序先使用IMAQ Label對二值圖像進行標記,即將圖像中被認為屬于同一組的像素(即顆粒)值全部更改為某一固定灰度值,再由IMAQ LabelToROl和IMAQ ROIToMask2將標記的圖像轉(zhuǎn)換為ROl和需要的遮罩圖像;
一旦獲得細胞對應的遮罩圖像,即可由IMAQCentroid計算得到非規(guī)則形狀的細胞形心;
在程序中,IMAQ OverlayROl和IMAQ OverlayPoints分別在圖像中添加了細胞輪廓和細胞形心的無損圖層。
程序設計如下所示:

程序效果如下所示:

1.5、圖像灰度定量描述分析
圖像灰度定量描述分析(grayscale quantify)指對整個圖像或圖像中某個區(qū)域內(nèi)的像素灰度進行定量計算的過程。包括計算像素灰度均值(mean gray value)、最大值(maxmum gray value)、最小值(minimum gray value)、像素灰度的標準差(standard deviation)以及某個區(qū)域的面積(area)等。若圖像的大小為H×W,像素用P(i,j)表示,則像素的均值u和標準差o可通過以下公式計算:

Nl Vision中IMAQ Quantify 2可返回圖像或其中某一區(qū)域的定量描述參數(shù),包括:像素灰度均值、標準差、最大值、最小值以及通過像素數(shù)量或用戶自定義單位(校準坐標及單位)表示的圖像區(qū)域面積。它位于LabVIEW的視覺與運動→lmage Processing→Analysis圖像分析函數(shù)選板中(位置參照文章:1.1.1部分),函數(shù)的說明和使用可參見幫助文檔:

若要使用IMAQ Quantify2計算圖像中某個或多個區(qū)域的灰度數(shù)據(jù),必須使用標記過的遮罩圖像(Labeled lmage Mask)來說明各個區(qū)域,每個區(qū)域均使用一個數(shù)字標記。也就是說,8位的遮罩圖像可以最多標記256個區(qū)域,16位的遮罩圖像可以最多標記65535個區(qū)域。
使用IMAQ Quantify2計算時,若已由標記過的遮罩圖像在圖像中指定了多個區(qū)域,則IMAQ Quantify2不僅會通過Global Report簇返回整個圖像的灰度定量描述數(shù)據(jù),還會通過Region Reports數(shù)組返回每個區(qū)域(按標記由小到大順序)的灰度定量描述參數(shù)。
數(shù)組中元素的類型為簇,包含圖像中各區(qū)域的灰度定量數(shù)據(jù)。
通過使用IMAQ Quantify2計算矩形ROI區(qū)域內(nèi)灰度定量描述數(shù)據(jù)的例子理解圖像灰度定量描述分析的應用方法,程序設計思路如下所示:
程序先為待處理圖像和遮罩圖像在內(nèi)存中分配了緩沖區(qū),隨后枚舉Light Meter目錄中的".jpg"圖像路徑,交由For循環(huán)處理;
針對目錄每一".jpg"圖像文件,F(xiàn)or循環(huán)先將其讀入緩沖區(qū),并由IMAQ Clear Overlay清除圖像中的無損圖層(若有);
IMAQ Convert Rectangle to ROI可以把矩形(110,25,160,85,0)轉(zhuǎn)換為ROI Descriptor數(shù)據(jù)類型,IMAQ ROl to Mask進而將矩形ROI轉(zhuǎn)換為圖像遮罩,存儲在圖像緩沖區(qū)Mask中;
IMAQ Label會對生成的遮罩圖像進行標記,并將其傳遞給IMAQ Quantify2用于計算矩形區(qū)域內(nèi)的灰度定量描述數(shù)據(jù);
為便于觀察,F(xiàn)or循環(huán)還使用IMAQ Overlay ROI在源圖中添加了矩形無損圖層;
為進行比較,F(xiàn)or循環(huán)還使用IMAQ Histogram和遮罩圖像直接計算了矩形ROI區(qū)域內(nèi)的灰度信息。
程序設計如下所示:

觀察程序運行結(jié)果可發(fā)現(xiàn),IMAQ Quantify2和IMAQ Histogram均可計算得到某些相同的灰度數(shù)據(jù),但前者需要以標記過的遮罩圖像作為輸入。
灰度定量描述工具常用于基于灰度的目標存在性檢查和缺陷檢測。通常情況下,先基于觀測目標上某一相對固定的特征確定單個或多個監(jiān)測區(qū)域。隨后,對區(qū)域內(nèi)的像素灰度進行統(tǒng)計測量,并通過綜合分析灰度測量結(jié)果來判斷檢測目標是否存在或產(chǎn)品是否存在缺陷。
2
圖像灰度變換
圖像灰度變換是圖像處理的基本內(nèi)容之一,它以點對點映射的方式將原圖像的像素灰度值變換為新灰度值。由于像素的新灰度值僅由原像素的灰度和灰度變換函數(shù)決定,因此圖像灰度變換并不會改變像素點之間的空間關系。灰度變換主要用于圖像增強,通過它不僅可調(diào)整圖像的亮度和對比度,還能對圖像中的高灰度級或低灰度級進行壓縮或擴展,突出圖像中的重要信息。
若假定輸入圖像為SrcA(x,y),輸出圖像為Dst(x,y),則圖像灰度變換可由下式表示。顯然,它由灰度變換函數(shù)GST決定,并不改變圖像內(nèi)像素點之間的空間關系。
圖像灰度變換可以分為線性和非線性兩大類。
線性變換的灰度變換函數(shù)為線性函數(shù),此時運算后輸出的灰度級與輸入灰度級呈線性關系。
為方便起見,將分段線性變換、窗口變換、閾值變換也作為線性變換來講解。
常用的非線性變換包括對數(shù)變換、指數(shù)變換和冪變換,而冪變換又分為“冪值大于1"和“冪值在0~1之間"的兩種情況。
這些灰度變換不僅可以拉伸或壓縮圖像或其中某一部分的整體灰度,也可以在壓縮或拉伸低灰度區(qū)間的同時對高灰度區(qū)間進行變換。下表對各種變換按其功能進行了分類匯總:

Nl Vision為實現(xiàn)圖像灰度變化提供了便捷的VI,它們位于LabVIEW的視覺與運動→lmage Processing→Processing函數(shù)選板中,如下圖所示:

為提高效率,這些VI先將各種線性和非線性灰度變換函數(shù)轉(zhuǎn)換為查找表(Lookup Table,LUT),再以查表的方式對輸入圖像或其中某一灰度區(qū)域進行灰度變換。因此Nl Vision將灰度變換又稱為LUT變換。查找表中包含輸入圖像的像素灰度和根據(jù)灰度變換函數(shù)計算得到的對應輸出灰度值。
以8位灰度圖像為例,其查找表可以用包含256個元素的數(shù)組來表示,數(shù)組元素的索引代表輸入像素灰度級,而元素中的值則是根據(jù)灰度變換函數(shù)計算得到的輸出灰度值。為變換后的新元素值。若查找表中未包含某一原圖像中的像素值,則保留其值不變。根據(jù)IMAQ UserLookup的特點,當要使用諸如分段線性變換等IMAQ MathLookup未定義的灰度變換時,就可以先根據(jù)灰度變換函數(shù)計算得到自定義的查找表,然后再調(diào)用IMAQ UserLookup,用自定義查找表對原圖的像素進行灰度映射。
當然,對于分段線性變換的特例:閾值變換,NI Vision提供了IMAQ Threshold和IMAQ MultiThreshold兩個VI,其中前一個通過雙固定閾值法將閾值區(qū)域內(nèi)的像素置為1或用戶自定義的值,其余像素設置為0,而后者則可對多個灰度區(qū)域進行閾值化。IMAQ Threshold和IMAQ MultiThreshold提供了一種手動的圖像閾值分割方法。Nl Vision還支持其他自動方式的圖像閾值分割方法,說明和使用可參見幫助文檔:

通過使用IMAQ BCGLookup對圖像進行亮度、對比度和高低灰度級壓縮的例子理解圖像灰度變換的應用方法,程序設計思路如下所示:
程序?qū)z測用戶是否更改BCG控件的值,若BCG控件中任何一個元素的值被更改,While循環(huán)就立即執(zhí)行Case分支結(jié)構(gòu)中的IMAQ BCGLookup和IMAQ Histogram,重新調(diào)整原圖像的亮度和對比度,并對其進行伽馬變換。
程序設計如下所示:

程序顯示了Brightness=145、Contrast=60和Gamma=1.5時程序的運行結(jié)果。可以看出,處理后的圖像不僅亮度提高,對比度增強,而且圖像的低灰度級被壓縮,高灰度級被擴展,效果如下所示:

圖像灰度分析和變換是圖像分析和處理的基本內(nèi)容之一。圖像灰度分析通過各種圖像灰度分析工具提取圖像或ROI區(qū)域內(nèi)的灰度特征信息。圖像灰度變換以點對點映射的方式將原圖像的像素灰度值變換為新灰度值,以實現(xiàn)圖像亮度對比度的增強。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。