孔倩倩,趙遼英,張 莉
(杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
窗戶作為建筑物外表面的一種典型結(jié)構(gòu),通常在建筑物外表面中呈現(xiàn)相同或相似的結(jié)構(gòu),窗戶的檢測(cè)與識(shí)別可以簡(jiǎn)化建筑物三維模型的構(gòu)建過(guò)程[1]。同樣,窗戶對(duì)于居室而言,其不僅起到透光、通風(fēng)的作用,窗戶的裝飾還可以美化居室,柔化室內(nèi)空間的生硬線條[2]?!按皯羰蔷邮业难劬?,窗簾則是窗戶的靈魂?!贝皯舻难b飾風(fēng)格對(duì)于協(xié)調(diào)整個(gè)室內(nèi)的裝修風(fēng)格起著重要的作用。若是能夠事先拍攝室內(nèi)的裝修效果圖,自動(dòng)在圖像中識(shí)別室內(nèi)窗戶的位置和大小,將不同款式的窗簾圖像貼于窗戶之上,使窗戶與窗簾融為一體,為用戶呈現(xiàn)直觀的裝飾效果,這將節(jié)省用戶挑選窗簾的時(shí)間和精力。基于這一背景,針對(duì)室內(nèi)的窗戶檢測(cè)具有一定的實(shí)用價(jià)值和意義。
常見(jiàn)的窗戶檢測(cè)方法可分為2類:基于圖像處理的方法[3-4]和基于機(jī)器學(xué)習(xí)的方法[5-9]。基于圖像處理的方法通常適用于單一圖像(圖像中的外墻清晰可見(jiàn),且不包括樹(shù)木、汽車等障礙物)中的窗戶檢測(cè),根據(jù)窗戶的幾何屬性,利用梯度投影[3]或閾值分割技術(shù)[4],實(shí)現(xiàn)窗戶檢測(cè)?;跈C(jī)器學(xué)習(xí)的方法通常需要有較多的窗戶訓(xùn)練樣本,通過(guò)特征提取和分類器訓(xùn)練,實(shí)現(xiàn)窗戶檢測(cè)。
現(xiàn)有窗戶檢測(cè)方法大都是針對(duì)建筑外表面的窗戶檢測(cè),而室內(nèi)窗戶檢測(cè)的相關(guān)研究鮮有報(bào)道。針對(duì)窗簾裝飾的室內(nèi)窗戶檢測(cè)通常是對(duì)單幅圖像中單個(gè)窗戶的檢測(cè),適合直接使用圖像處理的方式檢測(cè)。本文根據(jù)窗戶與周圍環(huán)境成像亮度差異以及窗戶的幾何屬性,提出一種基于圖像輪廓分析的室內(nèi)窗戶檢測(cè)方法。
1)窗戶的幾何屬性。室內(nèi)窗戶的整體形狀以矩形居多,整個(gè)窗戶由玻璃和一些用來(lái)支撐玻璃的梁組成,這些梁的面積遠(yuǎn)遠(yuǎn)小于玻璃的面積,且把整個(gè)窗戶分成了多個(gè)小矩形。支撐玻璃的梁呈現(xiàn)明顯的直線結(jié)構(gòu),且窗戶的外框也呈現(xiàn)明顯的直線結(jié)構(gòu)。
2)室內(nèi)窗戶的成像特點(diǎn)。通過(guò)窗戶的幾何特點(diǎn)可知窗戶區(qū)域除了梁之外就是玻璃。玻璃的顏色單一,紋理一致,透光性較好。根據(jù)光線的折射和反射現(xiàn)象,當(dāng)光線照射到室內(nèi)窗戶玻璃上時(shí),相較于室內(nèi)其他地方,窗戶區(qū)域顯得比較亮。
根據(jù)室內(nèi)窗戶的幾何屬性和窗戶與周圍環(huán)境成像的亮度差異,設(shè)計(jì)如圖1所示的窗戶檢測(cè)流程圖。
圖1 室內(nèi)窗戶檢測(cè)流程圖
主要思想為:通過(guò)圖像預(yù)處理過(guò)濾圖像中的噪聲得到灰度圖像,采用閾值分割法分割圖像;利用數(shù)學(xué)形態(tài)學(xué)的非線性濾波特性,對(duì)二值圖像進(jìn)行缺陷修補(bǔ);采用拓?fù)浣Y(jié)構(gòu)分析的邊界跟蹤算法提取輪廓的一系列坐標(biāo)點(diǎn);初步篩選符合條件的輪廓的最小外接矩形;判斷輪廓最小外接矩形的位置關(guān)系,求取彼此之間的距離;最后通過(guò)最小生成樹(shù)對(duì)輪廓的最小外接矩形進(jìn)行分類合并,獲得窗戶區(qū)域的最小外接矩形。
由攝像頭拍攝的室內(nèi)窗戶圖像在生成和傳送的過(guò)程中通常會(huì)受到各種噪聲的干擾,需對(duì)原始圖像進(jìn)行降噪和灰度化處理。圖像灰度化[10]是指把由R、G、B三通道數(shù)據(jù)組成的彩色圖像變?yōu)閱瓮ǖ罃?shù)據(jù)的灰度圖像。采用加權(quán)平均法對(duì)圖像進(jìn)行灰度化處理,得到:
Gray=WRR+WGG+WBB
(1)
其中WR,WG,WB分別是R,G,B的權(quán)值。在生物學(xué)中,由于人眼對(duì)藍(lán)色最不敏感,綠色最為敏感,為了得到較好的灰度圖像,通常取WG>WR>WB。經(jīng)實(shí)驗(yàn)驗(yàn)證,當(dāng)WR=0.30,WG=0.59,WB=0.11時(shí),得到的灰度圖像最為理想。
由光線的折射和反射特性可知,室外光線照射在窗戶的玻璃上時(shí),室內(nèi)窗戶區(qū)域和室內(nèi)其他區(qū)域顏色存在很大區(qū)別。這導(dǎo)致經(jīng)拍攝后的室內(nèi)圖像一般只包含目標(biāo)(窗戶)和背景(除窗戶之外的室內(nèi)區(qū)域)2類區(qū)域。利用最大類間方差法(OTSU)[11]確定圖像分割的灰度閾值T,按式(2)實(shí)現(xiàn)圖像二值分割。
(2)
其中f(x,y)為原始圖像中坐標(biāo)(x,y)點(diǎn)的像素灰度值,ft(x,y)為二值圖像中對(duì)應(yīng)像素灰度值。
為進(jìn)一步消除經(jīng)閾值分割后二值圖像中可能存在的斷續(xù)、孤立的像素點(diǎn)或噪聲,采用數(shù)學(xué)形態(tài)學(xué)[12]中的開(kāi)運(yùn)算對(duì)二值圖像進(jìn)行缺陷修補(bǔ)。修補(bǔ)后的圖像消除了像素點(diǎn)斷續(xù)、間隔的缺陷,保持了圖像原有的基本形狀特征,為后續(xù)輪廓提取創(chuàng)造了條件。
2.3.1 輪廓邊界跟蹤
采用Suzuki等提出的基于拓?fù)浣Y(jié)構(gòu)分析的邊界跟蹤算法[13],提取二值圖像中各個(gè)目標(biāo)輪廓的邊界。
邊界跟蹤算法的基本思想是:從二值圖像左上角開(kāi)始逐行掃描,給每個(gè)連通區(qū)域的邊界像元賦予相同的標(biāo)記值,不同的連通區(qū)域邊界賦予不同的標(biāo)記值,并且每個(gè)連通區(qū)域的右邊界標(biāo)記為該區(qū)域邊界標(biāo)記的負(fù)值。
二值圖像的連通區(qū)域有2類:一類是區(qū)域內(nèi)像素值都為1,對(duì)應(yīng)的輪廓邊界稱為外邊界;另一類是區(qū)域內(nèi)像素值都為0,對(duì)應(yīng)的輪廓邊界稱為孔邊界。設(shè)f(i,j)表示圖像中第i行第j列像素的像素值,行掃描過(guò)程中二值圖像每個(gè)連通區(qū)域邊界起點(diǎn)的判斷規(guī)則為:
1)如果f(i,j-1)=0且f(i,j)=1,則(i,j)是外輪廓(像素值全為1區(qū)域)邊界的起始點(diǎn)。
2)如果f(i,j)≥1且f(i,j+1)=0,則(i,j)是孔輪廓邊界的起始點(diǎn)。
由于本文在輪廓提取的過(guò)程中只跟蹤外輪廓,因此下面只介紹外輪廓的邊界跟蹤算法。圖2給出了四鄰域的外邊界跟蹤算法流程圖,其中NBD表示邊界標(biāo)記值,初值為1,(i1,j1),(i2,j2),(i3,j3),(i4,j4)表示邊界跟蹤過(guò)程中坐標(biāo)的中間變量。每掃描到一個(gè)新的外邊界起點(diǎn),NBD加1。其中輪廓最右邊的邊界標(biāo)記為-NBD,負(fù)值是為了避免輪廓右邊界被再次當(dāng)作邊界起始點(diǎn),確保一個(gè)輪廓只掃描一次。
圖2 邊界跟蹤算法流程圖
2.3.2 輪廓邊界坐標(biāo)信息的存儲(chǔ)
根據(jù)邊界跟蹤算法得到各輪廓邊界集合,以Freeman鏈碼的形式存儲(chǔ)輪廓的信息,其保存的并不是點(diǎn)的坐標(biāo),而是輪廓邊界起始點(diǎn)坐標(biāo)以及后續(xù)邊界的方向值。圖3給出了像素p的8方向鏈碼示意圖。
圖3 8方向鏈碼示意圖
鏈碼的方向和像素坐標(biāo)之間的對(duì)應(yīng)關(guān)系如表1所示。以鏈碼值3為例,如果像素p的坐標(biāo)為(i,j),則根據(jù)表1,鏈碼值為3的鄰域像素坐標(biāo)為(i-1,j+1)。因此,只需存儲(chǔ)輪廓邊界起始坐標(biāo)值及后續(xù)邊界的鏈碼值,根據(jù)表1,可以得到整個(gè)輪廓所有邊界的坐標(biāo)值。
表1 鏈碼值與像素坐標(biāo)之間的對(duì)應(yīng)關(guān)系
坐標(biāo)鏈碼值01234567X110-1-1101Y01110-1-1-1
2.3.3 輪廓篩選
由于拍攝的室內(nèi)窗戶圖像中會(huì)包含其他物體,如室內(nèi)的花盆、桌椅、衣柜、空調(diào)等,因此,并不是所提取的輪廓都屬于窗戶區(qū)域,需要對(duì)輪廓進(jìn)行初步篩選。根據(jù)輪廓的拓?fù)浣Y(jié)構(gòu)和輪廓的坐標(biāo)點(diǎn),采用最小外接矩形[14]的方式計(jì)算目標(biāo)輪廓的寬度和高度。記w和h為最小外接矩形的寬度和高度,imgW和imgH為原始圖像的寬度和高度,λ為最小外接矩形的篩選系數(shù),根據(jù)圖像窗戶區(qū)域的幾何屬性,定義篩選規(guī)則:當(dāng)某個(gè)輪廓的最小外接矩形的寬度和高度不滿足公式(3)時(shí),排除該輪廓。
(3)
經(jīng)多次實(shí)驗(yàn)驗(yàn)證,λ∈(30,50)較合適。
經(jīng)排除明顯不屬于窗戶區(qū)域的輪廓之后,剩下的輪廓中仍可能存在不是窗戶區(qū)域的輪廓,因此需要進(jìn)一步分析輪廓外接矩形關(guān)系,將剩余輪廓分為窗戶區(qū)域和非窗戶區(qū)域,并合并各窗戶區(qū)域。
經(jīng)觀察,圖像中各輪廓的最小外接矩形(以下簡(jiǎn)稱矩形)存在3種關(guān)系,分別是:包含關(guān)系、水平關(guān)系、垂直關(guān)系。以圖4為例說(shuō)明矩形間的各種關(guān)系。
圖4 輪廓最小正外接矩形的位置關(guān)系
圖4中共有6個(gè)矩形,分別標(biāo)為Ri,i=1,2,…,6。以R1為例,R1與其他矩形間的位置關(guān)系分別為:包含關(guān)系(R1,R2);水平關(guān)系(R1,R3),(R1,R4),(R1,R5);垂直關(guān)系(R1,R6)。從圖4中可以看出,R6明顯不屬于窗戶區(qū)域,應(yīng)排除,R1~R5屬于窗戶區(qū)域,應(yīng)該合并這些矩形。矩形分類合并具體過(guò)程如下。
2.4.1 求兩兩矩形之間的距離
記第i個(gè)輪廓的最小外接矩形Ri左上角坐標(biāo)為(xi,yi),其寬度和高度分別為wi和hi。將Ri左上角和右下角的坐標(biāo)值存儲(chǔ)在二維數(shù)組Ei=[ei0,ei1,ei2,ei3]中,其中:
(4)
計(jì)算兩兩矩形之間距離d的方法如下:
輸入:n個(gè)矩形坐標(biāo)數(shù)組Ei,i=1,2,…,n
輸出:矩形Ri、Rj之間的距離dij
1.對(duì)任意2個(gè)矩形Ri、Rj,i≠j
2.if ei2≤ej0//水平關(guān)系且Ri在左
3.dij=ej0-ei2
4.else if ej2 5.dij=ei0-ej2 6.else if ei3≤ej1//垂直關(guān)系且Ri在上 7.dij=ej1-ei3 8.else if ej3 9.dij=ei1-ej3 10.else //包含關(guān)系 11.dij=0 2.4.2 矩形分類 采用最小生成樹(shù)[15]法將屬于窗戶的矩形區(qū)域進(jìn)行歸類。Kruskal[16]算法是比較常用的最小生成樹(shù)算法。將各個(gè)輪廓的最小外接矩形看成連通圖的每個(gè)頂點(diǎn),矩形間的距離作為連通圖各邊的權(quán)值,按照由左到右,由上到下的順序,構(gòu)造連通圖。通過(guò)設(shè)定距離的篩選系數(shù)ds,將與其它矩形距離過(guò)遠(yuǎn)的矩形排除掉,剩下的就是屬于窗戶區(qū)域的輪廓矩形,再對(duì)剩余的矩形進(jìn)行合并,從而求得整個(gè)窗戶區(qū)域的最小外接矩形。還是以圖4為例,對(duì)圖中R1~R6進(jìn)行矩形的分類合并。R1~R6分別用頂點(diǎn)v1~v6表示。如圖5所示,圖5(a)為圖4對(duì)應(yīng)的連通圖,圖5(b)為Kruskal算法得到的最小生成樹(shù)。由于頂點(diǎn)v6即矩形R6與其他矩形的距離過(guò)遠(yuǎn),因此不屬于窗戶區(qū)域,排除掉,如圖5(b)中虛線所示。 (b) 最小生成樹(shù) 2.4.3 窗戶區(qū)域合并 輪廓矩形經(jīng)Kruskal算法分類后,對(duì)屬于窗戶區(qū)域的輪廓矩形進(jìn)行合并。設(shè)有m個(gè)矩形需要合并,記矩形的左上角和右下角橫坐標(biāo)的集合為G1,對(duì)應(yīng)的縱坐標(biāo)集合為G2,則: (5) (6) 設(shè)合并后整個(gè)窗戶的最小外接矩形左上角坐標(biāo)為(xmin,ymin),右下角坐標(biāo)為(xmax,ymax),則: (7) (8) 根據(jù)矩形左上角和右下角的坐標(biāo)可以唯一確定窗戶的最小外接矩形。 實(shí)驗(yàn)環(huán)境為CPU Intel(R) Core(TM) i5-4590 3.30 GHz,內(nèi)存為8 GB,采用Visual Studio 2015結(jié)合OpenCV 2.4.10軟件平臺(tái)。 為了驗(yàn)證提出的算法的有效性和可行性,本文對(duì)不同角度拍攝的不同室內(nèi)場(chǎng)景的多幅圖像進(jìn)行了窗戶檢測(cè)實(shí)驗(yàn)。如圖6所示,場(chǎng)景1是正對(duì)窗戶區(qū)域拍攝的單個(gè)窗戶的圖像,窗戶內(nèi)外都無(wú)障礙物遮擋;場(chǎng)景2中的窗戶是由多塊玻璃組合而成,且支撐玻璃的梁比較明顯,呈現(xiàn)明顯的直線結(jié)構(gòu),窗戶外成像比較復(fù)雜;場(chǎng)景3對(duì)窗戶的拍攝角度稍微傾斜一些,窗戶前的成像有床等障礙物的遮擋,窗戶外景物模糊;場(chǎng)景4正對(duì)窗戶區(qū)域進(jìn)行拍攝,窗戶前成像有床等障礙物的遮擋,窗戶外景物模糊;場(chǎng)景5中窗戶前后的成像都比較復(fù)雜。檢測(cè)結(jié)果如圖7所示,其中第1行為閾值分割后的二值圖,第2行為經(jīng)數(shù)學(xué)形態(tài)學(xué)處理后的二值圖,第3行為經(jīng)過(guò)輪廓提取和篩選后的各輪廓的最小外接矩形示意圖,第4行為各個(gè)輪廓的最小正外接矩形合并后的檢測(cè)結(jié)果。其中數(shù)學(xué)形態(tài)學(xué)修補(bǔ)操作采用開(kāi)運(yùn)算[17],即先對(duì)圖像做腐蝕(Erosion)處理,再對(duì)圖像做膨脹(Dilation)處理。結(jié)構(gòu)元素均為3×3的方形,處理次數(shù)均為1次。 (a) 場(chǎng)景1 (b) 場(chǎng)景2 (c) 場(chǎng)景3 (d) 場(chǎng)景4 (e) 場(chǎng)景5圖6 不同室內(nèi)場(chǎng)景 (a) 場(chǎng)景1 (b) 場(chǎng)景2 (c) 場(chǎng)景3 (d) 場(chǎng)景4 (e) 場(chǎng)景5圖7 不同室內(nèi)場(chǎng)景檢測(cè)過(guò)程及最后結(jié)果 從圖7中的第1行可以看出經(jīng)過(guò)灰度處理二值化后的圖像,已經(jīng)排除了大部分干擾的信息,但圖像中還是存在一些細(xì)小毛刺和孤立噪聲點(diǎn)。從圖7第2行可以看出,經(jīng)過(guò)形態(tài)學(xué)修補(bǔ)后,許多細(xì)小的噪聲和毛刺被消除。從圖7第3行可以看出屬于窗戶區(qū)域和在窗戶區(qū)域范圍內(nèi)的輪廓被檢測(cè)出,為表示不同物體的輪廓,采用不同灰度的矩形標(biāo)注不同物體的輪廓。從圖7最后一行可以看出將不同輪廓的矩形進(jìn)行合并,最終得到窗戶的位置,圖中深色矩形框標(biāo)注窗戶所在位置。 為了進(jìn)一步驗(yàn)證本文算法相比其他算法的優(yōu)越性,考慮到文獻(xiàn)[4]的方法也是一種基于圖像處理的方法,與本文方法具有可比性,選用文獻(xiàn)[4]中的方法對(duì)場(chǎng)景3與場(chǎng)景4進(jìn)行實(shí)驗(yàn),其結(jié)果如圖8所示。從圖8可以看出,該方法無(wú)法有效檢測(cè)室內(nèi)窗戶區(qū)域。分析其原因,主要是由于此方法是針對(duì)建筑物外表面的窗戶檢測(cè)提出的。建筑物外表面主要由窗戶和墻壁2部分組成,外墻窗戶結(jié)構(gòu)都相同或者相似,窗戶的寬和高也成一定的比例,分布具有方向性和規(guī)律性,整個(gè)建筑物外表面的圖像內(nèi)容較為簡(jiǎn)單。但是室內(nèi)環(huán)境較為復(fù)雜,室內(nèi)圖像不光有窗戶、墻壁還包括室內(nèi)物體、窗外景物投影等。雖然室內(nèi)窗戶檢測(cè)與建筑物外表面的窗戶檢測(cè)目標(biāo)都是窗戶,但是這兩者的背景有巨大的差別,所以室外窗戶檢測(cè)方法并不適合室內(nèi)窗戶的檢測(cè)。 (a) 場(chǎng)景3 (b) 場(chǎng)景4圖8 文獻(xiàn)[4]的實(shí)驗(yàn)結(jié)果 本文針對(duì)室內(nèi)窗戶檢測(cè)的問(wèn)題,融合圖像處理的多種理論知識(shí),提出了一種基于圖像輪廓分析的室內(nèi)窗戶檢測(cè)方法。本文提出的方法在不完全檢測(cè)出窗戶玻璃區(qū)域的情況下仍能檢測(cè)出室內(nèi)窗戶的區(qū)域,而且可以適用于非矩形的窗戶檢測(cè)。實(shí)驗(yàn)結(jié)果表明本文提出的方法適用于多種不同室內(nèi)場(chǎng)景圖像的窗戶檢測(cè),更多場(chǎng)景的適用性有待后續(xù)理論分析和實(shí)驗(yàn)研究。 參考文獻(xiàn): [1] Wang Ruisheng, Bach J, Ferrie F P. Window detection from mobile LiDAR data[C]// Proceedings of the 2011 IEEE Workshop on Applications of Computer Vision. 2011:58-65. [2] 侯夢(mèng)倩. 新中式風(fēng)格的室內(nèi)軟裝飾設(shè)計(jì)應(yīng)用研究[D]. 杭州:浙江理工大學(xué), 2016. [3] Recky M, Leberl F. Window detection in complex facades[C]// Proceedings of the 2nd European Workshop on Visual Information Processing. 2010:220-225. [4] Miljanovic M, Eiter T, Egly U. Detection of windows in facades using image processing algorithms[J]. Indian Journal of Computer Scienceand Engineering, 2012,3(4):539-547. [5] Ali H, Seifert C, Jindal N, et al. Windowdetection in facades[C]// Proceedings of the 14th International Conference on Image Analysis and Processing. 2007:837-842. [7] Mesolongitis A, Stamos I. Detection of windows in point clouds of urban scenes[C]// Proceedings of the 2012 IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops. 2012, doi: 10.1109/CVPRW.2012.6238910. [8] 繆君,儲(chǔ)珺,張桂梅. 基于圖像邊緣與玻璃屬性約束的窗戶檢測(cè)[J]. 圖學(xué)學(xué)報(bào), 2015,36(5):776-782. [9] 賈凱華,李和志,吳澤敏. 一種新的窗戶特征提取方法研究[J]. 測(cè)繪工程, 2016,25(10):64-68. [10] 周茗琪. 基于顯著度的圖像灰度化算法研究[D]. 上海:上海交通大學(xué), 2015. [11] Otsu N.A threshold selection method from gray-level histograms[J]. IEEE Transactions on Systems, Man, and Cybernetics, 1979,9(1):62-66. [12] 蔡劍. 基于數(shù)學(xué)形態(tài)學(xué)的圖像椒鹽噪聲去除方法[J]. 電子設(shè)計(jì)工程, 2016,24(13):182-184. [13] Suzuki S,Abe K. Topological structural analysis of digitized binary images by border following[J]. Computer Vision, Graphics, and Image Processing, 1985,30(1):32-46. [14] 李洋,李岳陽(yáng). 一種快速提取植物葉片最小外接矩形的算法[J]. 江南大學(xué)學(xué)報(bào)(自然科學(xué)版), 2015,14(3):273-277. [15] Jana P K, Naik A. An efficient minimum spanning tree based clustering algorithm[C]// Proceedings of the 2009 International Conference on Methods and Models in Computer Science. 2009, doi: 10.1109/ICM2CS.2009.5397966. [16] 袁威威. 應(yīng)用Kruskal的改進(jìn)算法求最小生成樹(shù)[J]. 江蘇第二師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2017,33(6):12-13. [17] 胡濤,呂虹,孫小虎,等. 基于水平垂直灰度開(kāi)運(yùn)算的車牌字符分割算法[J]. 電子技術(shù)應(yīng)用, 2012,38(10):109-111.3 實(shí)驗(yàn)結(jié)果分析
4 結(jié)束語(yǔ)