LabVIEW灰度圖像操作與運(yùn)算(基礎(chǔ)篇—2)
完成機(jī)器視覺(jué)系統(tǒng)的搭建、校準(zhǔn)并且確認(rèn)其可以采集檢測(cè)目標(biāo)的圖像后,就可以集中精力開(kāi)發(fā)各種圖像分析、處理以及模式識(shí)別算法。
為了設(shè)計(jì)準(zhǔn)確性和魯棒性都較高的算法,并提高其執(zhí)行速度,一般需要事先對(duì)整幅圖像或部分像素進(jìn)行操作,使圖像尺寸或形狀更適合計(jì)算機(jī)處理。某些時(shí)候還要對(duì)圖像進(jìn)行算術(shù)和邏輯運(yùn)算,以消除噪聲或提高圖像的對(duì)比度。這些前期的圖像操作或運(yùn)算不僅會(huì)在空間域增強(qiáng)圖像,還能極大地提高后續(xù)算法的執(zhí)行速度及其有效性。
1
像素操作
像素操作(Pixel Manipulation)通常用在各種圖像處理算法之前,為算法的順利執(zhí)行做準(zhǔn)備。像素操作具體包括:讀取或設(shè)置圖像中的某個(gè)像素值、更改某個(gè)區(qū)域的所有像素值、逐行或逐列讀取或更改像素值等。下圖顯示了NI Vision提供的像素操作函數(shù),它們位于LabVIEW的視覺(jué)與運(yùn)動(dòng)→Vision Utilities→Pixel Manipulation函數(shù)選板中。
函數(shù)的說(shuō)明和使用可參見(jiàn)幫助文檔:
使用LabVIEW更改單點(diǎn)像素值、行列像素值、線段所覆蓋像素值以及圖像填充的實(shí)際例子,加深對(duì)像素操作的理解和應(yīng)用。
程序設(shè)計(jì)思路如下所示:
程序開(kāi)始從文件中讀入圖像Lena,此后IMAQ SetPixelValue將坐標(biāo)為(200,200)的像素值更改為255(白色),并用IMAQ GetPixelValue讀取改動(dòng)后的值,以確認(rèn)更改成功。
IMAQ SetRowCol可以更改圖像中某一行或某一列的數(shù)據(jù),由于設(shè)置了行參數(shù)Row為FALSE,因此它將使用Pixels (U8)數(shù)組中的值更改編號(hào)為50的一列數(shù)據(jù)。
程序中Pixels (U8)數(shù)組中僅有兩個(gè)元素,此時(shí),進(jìn)行替換時(shí)只有前兩個(gè)像素被更改。
IMAQ GetRowCol可以讀取更改后的第50列像素值,以確認(rèn)像素更改操作的結(jié)果。
IMAQ GetPixelLine可以返回 (10,10)和(60,60)兩點(diǎn)所確定的線段覆蓋的像素值,這些返回的像素值被Replace Array Subset用含有100個(gè)元素的子數(shù)組替換后,再次作為IMAQ SetPixelLine的輸入,用于更改線段所覆蓋的像素值。
程序中IMAQ Filllmage會(huì)用黑色(像素值為0)對(duì)圖像進(jìn)行填充,由于使用了圖像遮罩,因此只有遮罩圖像中非零像素所覆蓋的部分會(huì)被填充。默認(rèn)情況下,圖像遮罩會(huì)被放置在使用它的圖像原點(diǎn),程序并未使用默認(rèn)值,而是用IMAQ SetOffset將圖像遮罩左上角移動(dòng)到使用它的圖像中(220,220)位置。
程序設(shè)計(jì)如下所示:
程序運(yùn)行效果如下所示:
2
灰度圖像操作
圖像操作(Image Manipulation)是指對(duì)圖像執(zhí)行的平移(Shift/Translation)、旋轉(zhuǎn)(Rotate)、縮放(Zoom)、拉直(Unwrap)等幾何變換以及重新采樣、對(duì)稱(chēng)(Symmetry)變換、提取(Extract)圖像某一區(qū)域的操作等。大多數(shù)圖像操作函數(shù)并不直接改變圖像的像素值,而只是在空間上對(duì)它們進(jìn)行重新組織或插值。
下圖顯示了NI Vision提供的圖像操作函數(shù),它們位于LabVIEW的視覺(jué)與運(yùn)動(dòng)→Vision Utilities→lmage Manipulation函數(shù)選板中。
函數(shù)的說(shuō)明和使用可參見(jiàn)幫助文檔:
2.1、圖像平移、旋轉(zhuǎn)
圖像平移是指將圖像中所有的點(diǎn)都沿著水平或垂直方向移動(dòng)一定的距離。若假定像素的初始坐標(biāo)為(x,yo),經(jīng)平移后其對(duì)應(yīng)的坐標(biāo)為(x,yt),圖像在x、y方向的平移量分別為xoffset和yoffset,則有:
圖像旋轉(zhuǎn)是指圖像像素以某一點(diǎn)為旋轉(zhuǎn)點(diǎn),沿逆時(shí)針(角度為正)或順時(shí)針(角度為負(fù))轉(zhuǎn)動(dòng)一定角度。多數(shù)情況下,圖像旋轉(zhuǎn)操作都以圖像中心點(diǎn)作為旋轉(zhuǎn)點(diǎn)。和圖像平移類(lèi)似,旋轉(zhuǎn)操作也會(huì)引起圖像大小的改變。圖像中部分像素可能會(huì)移動(dòng)到原圖范圍之外,此時(shí)可以丟棄這部分像素,以保持原圖的尺寸,也可以擴(kuò)展圖像尺寸以匹配旋轉(zhuǎn)后的圖像,如下圖所示:
接下來(lái)使用LabVIEW實(shí)現(xiàn)圖像平移和旋轉(zhuǎn),程序設(shè)計(jì)思路如下所示:
程序先在內(nèi)存中為源圖像和圖像處理過(guò)程分配了緩沖區(qū)Src和Dst,并從圖像文件中讀入大小為512×512的待處理圖像Lena。
隨后使用IMAQ Shift進(jìn)行圖像平移操作時(shí),由于Dst緩沖被連接至VI的ImageDst參數(shù),因此平移操作會(huì)保持源圖數(shù)據(jù)不變,而只是基于其數(shù)據(jù)將圖像延水平和垂直方向均移動(dòng)80像素的結(jié)果保存在Dst緩沖區(qū)中。
對(duì)于那些因平移操作變?yōu)榭瞻椎膮^(qū)域,根據(jù)Replace Value參數(shù)的值,VI將其灰度值填充為200。
程序中的IMAQ Rotate可將圖像沿順時(shí)針?lè)较蛐D(zhuǎn)30°(-30°)。
對(duì)于那些因旋轉(zhuǎn)無(wú)法在源圖像中找到對(duì)應(yīng)值的像素,VI使用了雙線性插值方法計(jì)算其值;
而對(duì)于空白區(qū)域,則使用了默認(rèn)值0進(jìn)行填充。
由于圖像旋轉(zhuǎn)后的尺寸會(huì)有變化,部分圖像數(shù)據(jù)可能會(huì)移動(dòng)到源圖像尺寸之外,因此需要通過(guò)Maintain Size參數(shù)來(lái)選擇是保持原圖像尺寸不變(True),還是要保留所有圖像數(shù)據(jù)(False)。
程序設(shè)計(jì)如下所示:
由程序的運(yùn)行結(jié)果可以看出,當(dāng)選擇保持圖像尺寸不變時(shí),旋轉(zhuǎn)到源圖像之外的數(shù)據(jù)會(huì)被丟棄;而當(dāng)選擇保留所有圖像數(shù)據(jù)時(shí),旋轉(zhuǎn)后的圖像尺寸會(huì)比源圖像尺寸大。效果如下所示:
2.2、圖像縮小、放大
使用IMAQ Resample、IMAQ Expand和IMAQ Extract 2實(shí)現(xiàn)圖像縮放功能。程序設(shè)計(jì)思路如下:
程序先在內(nèi)存中為源圖像和圖像處理過(guò)程分配了緩沖區(qū)Src和Dst,并從圖像文件中讀入大小為512×512的待處理圖像Lena。
緊接著IMAQ Resample和IMAQ Extract 2分別將圖像尺寸縮小至64×64。
雖然兩個(gè)VI均將圖像縮小至同樣尺寸,但它們使用的方法和圖像縮小后的效果卻完全不同。
IMAQResample在縮小圖像時(shí)基于三次樣條插值方法填充新圖像中的數(shù)據(jù),而IMAQ Extract2則每隔8行、8列抽取數(shù)據(jù)行列。
完成圖像縮小后,程序又使用IMAQ Resample和IMAQ Expand將縮小后的圖像放大至512×512。
程序設(shè)計(jì)如下所示:
程序運(yùn)行效果如下所示:
2.3、圖像對(duì)稱(chēng)變換
Nl Vision使用IMAQ Symmetry實(shí)現(xiàn)各種類(lèi)型的圖像對(duì)稱(chēng)變換。開(kāi)發(fā)人員只需根據(jù)需要選擇對(duì)稱(chēng)變換的類(lèi)型,而無(wú)須關(guān)心各種矩陣計(jì)算的細(xì)節(jié),即可得到想要的結(jié)果。需要注意的是,主次對(duì)角線對(duì)稱(chēng)操作僅適用于長(zhǎng)、寬相等的圖像。
程序設(shè)計(jì)如下所示:
程序運(yùn)行效果如下所示:
2.4、3D可視化
Nl Vision還提供了一個(gè)以3D方式顯示灰度圖像數(shù)據(jù)的圖像顯示函數(shù)IMAQ 3DView VI。它在顯示圖像數(shù)據(jù)時(shí),用OXY平面表示像素位置坐標(biāo),而用Z軸表示像素,程序?qū)崿F(xiàn)如下所示:
程序運(yùn)行效果如下所示:
3
灰度圖像運(yùn)算
圖像運(yùn)算是指對(duì)一幅或多幅圖像執(zhí)行加(Add)、減(Subtract)、乘(Multiply)、除(Divide)等代數(shù)運(yùn)算,與(And)、或(Or)、非(Not)、異或(Xor)等邏輯運(yùn)算,兩幅圖像的比較(Compare)以及求模(Modulo)、求差值的絕對(duì)值(AbsoluteDifference)等操作的過(guò)程。它們不僅可用于圖像采集過(guò)程中的延時(shí)比較、圖像背景中的光線偏移矯正、相互連接或相互交疊圖像目標(biāo)的識(shí)別以及多幅圖像與某一圖像模型之間的對(duì)比等,還可用于圖像的閾值化或遮罩處理、亮度或?qū)Ρ榷鹊恼{(diào)節(jié)等。此外,通過(guò)對(duì)多幅相同場(chǎng)景的圖像求平均,還能實(shí)現(xiàn)圖像的濾波功能。
下圖顯示了Nl Vision提供的圖像運(yùn)算函數(shù),它們位于LabVIEW的視覺(jué)與運(yùn)動(dòng)→lmageProcessing→Operator函數(shù)子選板中。
函數(shù)的說(shuō)明和使用可參見(jiàn)幫助文檔:
圖像運(yùn)算過(guò)程遵循以下規(guī)則:
1、兩幅灰度圖像進(jìn)行運(yùn)算時(shí),圖像中的像素逐―進(jìn)行點(diǎn)對(duì)點(diǎn)運(yùn)算。
2、一幅灰度圖像與某一常量進(jìn)行運(yùn)算時(shí),圖像中的所有像素均與該常量進(jìn)行該運(yùn)算。
3、當(dāng)RGB彩色圖像與灰度圖像或某一常量進(jìn)行運(yùn)算時(shí),將灰度圖像或常量與RGB圖像的每一分量進(jìn)行運(yùn)算。
4、兩幅RGB圖像進(jìn)行運(yùn)算時(shí),對(duì)應(yīng)分量進(jìn)行運(yùn)算。
此外,當(dāng)參與運(yùn)算的兩幅圖像類(lèi)型不同時(shí),運(yùn)算后所得圖像的類(lèi)型將與位深度較大的圖像類(lèi)型保持一致。例如,類(lèi)型為U8的灰度圖像與類(lèi)型為I16的灰度圖像相加時(shí),所得到的圖像類(lèi)型為I16;當(dāng)某一灰度圖像減去某一常量時(shí),所得圖像的類(lèi)型仍為灰度圖像;U8類(lèi)型的灰度圖像或常量與RGB32彩色圖像進(jìn)行運(yùn)算時(shí),得到的圖像仍為RGB32彩色圖像;RGB32與RGB64圖像進(jìn)行運(yùn)算時(shí),將得到類(lèi)型為RGB64的圖像。
3.1、圖像平均降噪
圖像加法運(yùn)算最常見(jiàn)的用途是實(shí)現(xiàn)圖像的疊加功能。利用此功能,可以將不同圖像中的目標(biāo)合并到同一圖像中。圖像和一個(gè)常量相加可以提高圖像的整體亮度。此外,利用圖像相加運(yùn)算可以實(shí)現(xiàn)圖像的空間濾波功能。
具體來(lái)說(shuō),可以對(duì)同一場(chǎng)景的多幅圖像求平均,以便有效地降低加性(additive)隨機(jī)噪聲。對(duì)于經(jīng)過(guò)長(zhǎng)距離模擬通信方式傳送的圖像(如航天器傳回的星際圖像),這種處理必不可少。
接下來(lái)使用圖像加法運(yùn)算實(shí)現(xiàn)圖像平均降噪,程序設(shè)計(jì)思路如下所示:
程序先在內(nèi)存分配了Average和temp兩個(gè)緩沖區(qū)。
然后枚舉出保存噪聲圖像的文件夾中所有.png圖文件名,并將第一幅圖像讀入Average緩沖區(qū)中。
此后,F(xiàn)or循環(huán)逐個(gè)將其他噪聲圖像讀入temp緩沖區(qū),并與Average中的圖像進(jìn)行相加。
相加的結(jié)果將替換Average緩沖區(qū)中的原有圖像,而且其圖像引用會(huì)被shift寄存器傳遞至下一次循環(huán)。
在后續(xù)循環(huán)中,新讀入temp緩沖區(qū)的圖像將繼續(xù)與之前Average緩沖區(qū)中的計(jì)算結(jié)果相加,直到所有圖像都加到一起。
循環(huán)結(jié)束后,只要將Average緩沖區(qū)中的圖像相加結(jié)果與圖像總數(shù)相除,即可得到圖像的平均結(jié)果。
由于圖像相加過(guò)程可能出現(xiàn)計(jì)算結(jié)果超出原圖像的數(shù)據(jù)類(lèi)型范圍的情況,因此在循環(huán)開(kāi)始前,先將保存計(jì)算結(jié)果的Average緩沖區(qū)中圖像的類(lèi)型由U8轉(zhuǎn)換為I16,再在計(jì)算完成后轉(zhuǎn)換為原類(lèi)型。
程序?qū)崿F(xiàn)如下所示:
運(yùn)行程序并觀察程序運(yùn)行過(guò)程中圖像的顯示,不難發(fā)現(xiàn)經(jīng)平均計(jì)算后的圖像明顯比原圖像含有較少的噪聲,效果如下所示:
3.2、提取夜視儀閃光故障點(diǎn)
圖像相減運(yùn)算又稱(chēng)為圖像差分運(yùn)算,常用于去除不需要的疊加性圖案或檢測(cè)場(chǎng)景的變化或運(yùn)動(dòng)目標(biāo)。在工業(yè)環(huán)境下,如果圖像背景可控,差分運(yùn)算和閾值化處理結(jié)合能快速有效地建立機(jī)器視覺(jué)系統(tǒng)。如果將同一景物在不同時(shí)間拍攝的圖像或同一景物在不同波段的圖像相減,即可獲得圖像的差影。圖像差影可用于動(dòng)態(tài)監(jiān)測(cè)、運(yùn)動(dòng)目標(biāo)的檢測(cè)和跟蹤、圖像背景的消除及目標(biāo)識(shí)別等。差影技術(shù)還可以用于消除圖像中不必要的疊加圖像,將混合圖像中重要的信息分離出來(lái)。
接下來(lái)使用圖像相減運(yùn)算實(shí)現(xiàn)提取夜視儀閃光故障點(diǎn),士兵常用夜視設(shè)備在夜間進(jìn)行偵察瞄準(zhǔn)等活動(dòng),為避免出現(xiàn)誤判,必須對(duì)設(shè)備進(jìn)行穩(wěn)定性試驗(yàn),確保生產(chǎn)設(shè)備的可靠性,即正常工作環(huán)境下,輸出的圖像能在足夠長(zhǎng)的時(shí)間內(nèi)保持穩(wěn)定,且無(wú)黑斑或閃光出現(xiàn)。為了提取閃光點(diǎn),程序在濾除兩幅圖像中的高頻噪聲后將它們相減。為了便于觀察,程序還使用IMAQ Inverse對(duì)計(jì)算結(jié)果中的圖像灰度進(jìn)行了反轉(zhuǎn)。
程序?qū)崿F(xiàn)如下所示:
效果如下所示:
3.3、人體骨骼圖像增強(qiáng)
圖像的乘法和除法運(yùn)算可用來(lái)擴(kuò)展或壓縮圖像的灰度級(jí),實(shí)現(xiàn)灰度級(jí)變換。常見(jiàn)的用法是圖像與一個(gè)常數(shù)相乘或相除,以調(diào)整圖像灰度。
乘法運(yùn)算也可用來(lái)遮住或提取圖像的某些部分,其典型應(yīng)用是通過(guò)遮罩提取圖像。提取時(shí),對(duì)于需要保留下來(lái)的區(qū)域,掩模圖像的值置為1;而在需要被抑制掉的區(qū)域,掩模圖像的值置為0。此外,由于時(shí)域的卷積和相關(guān)運(yùn)算對(duì)應(yīng)于頻域的乘積運(yùn)算,因此乘法運(yùn)算也被用作一種技巧來(lái)實(shí)現(xiàn)卷積或相關(guān)處理。
圖像的除法運(yùn)算可被看作一幅圖像取反后與另一幅圖像相乘的結(jié)果,它不但可用于改變圖像的灰度級(jí),還能用來(lái)檢測(cè)圖像間的差別。圖像絕對(duì)值運(yùn)算計(jì)算的是兩幅圖像中對(duì)應(yīng)像素相減后的絕對(duì)值,而除法運(yùn)算則計(jì)算對(duì)應(yīng)像素的比率變化,因此也常稱(chēng)圖像除法為“比率變換”。
接下來(lái)使用乘法運(yùn)算增強(qiáng)人體骨骼圖像,原圖像中的人體骨骼很難看清,有必要將圖像和一個(gè)常量相乘以擴(kuò)展其灰度級(jí),從而增強(qiáng)圖像的亮度和對(duì)比度。
程序設(shè)計(jì)思路如下所示:
程序先為圖像讀取分配了緩沖區(qū)Src,并從文件PET.tif中讀入灰度圖像數(shù)據(jù)。
為了避免乘法運(yùn)算過(guò)程中數(shù)據(jù)溢出,程序?qū)⒆x入的灰度圖像類(lèi)型從U8轉(zhuǎn)換為I16,并且分配了I16類(lèi)型的緩沖區(qū)以保存計(jì)算結(jié)果。
IMAQ Multiply將I16類(lèi)型的源圖像與常量4相乘,將其灰度級(jí)放大4倍。
此后再由IMAQ Cast lmage將計(jì)算結(jié)果轉(zhuǎn)換為U8類(lèi)型并顯示在圖像控件中。
程序結(jié)束前釋放所有分配的緩沖區(qū)。
由程序運(yùn)行結(jié)果可以看出,倍乘后的圖像明顯比原圖像易于觀察。
程序?qū)崿F(xiàn)如下所示:
效果如下所示:
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
攝像頭相關(guān)文章:攝像頭原理