top of page

專題名稱:以影像為基礎之自動化傷口癒後評估系統

​一、摘要

        醫學影像的處理主要目的是為了讓醫療人員能透過電腦對影像的數據轉換更加了解患者的病況,或是患者後期病情的追蹤,可以減少醫療人員的判斷時間,並能達到有效的診斷效率、更好的醫療品質。本計畫是讓患者能在家自行利用 平方公分小白色方塊拍攝傷口,回傳傷口影像給醫療人員,讓醫療人員能透過電腦醫學影像的處理,藉由判斷患者傷口的大小來預估傷口癒合的時間,並做有效的後續病情追蹤。本計畫提出一個傷口復原程度的醫學影像偵測系統,主要分為九個步驟:1、本計畫先利用Gray World Assumption(GWA)演算法將原始影像作白平衡的處理,讓影像能去除掉不必要的雜訊;2、透過Peer et al.[1]所提出的膚色偵測,規範出膚色的範圍,分別將膚色跟傷口做白與黑的轉換;3、使用Erode(侵蝕)及Dilate(擴張)函式,去除影像中的小雜點;4、利用flood fill(洪水填補法)把影像中傷口外的範圍進行填補,盡量只留下傷口的部分;5、利用findcontour將影像中的輪廓圈選出來,並以向量方式儲存於陣列中;6、將圈選出的所有contour以HSV判斷是否符合傷口的顏色,並將符合之contour予以標記;7、將符合條件值的contour用drawcontour函示顯示於影像中,並以不同的顏色對contour做區分;8、將符合條件之各contour以contourarea函式計算出該條contour的像素點;9、將處理後之結果影像顯示於使用者易使用的介面中,並以文字顯示其對應的contour之像素點,透過這個傷口評估系統能有效的幫助醫療人員縮短診斷時間,也能節省患者往返醫院的通勤時間,減少傷口感染的機會,達到更顯著的醫療效果。

二、研究動機與研究問題

二、研究動機與研究問題

        隨著人口逐漸老化與科技進步,從以往以醫院為中心的就診模式逐漸地轉往『醫療走入家庭』的新式概念,以符合未來病患的需求,透過電腦的資訊技術,將患者、主治醫生和醫護人員能夠做有效的串聯,讓病患能夠在家也可以得到及時的診斷及後續的治療,醫療資訊技術不斷的發展,讓遠距醫療(Telemedicine)的觀念不斷的被提出來,患者和醫療人員也可以克服空間和時間上的障礙,達到兩方的溝通,而本計畫提出的系統是讓患者可以在家自行拍攝傷口的影像,醫療人員就可以藉由回傳的影像來判斷患者傷口復原的程度,並即時的給予診斷或後續的傷口復原追蹤。
        因此,醫學影像在診斷的過程中是佔有非常重要的地位,臨床的醫護人員必須迅速評估所有傷口,才能決定最有效的傷口處理方式,當醫學影像分析得更清楚,更能協助醫護人員或是主治醫生透過患者受傷的醫學影像中得到病情的訊息,準確的給予患者傷口治療的方法,有效的降低人力成本和人為誤判的情況,加上近年來利用電腦來做影像處理的技術日漸進步,透過電腦的各種影像處理方式,強化影像並分析影像,同時也因為醫療與每個人是密不可分的,因此,本計畫希望將影像處理技術結合至醫療處理上。加上有些傷患的傷勢過重,在離院返家後還要再回醫院回診十分困難,有些可能傷口在移動就會牽扯到的位置,而造成不便行走,亦或者是距離醫院太遠太浪費通勤的時間,造成了空間與時間上的障礙,而為了幫助這些病患能不用出門也可以達到復診的情形,本計畫希望能夠讓傷患在家自行拍攝自己的傷口影像,並回傳給在院的主治醫師,讓醫療人員可以即時的依照影像中患者的傷口大小,判斷傷口復原的程度,並給予有效的醫療診斷。如此一來,患者不必再冒著傷口被感染的風險回院治療,同時也可以減輕醫生的工作量,降低醫護人員的人力成本,讓醫療人員可以方便的使用電腦來準確的判斷出傷口的大小、位置,並觀察其復原程度,能更有效的追蹤病人後續的病況。
        本計畫首先將原始影像藉由做白平衡的處理,將影像因為不同燈光的關係,造成膚色的顏色失真校正回來,再將膚色與傷口做區分,利用規範膚色的數值,分別讓膚色的地方呈現白色、傷口和背景則是呈現黑色,接著利用Erode(侵蝕)及Dilate(擴張)來消除影像中的雜點,利用flood fill(洪水填補法)把影像中傷口外的範圍進行填補,盡量只留下傷口的部分,使用findcontour函式將影像中的輪廓圈選出來,並以HSV方式判斷該條contour是否符合傷口顏色之條件,並用drowcontour將符合條件之contour顯示於影像中,且以不同的顏色對不同contour做區分,最後利用contourarea計算各條contour的像素點,並將處理後之最終結果影像顯示於使用者易使用的介面,並以文字方式顯示各條contour的像素點,讓醫療人員可以透過影像中傷口大小的輪廓線和像素點判斷出患者傷口的復原程度。

​三、文獻探討與回顧

​三、文獻探討與回顧

        近年來,影像處理的技術不斷的在進步,而目前最常被使用的影像處理系統就是OpenCV。OpenCV的全稱是Open Source Computer Vision Library,是一個跨平台的電腦視覺庫。OpenCV是由Intel公司發起並參與開發,以BSD授權條款授權發行,可以在商業和研究領域中免費使用。OpenCV可用於開發實時的圖像處理、電腦視覺以及模式識別程式。OpenCV使用C++語言編寫,它的主要介面也是C++ 語言,但是依然保留了大量的C語言介面。該庫也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的介面。這些語言的API介面函式可以通過線上文件獲得。現在也提供對於C#, Ch, Ruby的支援。[2]

        而本計畫使用的是EmguCV。EmguCV 是.NET 平台下對OpenCV 圖像處理函式庫的封装。也就是OpenCV的.NET 版。他是在.NET兼容的程式語言下使用OpenCV 的函数,如C#、VB、VC++、IronPython 等。這個函式庫可以在Mono 下編譯和在Linux / Mac OS X 上運作。

        雖然影像處理的技術逐年在進步,但是影像不單只是我們表面所看到的這麼簡單,影像中除了顏色的不同,也有著許多不同的表示方法,像是:RGB、YCBCR、HSV……等等。而其中RGB是我們最常聽到及看到的影像空間種類。RGB是一種加色模型,將紅(Red)、綠(Green)、藍(Blue)三原色的色光以不同的比例相加,以產生多種多樣的色光,黑色表示為(0,0,0)、白色表示為(255,255,255)[3]。人類的視覺系統,對於亮度比較敏感,而對於彩度比較不敏感。所以就有了YCbCr這種影像空間的產生。「Y」表示明亮度(Luminance),「Cb」和「Cr」則是色差(chrominance),Cb是藍色色差,Cr 是紅色色差。

        然而三原色所構成的向量空間無法對影像強度(亮度)做處理,例如柔和化、銳利化等等。因此此計畫在執行膚色偵測時,同時針對在RGB、YCbCr、HSV這三種影像空間下做膚色偵測的判斷,而首先我們必須先了解如何將RGB的格式藉由數學轉換成YCbCr的組合來做膚色偵測的判斷[4]。

RGB 與 YCbCr 之間的轉換公式為:

(1)

(2)

(3)

        而相較於RGB 彩色空間,HSV彩色空間比較不容易受到光線的影響,所以將RGB轉換至HSV彩色空間,這樣的做法可以降低光線對影像所造成的影響,避免誤判的情況發生。其中:H(Hue)色調值:指的是顏色全彩的屬性,每種顏色對應到不同的色調值,範圍為0~360度的角度。S(Saturation)飽和值:定義為被白色稀釋的程度,稀釋越多表示飽和度越少,會較靠近中心點位置,範圍從0到1。V(Value)顏色明暗度:顏色越亮其明暗度越高,反之則較低,範圍從0到255[5]。

        RGB與HSV之間的轉換關係公式如下所示:

(4)

(5)

(6)

(7)

        影像中除了本身的類型不同之外,同時也會因為拍攝的地點和光線的不同,而產生出不同的影像,而這些亮度不同的影像,我們希望能夠使拍攝出的影像,能夠恢復成原有的正常光線下所拍攝而成的影像,為了校正這些因為光線或是其他原因所早成誤差的影像,我們用了兩個演算法來實驗自動白平衡的效果,一個是GWA演算法,這個演算法是把所拍到的影像設在一個色彩豐富的範圍裡,假設紅色、綠色和藍色出現在同一張影像裡的機率都相同,GWA演算法的優勢就是在色彩豐富的影像中有很好的還原能力。左邊圖(1)這張可看出是在偏黃色燈下所拍攝色彩鮮艷的影像,經過GWA演算法計算後,影像會被還原成右邊圖(2)的影像圖,可清楚看到左下原本偏黃的色塊,被還原成明顯的白色色塊。圖(1)為黃色光線下所拍攝出的影像,圖(2)為將圖(1)的影像利用GWA演算法所還原出的原始影像。

圖(1)

圖(1)

圖(2)

圖(2)

        而相對的,在還原單一色彩的影像上,因為不符合GWA演算法的假設,所以還原出來的影像我們發現會有偏紅的現象,由下圖(3)單一色彩的海和天空來看,經過GWA演算法後,從圖(4)看出海和天空這些白色部分都顯變得有點偏紅,可藉由此結果知道GWA演算法在單一色彩上還原效果較不佳。圖(3)為海和天空皆為藍色的影像,圖(4)為將圖(3)的影像利用GWA演算法所還原出的偏紅影像。

圖(3)

圖(4)

        因此,藉由以上的結果,我們可以判斷GWA演算法在色彩豐富的影像中會有比較好的還原效果,而在單一色彩影像中還原結果會有偏紅的現象。

        我們的另一種處理自動白平衡的演算法為PRA(Perfect Reflector Assumption)演算法,PRA演算法是假設在一張影像中,可以把完美反射體當作是一個標準白色,一個白色的物體,在任何色溫的影像中,其紅色、綠色、藍色皆為各自的通道(Channel)的極大值[6],我們分別利用上面所說的圖(1)和圖(3)來做測試,經過一系列的PRA運算後,會發現圖(1)的影像會被還原成帶有黃色的色偏,如下圖圖(5),可看到左下原本偏黃的色塊,被還原成帶有點黃色的色塊。圖(1)為黃色光線下所拍攝出的影像,圖(5)為將圖(1)的影像利用PRA演算法所還原出的偏黃影像。

圖(1)

圖(5)

    接著,利用上面的圖(3)來做測試,經過PRA演算法的運算後,可知道海面的反光及白雲的部分都被有效的還原成白色,藉由此結果知道PRA演算法在單一色彩上還原效果較佳,圖(3)為海和天空皆為藍色的影像,圖(6)為將圖(3)的影像利用PRA演算法所還原出的原始影像。

圖(3)

圖(6)

        藉由以上的結果來看,可知道PRA演算法的優點在於,當影像大多以單一顏色為主的時候,會有很好的還原能力,而在色彩鮮艷的地方則會有偏黃的現象。

        經過兩種演算法,GWA演算法和PRA演算法的實驗後,我們也利用圖(7)在偏黃的燈光下,所拍攝出的皮膚影像下去做影像的運算,轉換出來的結果分別為下圖圖(8)和圖(9)。圖(7)在黃色燈光下所拍攝的皮膚影像,圖(8)為將圖(7)經過GWA白平衡演算法運算結果,圖(9)將圖(7)經過PRA白平衡演算法運算結果。

圖(7)

圖(8)經GWA轉換

圖(9)經PRA轉換

         由於傷口影像多為色彩分明的影像,在GWA白平衡演算法下具有較佳的結果,較能還原出原始影像的色彩,故本計畫皆使用GWA白平衡演算法對影像進行處理。

四、研究方法及步驟

(1)研究方法

        由於在各種環境下所拍攝的影像會因光線或地點而有所不同,故須先將影像作光線的校正,此計畫中使用GWA演算法對影像進行白平衡之處理。將原始影像經過GWA演算法做白平衡的處理後,將白平衡後的影像做影像分割的處理,分割出膚色區域,使用膚色偵測來區分出膚色及傷口位置,將膚色區域設定為白色(255)、傷口和背景設定為黑色(0),而在膚色偵測後的影像中,仍有許多小雜點的存在,為了估算出較準確的傷口面積,我們使用Emgu CV中CvInvoke類別下的Erode及Dilate來消除影像中的小雜點。再利用Emgu CV中Flood Fill(洪水填補法) 函式把影像中傷口外的範圍進行填補,凸顯傷口的部分,接者利用Findcontour將影像中的輪廓圈選出來,並以HSV判斷該條cotour是否符合傷口的顏色,並將符合之contour利用Drowcontour函式顯示於影像中,並將各條contour以不同的顏色做區分,最後以contourarea函式計算出符合條件之contour的像素點,而處理後之影像結果,顯示於易使用之介面中,並以文字顯示各條contour之像素點。下圖(a)為本計畫分析影像的流程圖。

圖(a)本計畫之流程圖

(2)研究步驟

2.1白平衡

        此計畫首先利用GWA演算法對原始影像作白平衡的處理。GWA演算法是目前最常被使用的自動白平衡演算法之一,它提出一個假設:”對於所拍攝到的影像,皆為色彩豐富的影像”。已就是說,假設紅色、綠色和藍色出現的機率相同。那麼進一步推論,紅色、綠色和藍色的平均值將會組成一個灰階的顏色。在實際的拍攝情況下,我們所要拍攝的影像皆為色彩豐富之影像,故符合GWA的假設。為了要達成GWA演算法,我們必須將紅色、綠色和藍色個別的平均值調整為一致,也就是將個別顏色的平均值在乘上校正的增益後形成一個灰階顏色,而此灰階顏色就等於是亮度的平均值,利用以下算式計算出此亮度平均值:

是紅色像素的增益,

(8)

(9)

是藍色像素的增益。為了求得        和       ,選擇綠色的平均值         為參考的平均灰階值,而紅色的平均

值為        ,藍色的平均值為        。運算如公式(1)(2)所示。接著將影像中的每一個像素的紅色及藍色部分分別根據增益值做調整。

(10)

(11)

                                       為處理後像素的紅色、綠色、藍色數值,                              為處理前像素的紅色、綠色、藍色數值,如公式(10)(11)所示。

實際結果如圖(10)圖(11)所示。圖(10)為原始影像、圖(11)為經過GWA白平衡演算法後之影像。

圖(10)

圖(11)

2.2皮膚偵測

        接下來將經過GWA白平衡演算法後的影像,做影像分割,擷取出影像中皮膚的部分。我們分別從三種影像模式去做推導:RGB、YCbCr、HSV,從這些影像模式所衍生出的所有規則推導出0到255之間的數值,並將符合膚色偵測規則的像素點數值設成白色,也就是此像素中的各個值均設成255,剩餘的區域則設成黑色,即數值設定為0。
        在RGB空間中,我們使用Peer et al.[1]所提出的膚色偵測規則,膚色可能依據所拍攝地點和角度的不同,受到不同的光線影響,將膚色偵測規則依據光線的不同分為兩大類,分別是在正常日光照明之下和在手電筒等強烈日光下這兩種。膚色在正常的日光照明規則下遵循以下公式:

而膚色在手電筒或日光照明外側時,則遵循以下公式:

(12)

(13)

        由於這兩種情況都有可能會發生,所以我們需要把這兩項規則都考慮進去,在兩個條件都需要時,我們用邏輯運算OR來將公式(16)和公式(17)做結合。我們將在RGB下的規則記為Rule A​

Rule A:公式(12)∪公式(13)

(14)

        做完了在RGB空間下的膚色偵測判斷後,同時也針對在YCbCr空間下做膚色偵測的判斷。首先我們先將影像從原本的RGB空間轉換至YCbCr空間,而在YCbCr空間中,我們遵循以下五項偵測膚色的規則:

(15)

(16)

(17)

(18)

(19)

        上述五項規則,皆為判斷是否為膚色區域的標準,故我們將公式(19)至公式(23)用邏輯運算AND組合在一起,可得到YCbCr空間下的規則,我們將其標記為Rule B

Rule B:公式(15)∩公式(16)∩公式(17)∩公式(18)∩公式(19)

(20)

        相較於RGB空間,HSV空間比較不容易受到光線的影響,所以我們將RGB空間轉換至HSV空間,這樣可以降低光線對影像所造成的影響,避免誤判的情況發生。而在HSV空間中,色調值明顯的表示出皮膚和非皮膚之間區域的差別。我們估計兩個H值來判斷出膚色的區域:

(21)

(22)

若H值介於25~230之間,則判定為膚色的區域,故將此兩項規則以邏輯運算OR做結合,得到在HSV空間下的規則記為Rule C

Rule C:公式(21)∪公式(22)

(23)

根據上述許多的規則可知,若一點像素符合Rule A、Rule B和Rule C,則標記為膚色區域,設定成白色,將其數值設定為255。

(24)

實際結果如圖(12)所示。圖(12)為膚色偵測之影像。

圖(12)膚色偵測之影像

        為了讓影像能夠呈現出好的傷口位置的效果,此計畫對皮膚的偵測判斷做了一些修改如下圖(13),將膚色範圍設定為黑色,傷口及其他範圍設定為白色,較能凸顯出傷口區域。圖(13)為圖(12)影像中黑色與白色的互換結果。

圖(13)黑色與白色互換

2.3 Erode(侵蝕)&Dilate(擴張)

        由於經過膚色偵測後的影像會有些許雜點影響判斷傷口大小,所以接著使用Emgu CV中CvInvoke類別下的Erode(侵蝕)及Dilate(擴張)來消除影像中的小雜點。而在Erode及Dilate方法中可藉由改變運算順序、形狀種類、形狀大小及運算次數而得到不同組合的結果。其中形狀種類包含Cross(十字形)、Rectangle(矩形)及Ellipse(菱形)。此計畫中除了改變形狀、大小及運算次數也改變了運算順序,測試了許多種組合並得出最接近原始影像之結果,使用大小3x3、形狀為Ellipse之處理,其運算順序為 Erode → Dilate → Dilate→Erode並各做2次。圖(14)為將圖(13)做Erode&Dilate的結果。

圖(14)

2.4 Flood Fill(洪水填補法)

        為了找出傷口正確的位置,此計畫用Flood Fill(洪水填補法) 函式把影像中傷口外的範圍進行填補,凸顯傷口的部分。圖(15)為將圖(14)做Flood Fill後之結果。

圖(15)

2.5 Findcontour

        為了能夠找出傷口於影像中的位置,首先利用Findcontour函式將影像中的所有輪廓圈選出來,Findcontour圈選出的輪廓影像如圖(16)。圖(16)為圖(15)的輪廓線。

圖(16)

2.6 Contour Check

        由於圈選出之contour包含了不是傷口的範圍及外圍邊界,為了只留下傷口之contour,本計畫以HSV判斷該條contour中的顏色是否符合傷口的顏色,條件設定值如下:

H=±30°

0.2<S<1

符合條件之contour如圖(17)所示。

(25)

(26)

圖(17)

2.7 Drowcontour

        接著用Drowcontour函式將符合條件之contour傷口部分顯示出來,並且利用不同顏色標出,以區別各條contour,如圖(18)。圖(18)把輪廓線用不同的顏色標出來。

2.8 ContourArea

圖(18)

        為了判別contour之大小,使用contourarea計算各條contour之像素點,圖(19)為系統部分截圖,顯示各條contour及其對應之像素點。

圖(19)

2.9  使用者介面

        本計畫把處理之影像進行整理,並將介面設計成讓使用者易使用、易讀懂系統,以影像呈現處理之最終結果,並以文字顯示出每個傷口輪廓線內的像素點及其所對應的contour之顏色,圖(20)為目前的介面設計。

圖(20)

五、預期結果

        藉由以上的分析與探討,本計畫希望透過電腦影像技術的處理來強化影像、分析影像,並且能夠達到讓傷患在家也能輕鬆複診的成果,透過將患者拍攝傷口的影像回傳給主治醫師,再經由電腦做影像處理,讓醫生能夠透過照片就能了解傷患傷口的復原程度,不但減少患者出門複診傷口遭到細菌感染的情形,同時也減輕了醫師的負擔,而在醫生不在醫院的情況下,也可以隨時傳送照片給醫生複診,或詢問傷口傷勢,同時也將本計畫的系統使用在急診室,可以立即判斷出患者的傷口大小,並依級別做先後順序的處理。

本計畫的步驟上主要分為九個步驟

  1. 利用GWA演算法將原始影像作白平衡的處理,讓影像能夠去除掉不必要的雜訊。

  2. 透過Peer et al.[1]所提出的膚色偵測,規範出膚色的範圍,分別將膚色跟傷口做白與黑的轉換。

  3. 因為膚色偵測後之影像可能有許多雜點,以Erode及Dilate函式對影像做處理,消除影像中的小雜點。

  4. 利用flood fill(洪水填補法)把影像中傷口外的範圍進行填補,留住傷口的部分。

  5. 利用findcontour將影像中的所有輪廓圈選出來。

  6. 將圈選出的所有contour以HSV判斷是否符合傷口的顏色,並將符合之contour予以標記。

  7. 將符合條件值的contour用drawcontour函示顯示於影像中,並以不同的顏色對contour做區分。

  8. 將符合條件之各contour以contourarea函式計算出該條contour的像素點。

  9. 將處理後之結果影像顯示於使用者易使用的介面中,並以文字顯示其對應的contour之像素點。

希望透過本計畫所提出的影像分析系統,能有效減少患者往返醫院空間與時間上的障礙,縮短人與醫院的距離,並降低不必要的人力成本以及人為上的判斷錯誤,減少醫療上資源的浪費,提升醫療診斷整體的效率。

未來預計完成的項目

(1) 系統實驗及模擬

        本計畫研究成果將作為醫院傷口復原程度判斷的參考,並提高國內對醫學影像處理的重視與發展,讓醫療能走入家庭,在家也能做傷口的診療,減少更多不必要的醫療資源、時間。本計畫除了對傷口影像分析外,同時也將完成一套圖形化視窗使用者介面之應用系統,讓醫療人員能夠方便的運用此系統,以期能落實學術研究技術之發展與實務相結合之目標。

六、參考文獻

  1. P. Peer, J. Kovac, F. Solina, “Human Skin Colour Clustering for Face Detection”, EUROCON1993, Ljubljana, Slovenia, pp. 144-148, September 2003.

  2. 維基百科-OpenCV   https://zh.wikipedia.org/wiki/OpenCV

  3. 維基百科-三原色光模式 https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8E%9F%E8%89%B2%E5%85%89%E6%A8%A1%E5%BC%8F

  4. http://blog.xuite.net/jonathan0503a/wretch/102953763-RGB+%E8%88%87+YCbCr+%E7%9A%84%E5%B7%AE%E7%95%B0

  5. https://sites.google.com/a/ms.ttu.edu.tw/cse2012dance-robot/hsv-cai-se-kong-jian

  6. 林殷旭,自動白平衡之軟硬體共同設計,Hardware-Software Co-design of an Automatic White Balance Algorithm,電腦與通訊研究所碩士學位論文,國立台北科技大學,2006。

bottom of page