李 科,毋 濤,劉青青
(西安工程大學(xué) 計算機科學(xué)學(xué)院,陜西 西安 710048)
根據(jù)二維圖像獲得人體輪廓及后續(xù)得出人體尺寸數(shù)據(jù)是服裝生產(chǎn)業(yè)中一個值得研究的技術(shù)點,近幾年很多大的服裝企業(yè)都開拓了服裝定制業(yè)務(wù),通過調(diào)查95%的定制業(yè)務(wù)都通過線下量體師手工測量獲得數(shù)據(jù)來完成訂單。那么如何低成本、高效率地線上完成人體尺寸測量是推進(jìn)服裝定制業(yè)務(wù)發(fā)展的一個重要的研究課題。
人體輪廓的提取是使人體尺寸數(shù)據(jù)完整的基礎(chǔ),人體輪廓的本質(zhì)是邊緣檢測,邊緣檢測算子檢測邊緣的基本依據(jù)是圖像邊緣的突變性質(zhì)。目前經(jīng)典的邊緣檢測算子有Roberts、Sobel[1-2]、Prewitt[3]、Log、拉普拉斯[4]、Canny算子等。
Roberts算子、Sobel算子、Prewitt算子是基于灰度圖像邊緣的一階導(dǎo)數(shù)有極值。Robert算子又稱Roberts邊緣檢測算子,之前被用到圖像增強中的銳化,是一種利用局部差分算子尋找邊緣的算子,通常在圖像邊緣會產(chǎn)生較寬的響應(yīng)。Robert算子和其他算子相比,在不經(jīng)過后處理時,邊緣定位的精準(zhǔn)度不是很高并會出現(xiàn)邊緣丟失的現(xiàn)象,導(dǎo)致獲取的邊緣輪廓圖不是完整的;Sobel算子是通過將圖像中的像素點在四個方向上的鄰點的灰度值加權(quán)差,在邊緣處取得最大值進(jìn)行邊緣檢測,Sobel算子不僅對噪聲有著平滑抑制作用,而且產(chǎn)生了較好的檢測結(jié)果。但是檢測結(jié)果邊緣較粗,存在偽邊緣的情況。Prewitt算子利用像素點鄰點的灰度差,在邊緣處取到極值檢測邊緣。Prewitt算子采用3×3模板,Robert算子采用2×2模板對區(qū)域內(nèi)的像素值進(jìn)行計算,因此Prewitt算子在水平方向和垂直方向的邊緣檢測結(jié)果比Robert算子更加優(yōu)良。Prewitt算子是平均濾波,Robert算子是加權(quán)平均濾波且檢測的圖像邊緣可能大于2個像素。Prewitt算子與Robert算子在對灰度漸變低噪聲的圖像上能得到較好的檢測效果,但是對于混合多復(fù)雜噪聲的圖像,處理效果就不理想了。
拉普拉斯、Log算子均屬于二階微分算子,是通過檢測二階導(dǎo)數(shù)過零點來判斷邊緣點。二階微分與一階微分相比,邊緣定位能力更強,銳化效果更好。拉普拉斯算子是n維歐幾里德空間中的一個二階微分算子,是一個與方向無關(guān)的各向同性(旋轉(zhuǎn)軸對稱)邊緣檢測算子,因為方向信息缺失,并且產(chǎn)生雙像素,對噪聲比較敏感。因此在使用前都是與高斯濾波結(jié)合在一起方可用于圖像邊緣檢測。Log算子是考慮到拉普拉斯邊緣檢測算子沒有對圖像做平滑處理,所以對噪聲很敏感,因此先對圖像進(jìn)行高斯平滑處理,然后再與拉普拉斯算子進(jìn)行卷積。Log算子因為進(jìn)行了高斯濾波所以克服了一定程度的噪聲影響,但其可能產(chǎn)生假邊緣并且對一些曲線邊緣的定位誤差較大。
Canny算子是另外一類邊緣檢測算子,首先使用高斯模糊來去掉噪聲,其次利用和其他算子不同的方向搜索,然后進(jìn)行非最大值抑制達(dá)到邊緣細(xì)化,最后使用雙閾值檢測和連接邊緣的方式得到邊緣圖像。通過與其他算子相比較,Canny算子在各方面性能優(yōu)越,所以一直以來都被作為一種標(biāo)準(zhǔn)的邊緣算子。還有很多學(xué)者在Canny邊緣檢測算法的基礎(chǔ)上做了改進(jìn)。比如宋人杰與王文豪等人[5-6]在圖像平滑處理中使用混合濾波器代替高斯濾波器對圖像進(jìn)行平滑去噪,結(jié)合線性邊緣增強與Otsu算法對Canny算法中的雙閾值自適應(yīng)。段紅燕等人[7]用雙邊濾波代替?zhèn)鹘y(tǒng)高斯濾波,通過控制雙邊濾波器權(quán)重參數(shù)來減少邊緣有效數(shù)據(jù)的丟失,并利用小波變換對圖像高頻系數(shù)進(jìn)行放大并縮小低頻系數(shù),從而增強圖像邊緣細(xì)節(jié)。因為其高性能,Canny邊緣檢測算法在各種圖像處理中應(yīng)用廣泛[8-13]。
在獲取人體輪廓過程中,光照程度、復(fù)雜背景等都會成為影響到輪廓圖精度的因素,目前很多學(xué)者對人體輪廓提取技術(shù)有一些研究。師樂等[14]首先提取膚色區(qū)域,然后在HSV色彩空間分割提取服裝區(qū)域,最后將膚色區(qū)域與服裝區(qū)域線性融合。該方法有效降低了復(fù)雜背景等條件的限制,但是過程過于繁瑣,在線性融合的過程中存在誤差。Lee等[15]提出一種基于骨架的人體輪廓提取方法,該方法對背景和光照條件沒有特點要求,但是計算過程比較繁瑣,處理效率低。Wang[16]提出一種可以克服復(fù)雜背景影響的方法,利用HSV顏色空間與橢圓膚色模型相結(jié)合的方式獲得人體輪廓,但是該方法容易受光照影響。王林等[17]提出一種將卷積神經(jīng)網(wǎng)絡(luò)與Gabor小波特征結(jié)合的人體輪廓提取方法,該方法的檢測準(zhǔn)確度較高,但是該方法是針對于單一背景下的實驗,具有一定的限制性。
針對以上存在影響人體輪廓完整提取的因素,該文提出一種由深度圖像與改進(jìn)Canny邊緣檢測算法相結(jié)合來提取人體輪廓的方法。該方法通過深度圖像測距傳感的特點,有助于在復(fù)雜背景下有效將背景和目標(biāo)物進(jìn)行區(qū)分,然后結(jié)合改進(jìn)的Canny邊緣檢測算法來獲取人體輪廓。通過與傳統(tǒng)的彩色圖結(jié)合邊緣檢測算法的輪廓提取方法相比,實驗證明采用該方法得到的人體輪廓圖更加得完整、清晰。
Canny邊緣檢測算子是目前比較流行的邊緣檢測算法,是1986年由John F.Canny開發(fā)出來的一種多階段緣檢測算法,是一種從不同視覺對象中提取有用的結(jié)構(gòu)信息并極大減少運算量的技術(shù),目前廣泛地應(yīng)用于各種計算機視覺系統(tǒng)。其主要思想是通過高斯函數(shù)求導(dǎo)并計算圖像對應(yīng)點的梯度,然后由雙閾值的設(shè)置來檢測出圖像的邊緣。Canny算法基于三個基本目標(biāo):
(1)低錯誤率。所有邊緣都應(yīng)被找到,且沒有偽邊緣響應(yīng)。
(2)邊緣點應(yīng)該被很好地定位。已定位的邊緣必須盡可能接近真實邊緣。
(3)單一的邊緣點響應(yīng)。這意味著在僅存一個單一邊緣點的位置,檢測器不應(yīng)指出多個像素邊緣。
Canny的工作本質(zhì)是,從數(shù)學(xué)上表達(dá)前面的三個準(zhǔn)則。因此Canny的步驟如下:
為了最大程度地減少由噪聲引起的對邊緣檢測結(jié)果的影響,在操作前必須盡可能地濾除噪聲。Canny邊緣檢測算法中是使用高斯模糊來去掉噪聲,使用高斯濾波器與圖像進(jìn)行卷積,以減少邊緣檢測器上明顯的噪聲影響但是同時也會平滑邊緣,使得邊緣信息減弱,在檢測邊緣信息時有可能會漏掉一些需要的邊緣,所以文中使用的是基于高斯濾波改進(jìn)的雙邊濾波對圖像進(jìn)行預(yù)處理。相比高斯濾波器能夠更好地保存圖像的邊緣信息。雙邊濾波是一種非線性濾波器,可以達(dá)到保持邊緣、降噪平滑的效果。它也是和其他濾波原理一樣采用加權(quán)平均的方法,但不同的是雙邊濾波的權(quán)重不僅考慮了空間鄰近度的權(quán)值,還考慮了像素值相似度的權(quán)值。雙邊濾波器的輸出像素依賴于當(dāng)前被卷積的鄰域。雙邊濾波公式如式(1)所示,其中i和j是當(dāng)前被卷積像素的坐標(biāo)點,k和l是鄰域像素的坐標(biāo)點。加權(quán)系數(shù)ω由式(2)所示,由空間鄰近高斯函數(shù)和像素值相似度高斯函數(shù)決定,是它們的乘積??臻g鄰近高斯函數(shù)和像素值相似度高斯函數(shù)分別由式(3)與式(4)所示。
(1)
(2)
(3)
(4)
由此可以得出雙邊濾波的基本思想是:
在高斯濾波的原理中,根據(jù)各個點到中心點的空間鄰近度計算得到各個權(quán)值,然后進(jìn)行優(yōu)化,將其優(yōu)化為空間臨近度計算的權(quán)值和像素值相似度計算的權(quán)值乘積,優(yōu)化后的權(quán)值再與圖像作卷積運算,從而達(dá)到包邊去噪效果。
圖像的邊緣可以指向不同的方向,Canny算法首先使用四個梯度算子來計算水平方向、垂直方向和對角線方向的梯度,然后分別計算出水平方向和垂直方向的差分Gx和Gy,由此便可以確定像素點的梯度G和方向θ。
梯度是表示邊緣特征灰度值的變化程度,由于圖像是離散數(shù)據(jù),導(dǎo)致可以用差分值來表示,差分在實際工程中就是灰度差也就是兩個像素的差值??蛇x用的模板:Sobel算子、Prewitt算子、Roberts模板等,在最初的Canny算法中是使用的最小2×2鄰域來計算梯度幅值,如式(5)與式(6)所示。文中使用3×3的Sobel算子,利用Sobel水平和垂直算子與輸入圖像卷積計算dx、dy,如式(7)與式(8)所示:
(5)
(6)
dx=f(x,y)*Sobelx(x,y)
(7)
dy=f(x,y)*Sobely(x,y)
(8)
進(jìn)一步可以得到圖像梯度的幅值與方向,求解公式如式(9)和式(10)所示:
(9)
(10)
非極大值抑制是進(jìn)行邊緣檢測的一個重要步驟,通俗意義上是指尋找像素點局部最大值。這里必須注意的是沿著梯度方向?qū)Ψ颠M(jìn)行非極大抑制,而非邊緣方向。
通常得到的梯度邊緣不止一個像素寬,而是多個像素寬。非極大值抑制也是一種邊緣細(xì)化方法,是通過前點的梯度強度和正負(fù)梯度方向點的梯度強度做比較。如果當(dāng)前點的梯度強度與同方向的其他點的梯度強度相比較是最大的,那就保留其值。否則抑制,從而就可以達(dá)到邊緣細(xì)化的目的。
一般的邊緣檢測算法是通過設(shè)定一個閥值來過濾噪聲或顏色變化引起的小的梯度值,保留大的梯度值。因此會導(dǎo)致偽邊緣的出現(xiàn)。Canny邊緣檢測算法中用雙閾值,即一個高閾值和一個低閾值來區(qū)分邊緣像素,通常實驗中選取高閾值和低閾值的比率為2∶1,如果邊緣像素點梯度值大于高閾值,則被認(rèn)為是強邊緣保存下來,大于低閾值小于高閾值的點則標(biāo)記為弱邊緣使用8連通區(qū)域確定。小于低閾值的邊緣點被抑制掉。
將大于高閾值的點作為真的邊緣點。而大于低閾值小于高閾值的弱邊緣點有可能是真的邊緣點,也可能是噪聲或顏色變化引起的。為了使結(jié)果更加準(zhǔn)確,則需要在弱邊緣點中進(jìn)行篩選。通常情況下由真實邊緣引起的弱邊緣點和強邊緣點是連通的,而由噪聲或顏色變化引起的弱邊緣點則不會。此時則通過檢查一個弱邊緣點的8連通領(lǐng)域像素,只要存在強邊緣點,那么這個弱邊緣點被認(rèn)為是真實邊緣保留下來。
Canny算法邊緣檢測流程如圖1所示。
圖1 Canny算法邊緣檢測流程
深度圖像也被稱為距離影像,深度圖像的像素值反映場景中物體到相機的距離,它可以直接反映物體可見表面的幾何形狀。深度圖像經(jīng)過坐標(biāo)轉(zhuǎn)換可以計算為點云數(shù)據(jù)。與普通的彩色圖片相比,普通的彩色圖片是將相機視角內(nèi)的所有物體記錄下來,不包含這些物體距離相機的距離。只能通過圖像語義來分析物體距離的遠(yuǎn)近,沒有確切的數(shù)據(jù)。而通過深度相機獲取到的深度圖像數(shù)據(jù),可以知道圖像中每個點離攝像頭的距離,并獲取有用的數(shù)據(jù)。在計算機視覺系統(tǒng)中,深度圖像為圖像分割、目標(biāo)檢測、物體跟蹤等計算機視覺應(yīng)用提供了更多的可能性。也正是因為這個特性,在文中的應(yīng)用中可以有效區(qū)分目標(biāo)物(人體)與背景,有助于克服在復(fù)雜背景下獲取有效信息的難點。
在3D計算機圖形中,Depth Map(深度圖)是包含與場景對象的表面到視點的距離有關(guān)的信息的圖像或圖像通道。其中,Depth Map與灰度圖像相類似,它每個像素點的灰度值用于表征傳感器距離物體的實際距離。因為像素點之間具有一對一的對應(yīng)關(guān)系,所以通常RGB圖像和Depth圖像是配準(zhǔn)的。
深度圖像可以通過兩種方法獲?。褐鲃由疃葌鞲泻捅粍訙y距傳感。
主動深度傳感是需要設(shè)備本身發(fā)射能量來完成深度信息的采集。這就使得深度圖像的獲取和彩色圖像的獲取相互獨立。最近幾年,主動深度傳感方法在市面上的應(yīng)用愈加廣泛,主要包括了TOF(time of flight)、結(jié)構(gòu)光、激光掃描等。
雙目立體視覺是被動測距傳感中最常用的方法。首先基于視覺差原理利用兩個攝像機從不同的位置獲取被測物體的兩幅圖像,然后根據(jù)立體匹配算法找到兩幅圖像中對應(yīng)的像素點,最后通過計算圖像對應(yīng)點間的位置偏差得到目標(biāo)物體的三維幾何信息。
此方法具有系統(tǒng)結(jié)構(gòu)簡單、精度合適、效率高等優(yōu)點。近年來立體視覺在航空測繪、軍事運用、醫(yī)學(xué)成像、機器人視覺等領(lǐng)域中的運用越來越廣泛。
深度圖像通過深度相機獲取,目前市面上應(yīng)用比較廣泛的深度相機有以下三種:
(1)結(jié)構(gòu)光(Structures-light),代表公司有英特爾RealSense、Mantis Vison、蘋果(Prime Sense)等。
(2)雙目視覺(Stereo),代表公司有Leap Motion、ZED。
(3)光飛行時間法(TOF),代表公司有微軟Kinect-2、聯(lián)想Phab、SoftKinect。
文中采用的是基于結(jié)構(gòu)光深度相機RealSense D435,其基本原理是,利用左右兩邊的近紅外激光器,將具有一定結(jié)構(gòu)特征的光線投射到目標(biāo)物體上,再通過紅外攝像頭進(jìn)行采集。這種具備一定結(jié)構(gòu)的光線,會因被拍攝物體的不同深度區(qū)域,采集不同的圖像相位信息,然后通過運算單元將這種結(jié)構(gòu)的變化轉(zhuǎn)化成深度信息。通俗來說就是,通過光學(xué)手段獲取目標(biāo)物體的三維結(jié)構(gòu),將獲取到的信息進(jìn)行進(jìn)一步的應(yīng)用。通常采用特定波長的不可見的紅外激光作為光源,它發(fā)射出來的光經(jīng)過一定的編碼投影在物體上,通過一定算法來計算返回的編碼圖案的畸變來得到物體的位置和深度信息。
實驗采用的硬件配置是Intel i5的CPU,16G內(nèi)存,NVIDIA的GPU,RealSense D435深度相機,軟件配置是Python3.5。
首先通過RealSense D435獲取人體RGB圖像與深度圖像,分別如圖2和圖3所示。
圖2 人體RGB圖
基于RGB圖像通過Roberts算子、Sobel算子、Prewitt算子、拉普拉斯算子、Canny檢測算法獲得的人體輪廓圖像如圖4~圖8所示,基于深度圖結(jié)合Canny改進(jìn)算法獲取的人體輪廓圖如圖9所示。
圖3 人體深度圖
圖4 Roberts算子與RGB圖像輪廓圖
圖5 Sobel算子與RGB圖像輪廓圖
圖6 Prewitt算子與RGB圖像輪廓圖
圖7 拉普拉斯算子與RGB圖像輪廓圖
圖8 Canny算法與RGB圖像輪廓圖
圖9 文中方法得出的人體輪廓圖
如上述實驗結(jié)果所示,圖4中通過傳統(tǒng)的RGB圖像轉(zhuǎn)灰,然后得到二值化圖像再結(jié)合Roberts邊緣算子得到的輪廓圖存在邊緣斷點、邊緣不清晰、無法有效分離目標(biāo)物與背景的問題。圖5中通過將人體彩色圖轉(zhuǎn)灰,再將灰度圖二值化,進(jìn)行去噪處理后結(jié)合Sobel邊緣算子得到的輪廓圖邊緣清晰、連續(xù)但無法在復(fù)雜背景下將目標(biāo)物與背景分離開來導(dǎo)致邊緣缺失。圖6中由人體RGB圖像轉(zhuǎn)灰處理,再進(jìn)行腐蝕和膨脹處理最后結(jié)合Prewitt邊緣算子得到的輪廓圖邊緣存在斷點、缺失的問題。圖7由人體RGB體圖像進(jìn)行轉(zhuǎn)灰,再對圖像二值化和去噪處理結(jié)合拉普拉斯算子得到的輪廓圖邊緣比較清晰完整,但當(dāng)人體著裝與背景色相同時無法將目標(biāo)物與背景有效區(qū)分。圖8由人體RGB圖進(jìn)行轉(zhuǎn)灰,二值化然后結(jié)合傳統(tǒng)的Canny算法得到的人體輪廓圖較以上幾種算子來說具有更完整、更清晰的邊緣,但還是無法克服復(fù)雜背景因素對其產(chǎn)生的影響。圖9是利用文中方法,首先通過深度相機獲取人體深度圖像,其次結(jié)合改進(jìn)的Canny檢測算法得到的人體輪廓圖。從結(jié)果中可以得出該方法得到的人體輪廓圖邊緣更加完整、沒有邊緣缺失、能夠克服復(fù)雜背景因素影響并有效將背景與目標(biāo)物分離出來,獲取到了完整的人體輪廓圖。
由實驗結(jié)果可以看到,獲取到的人體輪廓圖比較完整,這將在二維圖像人體測量領(lǐng)域應(yīng)用中有著很好的應(yīng)用前景。并且該方法具有較好的魯棒性。但是在使用過程中需要注意的是在通過RealSense D435獲取深度圖的時候需要把握好角度和距離。
提出了一種基于深度圖與邊緣檢測算法結(jié)合的人體輪廓提取方法,并對該方法進(jìn)行了全面研究。實驗結(jié)果表明,該方法提取的人體輪廓圖不但能使輪廓圖完整、清晰,而且能夠克服復(fù)雜背景影響。在二維人體測量領(lǐng)域中有著非常好的實用性。近些年來隨著服裝定制行業(yè)的發(fā)展,尤其在批量服裝定制時該方法有著非常大的應(yīng)用前景。下一步將考慮通過深度圖中目標(biāo)物各點到相機的距離計算出角度等信息,然后對人體進(jìn)行特征點分割,從而計算出人體的尺寸數(shù)據(jù)。這將會在服裝定制行業(yè)起到非常大的促進(jìn)作用。