專利名稱:舌頭彩色數(shù)碼照片的舌苔的分割提取方法
技術領域:
本發(fā)明涉及中醫(yī)舌診舌頭彩色數(shù)碼照片的舌苔的分割提取方法,屬于彩色圖像處理和圖像分析理解的領域。
背景技術:
在中醫(yī)診斷方法的舌診中,人舌面上舌苔的厚薄、顏色、所占面積,分布位置等是非常重要的參數(shù)。在實際診斷中,醫(yī)生常常根據(jù)自己的經(jīng)驗來進行判斷,從而導致同一個病人由幾個醫(yī)生診斷時可能得到的診斷不一致的情況很常見。每個醫(yī)生都主觀的依靠自己的判斷診斷,因此舌診的標準非常模糊。為了解決這一問題,圖像處理技術被運用到舌診舌苔的分析中,為醫(yī)生舌診時提供參考的參數(shù),幫助醫(yī)生們確定一個客觀化的標準。
用圖像處理技術來分析舌苔的性狀,是中醫(yī)舌診標準化的一部分。中醫(yī)舌診客觀化從20世紀80年代中后期開始研究。研究主要集中在舌頭照片顏色的校準,存儲輸出和用現(xiàn)代圖像處理分析技術對舌頭的照片進行處理等方面。針對舌苔的分析分割技術,人們采用了很多方法得到了一些結果。這些研究以圖像處理分析和模式識別技術為基礎,對數(shù)碼照片的舌頭圖像進行了分割,區(qū)別舌頭的舌質(zhì)和舌苔,為醫(yī)生提供了定量參數(shù),對舌診實踐幫助很大。
但這些算法也存在一些不足,主要表現(xiàn)為(1)算法只是針對單個問題進行研究,比如只從舌頭圖片中劃分出舌苔。實際上,用數(shù)碼相機取得的舌頭圖片并不適合直接進行分割,需要進行預處理才能得到較好結果。這些算法一般沒有給出預處理的方法。
(2)算法一般將舌頭分割為舌質(zhì)和舌苔兩個部分,忽略對其中細微特征的分析。舌苔上還有許多細節(jié)對中醫(yī)診斷也很有作用,比方說舌苔的厚度,厚苔和薄苔的范圍和比例等。
(3)算法過于依賴客觀數(shù)據(jù),而有些忽略了醫(yī)生主觀的感覺。
發(fā)明內(nèi)容
針對上述已經(jīng)存在的技術存在的不足,本發(fā)明的目的在于提供一種能更貼合人對與舌苔的視覺感覺的算法,同時強調(diào)該算法完整性和應用性,和基于該算法開發(fā)應用程序,適用于臨床。
本發(fā)明的特征在于,所述方法在一臺計算機中依次按以下步驟進行步驟(1),把舌頭彩色數(shù)碼照片輸入計算機,對舌頭以外的部分用白色填充,保留舌頭部分;
步驟(2),預處理,按以下步驟去除反光點,并對去處的反光點計數(shù)儲存把步驟(1)得到的舌頭彩色圖映射為灰度圖,并按下判斷舌頭上的區(qū)域內(nèi)反光點f(x,y)>threshold_Flash其中,(x,y)為坐標,f(x,y)是該灰度圖在坐標(x,y)點像素的灰度值,取值范圍是從0到255;threshold_Flash取得范圍為160到180,f(x,y)>threshold_Flash者為反光點;步驟(3),把去處反光點后的舌頭彩色圖像分成小塊A,每一塊為8×8或者16×16個像素;步驟(4),先把步驟(3)得到的小塊圖像A分開成四個子區(qū)域,用A1,A2,A3,A4標志,子區(qū)域的大小為4×4或者8×8個像素,然后,再依以下分裂準則和合并準則,判斷所述四個子區(qū)域應該按現(xiàn)狀分裂,還是應合并為一小塊圖像A若小塊圖像A滿足下列任一個分裂準則,則把原來用同一顏色表達的A塊分成四個顏色不同的小區(qū)域A1,A2,A3,A4|R(Ak)-R(A)|>thresholdR“或”|G(Ak)-G(A)|>thresholdG“或”|B(Ak)-B(A)|>thresholdB其中,R(A),G(A),B(A)代表區(qū)域A塊中紅色、綠色、藍色的平均顏色,取值范圍是從0到255,R(Ak),G(Ak),B(Ak)分別代表子區(qū)域Ak塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4,thresholdR,thresholdG,thresholdB,依次分別表示為紅色、綠色、藍色的閾值,取值范圍均為10到25;若區(qū)域A塊不需要分裂則按以下合并準則判斷該A塊相鄰的四個包括A塊在內(nèi)的都不需要分裂的小區(qū)域X1,X2,X3,X4是否應該合并成一個大區(qū)域X,大小為16×16或者32×32
|R(Xk)-R(X)|<thresholdR“且”|G(Xk)-G(X)|<thresholdG“且”|B(Xk)-B(X)|<thresholdB其中,R(Xk),G(Xk),B(Xk)依次分別代表Xk塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4;R(X),G(X),B(X)依次代表X塊中紅色、綠色、藍色平均顏色,取值范圍是從0到255;thresholdR,thresholdG,thresholdB同上述;若每一塊Xk的平均顏色和四塊綜合后的塊X的平均顏色之差低于設定域值時,則把這四塊區(qū)域合并,做同一塊區(qū)域處理;步驟(5),把分裂合并后的舌頭彩色圖像,映射到灰度空間內(nèi),用Ostu閾值法對該圖像進行分割,區(qū)分舌質(zhì)和舌苔若f(x,y)>threshold_Coating,則(x,y)為舌質(zhì),若f(x,y)≤threshold_Coating,則(x,y)為舌苔,其中,閾值threshold_Coating用Ostu法根據(jù)圖像自動求得,且可在±10的范圍內(nèi)調(diào)整;步驟(8),把步驟(5)得到的舌頭彩色圖像轉入到色調(diào)空間,對舌苔進行第二次分割,從舌苔中分割出厚苔,其分割公式如下從RGB空間轉換到色調(diào)空間的表達式為H(x,y)=cos-1[(R(x,y)-G(x,y))+(R(x,y)-B(x,y))2(R(x,y)-G(x,y))2+(R(x,y)-B(x,y))(G(x,y)-B(x,y))],]]>H(x,y)為點(x,y)的色調(diào)值,R(x,y),G(x,y),B(x,y)分別為該點的紅色,綠色,藍色分量;若H(x,y)>thresholdH,則(x,y)為厚苔,若f(x,y)≤thresholdH,則(x,y)為薄苔,閾值thresholdH用Ostu閾值法根據(jù)色調(diào)圖像自動求得;
步驟(7),計算機用不同顏色分別表示舌質(zhì),薄苔,厚苔部分,列出結果。該放法的特點主要為1)算法完整。算法包括對照片的預處理,舌苔的分割和提取,輸出定量的參數(shù)。
2)對舌苔進行了進一步分析,將舌苔分為薄苔和厚苔兩個部分,尤其是對于厚苔的劃分,是以前的算法中沒有提到過的。
整個算法的參數(shù)可以由醫(yī)生控制,兼顧了醫(yī)生的主觀感覺和客觀圖片兩方面進行分析。
對多幅醫(yī)院采集的舌頭圖像進行測試,該方法分析的結果得到了醫(yī)生的認可。測試的圖片的采樣對象年齡范圍廣泛,包括了身體健康和患病人群。
該算法和程序已經(jīng)應用于臨床,操作簡單,結果為醫(yī)生診斷提供了重要的依據(jù)。
圖1標出圖片閃光點部分,圖中白色部分表示為閃光點;圖2去處圖片閃光點;圖3分割圖片結果,上面三幅圖像依次為原始照片圖像,去處反光點后的圖像,分類合并的結果圖像;下面三副圖像依次為分割薄苔結果,分割厚苔結果,綜合的分割結果;圖4分割提取的參數(shù)結果;圖5醫(yī)生可控制的調(diào)節(jié)部分;圖6程序算法流程圖;圖7分裂算法示意圖;圖8合并算法示意圖。
具體實施例方式該方法核心由Matlab實現(xiàn)。軟件界面用Delphi編寫。舌頭照片由中醫(yī)大夫用數(shù)碼相機拍攝,拍攝時病人平伸出舌頭,方便醫(yī)生將整個舌頭攝入照片。
該方法依次含有以下步驟1)將分割好的舌頭圖片輸入計算機。
圖片中將照片的舌頭部分保留下來,其他的部分用白色填充。
2)預處理去除反光點。
首先將彩色圖像映射為灰度圖,再用域值法判斷舌頭上的區(qū)域是否為反光點。判斷該象素點是否為反光點的方法為
f(x,y)>threshold_Flash其中,(x,y)表示坐標,f(x,y)是該灰度圖在坐標(x,y)點像素的灰度值,范圍是從0到255,threshold_Flash通過經(jīng)驗求得,范圍為160到180。確定默認值是170。式子表示的意思是灰度圖中像素點大于某個設定閾值的點為反光點。把灰度圖中這些點去除,即去除反光點,以免影響到舌苔的分割和計算。同時,對反光點的像素個數(shù)進行統(tǒng)計,一般情況下,比較濕潤的舌頭反光點多。
3)對去除反光點后的圖像進行分裂合并計算,對顏色比較相近的部位用同一顏色代替,得到比原圖來說更抽象的圖像。
先將圖像分成小塊,每一塊為8×8或者16×16個像素。對于每一塊小區(qū)域A,判斷該塊區(qū)域是否可以用同一個顏色表示。如果不行,則將小區(qū)域A分開成為四塊,用四個顏色表示。分裂的步驟如圖所示,A為小區(qū)域,A1,A2,A3,A4為四個該區(qū)域的子區(qū)域,大小為4×4或者8×8。
如果區(qū)域A滿足分裂準則|R(Ak)-R(A)|>thresholdR“或”|G(Ak)-G(A)|>thresholdG“或”|B(Ak)-B(A)|>thresholdB就將本來是為同一顏色表達的區(qū)域分為四個不同的顏色進行表達,圖示見圖7。在計算機中,一幅彩色圖像的每個象素點的顏色由三個字節(jié)來表示,三個字節(jié)分別代表該象素點的紅色,綠色,藍色分量。將每個象素點的某個分量取出,按照像素的排列方式組成一張灰度圖,即可以得到該通道的表示圖。
其中,R(Ak),G(Ak),B(Ak)分別代表Ak塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4。R(A),G(A),B(A)代表A塊中紅色、綠色、藍色平均顏色。R(A),G(A),B(A)的取值范圍是從0到255。thresholdR,thresholdG,thresholdB分別表示為紅色、綠色、藍色的閾值。根據(jù)我們實驗的經(jīng)驗,得到該閾值的取值范圍是10到25。默認值取值為20。該表達式的意思是,將一個矩形區(qū)域A平均分成四份,如果分開的矩形中有一塊區(qū)域的平均色和整個的平均色的差距大于某個閾值的時候,就將這個區(qū)域分開,用四個顏色代替這一塊區(qū)域。
另一方面,如果上下左右四個呈“田”字形的鄰近的小區(qū)域都不需要進行分裂的話,則判斷該四個小區(qū)域是否可以融合起來成為一個較大的區(qū)域。X1,X2,X3,X4是四塊相鄰的小區(qū)域,大小為8×8或者16×16,X為合并后的大區(qū)域,大小為16×16或者32×32。
四個小區(qū)域的合并準則為|R(Xk)-R(X)|<thresholdR“且”|G(Xk)-G(X)|<thresholdG“且”|B(Xk)-B(X)|<thresholdB合并示意圖見圖8。
其中,R(Xk),G(Xk),B(Xk)分別代表Xk塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4。R(X),G(X),B(X)代表X塊中紅色、綠色、藍色平均顏色。R(X),G(X),B(X)的取值范圍是從0到255。thresholdR,thresholdG,thresholdB分別表示為紅色、綠色、藍色的閾值。根據(jù)我們實驗的經(jīng)驗,得到該閾值的取值范圍是10到25。默認值取值為20。意思是鄰近的四塊區(qū)域如果每一塊的平均顏色和四塊綜合的平均顏色之差低于某一閾值的話,就將這四塊區(qū)域合并起來,作同一塊區(qū)域來處理。
對舌體先進行這樣的處理,是考慮到舌頭的表面需要進行一定的抽象化,去處掉一些噪聲;另一方面舌質(zhì)和舌苔不僅僅和顏色相光,同樣也和它周圍的像素點的顏色是有關的。這種方法能夠充分的考慮到像素本身的顏色和周圍像素對其的影響。
4)用Ostu閾值法對分類合并后的圖片進行分割,區(qū)別舌質(zhì)和舌苔部分。
將分裂合并后的彩色圖像映射到灰度空間內(nèi),劃分方法為
f(x,y)>threshold_Coating其中,threshold_Coating表示閾值,(x,y)為像素點的坐標,f(x,y)為灰度值?;叶戎档陀趖hreshold_Coating的,分為舌苔這一部分,灰度值高于threshold_Coating的,分為舌質(zhì)這一部分。threshold_Coating是根據(jù)Ostu的辦法根據(jù)圖像自動求出的。另外,還可以在自動閾值附近正負10的范圍內(nèi)作手動調(diào)整。
Ostu方法計算閾值的主要想法為設定一個閾值t,將圖片按照f(x,y)>t和f(x,y)≤t分為兩個部分,計算著兩個部分的類間方差g=w0·(I0-I)2+w1·(I1-I)2。其中,I0和I1分別表示分割后兩個部分的平均灰度,I表示整個圖像的平均灰度,w0,w1表示權重,在本程序中,選擇w0=w1=0.5。對t從0到255進行遍歷,選擇使得g最大的t作為分割的閾值。
5)對RGB(紅綠藍)圖像轉入到H(色調(diào)Hue)空間內(nèi),對舌苔的部分二次分割,從舌苔中分割出厚苔,其他部分為薄苔。
從RGB空間轉換到H空間的公式為H(x,y)=cos-1[(R(x,y)-G(x,y))+(R(x,y)-B(x,y))2(R(x,y)-G(x,y))2+(R(x,y)-B(x,y))(G(x,y)-B(x,y))]]]>(x,y)為點的坐標,H(x,y)為該點的色調(diào)數(shù)值,R(x,y),G(x,y),B(x,y)分別為該點的紅色,綠色,藍色分量。
劃分薄苔和厚苔的方法為H(x,y)>thresholdH色調(diào)值大于thresholdH的為厚苔,色調(diào)值小于或者等于thresholdH的為薄苔。thresholdH的取值仍用Ostu閾值法對H(色調(diào))通道求出。方法為設定一個閾值h,將圖片按照H(x,y)>h和H(x,y)≤h分為兩個部分,計算著兩個部分的類間方差s=w0·(Hue0-Hue)2+w1·(Hue1-Hue)2。其中,Hue0和Hue1分別表示分割后兩個部分的平均色調(diào),Hue表示整個圖像的平均色調(diào),w0,w1表示權重,在本程序中,選擇w0=w1=0.5。對h從0到255進行遍歷,選擇使得s最大的h作為分割的閾值。
對厚苔的分割是該算法首次提出的,出發(fā)點是厚苔的色調(diào)與薄苔的色調(diào)差別很大。
6)用不同的顏色分別標出舌質(zhì),薄苔,厚苔部分,輸出結果。
在運用該算法進行舌苔分割提取時,可以直接用后臺為該算法的應用程序。該應用程序使用時的具體方法和步驟方法如下1)啟動程序,點擊“選擇圖像”按鈕,載入分割好的舌體照片。(見圖1,圖2)2)在載入圖片后,“白色部分為閃光點”的圖片位置將給出程序計算出的閃光點的位置。(見圖3)點擊下方按鈕“去處反光點”,“去處反光點之后的圖像”的圖片位置得到的是原圖基礎上去除反光點之后的圖片。(見圖4)如果對閃光點的個數(shù)不滿意,調(diào)整右邊的滑動條,可以控制反光點的個數(shù)和范圍。
3)去處反光點后,點擊“分離舌質(zhì)舌苔”按鈕,在“分割結果”,“提取的薄胎結果”,“提取的厚苔結果”,“綜合結果”的圖片位置中分別顯示的是分裂合并后得到的圖像,分析得到的薄苔區(qū)域圖像,厚苔區(qū)域圖像和將薄苔,厚苔和舌質(zhì)分別用白色,黃色和紅色表示的綜合結果。(見圖5)同時,顯示計算得到的薄苔占舌頭面積的百分比和厚苔占舌頭面積的百分比(見圖6)。
4)如果對結果不滿意,在“分割結果”,“提取的薄胎結果”,“提取的厚苔結果”的右邊的三個滑動條可以調(diào)節(jié)控制分裂合并的閾值,選取薄苔的灰度閾值和選取厚苔的色調(diào)閾值。(見圖7)
權利要求
1.舌頭彩色數(shù)碼照片的舌苔的分割提取方法,其特征在于,所述方法在一臺計算機中依次按以下步驟進行步驟(1),把舌頭彩色數(shù)碼照片輸入計算機,對舌頭以外的部分用白色填充,保留舌頭部分;步驟(2),預處理,按以下步驟去除反光點,并對去處的反光點計數(shù)儲存把步驟(1)得到的舌頭彩色圖映射為灰度圖,并按下判斷舌頭上的區(qū)域內(nèi)反光點f(x,y)>threshold_Flash;其中,(x,y)為坐標,f(x,y)是該灰度圖在坐標(x,y)點像素的灰度值,取值范圍是從0到255;threshold_Flash取得范圍為160到180,f(x,y)>threshold_Flash者為反光點;步驟(3),把去處反光點后的舌頭彩色圖像分成小塊A,每一塊為8×8或者16×16個像素;步驟(4),先把步驟(3)得到的小塊圖像A分開成四個子區(qū)域,用A1,A2,A3,A4標志,子區(qū)域的大小為4×4或者8×8個像素,然后,再按照以下分裂準則和合并準則,判斷所述四個子區(qū)域應該按現(xiàn)狀分裂,還是應合并為一小塊圖像A若小塊圖像A滿足下列任一個分裂準則,則把原來用同一顏色表達的A塊分成四個顏色不同的小區(qū)域A1,A2,A3,A4|R(Ak)-R(A)|>thresholdR“或”|G(Ak)-G(A)|>thresholdG“或”|B(Ak)-B(A)|>thresholdB其中,R(A),G(A),B(A)代表區(qū)域A塊中紅色、綠色、藍色的平均顏色,取值范圍是從0到255,R(Ak),G(Ak),B(Ak)分別代表子區(qū)域Ak塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4,thresholdR,thresholdG,thresholdB,依次分別表示為紅色、綠色、藍色的閾值,取值范圍均為10到25;若區(qū)域A塊不需要分裂則按以下合并準則判斷該A塊相鄰的四個包括A塊在內(nèi)的都不需要分裂的小區(qū)域X1,X2,X3,X4是否應該合并成一個大區(qū)域X,大小為16×16或者32×32|R(Xk)-R(X)|<thresholdR“且”|G(Xk)-G(X)|<thresholdG“且”|B(Xk)-B(X)|<thresholdB其中,R(Xk),G(Xk),B(Xk)依次分別代表Xk塊中的紅色、綠色、藍色平均顏色,k=1,2,3,4;R(X),G(X),B(X)依次代表X塊中紅色、綠色、藍色平均顏色,取值范圍是從0到255;thresholdR,threshodG,thresholdB同上述,若每一塊Xk的平均顏色和四塊綜合后的塊X的平均顏色之差低于設定域值時,則把這四塊區(qū)域合并,做同一塊區(qū)域處理;步驟(5),把分裂合并后的舌頭彩色圖像,映射到灰度空間內(nèi),用Ostu閾值法對該圖像進行分割,區(qū)分舌質(zhì)和舌苔若f(x,y)>threshold_Coating,則(x,y)為舌質(zhì),若f(x,y)≤threshold_Coating,則(x,y)為舌苔,其中,閾值threshold_Coating用Ostu法根據(jù)圖像自動求得,且可在±10的范圍內(nèi)調(diào)整;步驟(8),把步驟(5)得到的舌頭彩色圖像轉入到色調(diào)空間,對舌苔進行第二次分割,從舌苔中分割出厚苔,其分割公式如下從RGB空間轉換到色調(diào)空間的表達式為H(x,y)=cos-1[(R(x,y)-G(x,y))+(R(x,y)-B(x,y))2(R(x,y)-G(x,y))2+(R(x,y)-B(x,y))(G(x,y)-B(x,y))],]]>H(x,y)為點(x,y)的色調(diào)值,R(x,y),G(x,y),B(x,y)分別為該點的紅色,綠色,藍色分量;若H(x,y)>thresholdH,則(x,y)為厚苔,若f(x,y)≤thresholdH,則(x,y)為薄苔,閾值thresholdH用Ostu閾值法根據(jù)色調(diào)圖像自動求得,且可在±10的范圍內(nèi)調(diào)整;步驟(7),計算機用不同顏色分別表示舌質(zhì),薄苔,厚苔部分,列出結果。
2.根據(jù)權利要求1所述的舌頭的彩色數(shù)碼照片的舌苔分割提取方法,其特征在于,所述的threshold_Coating值按照以下步驟求得步驟(a),從0到255中取一個值t作閾值,把圖像分為f(x,y)>t和f(x,y)≤t兩個部分;步驟(b),按下式計算所述兩個部分的類間方差g=w0·(I0-I)2+w1·(I1-I)2,其中,I0和I1分別表示分割后兩個部分的平均灰度,I表示整個圖像的平均灰度,w0,w1表示權重取w0=w1=0.5;步驟(c),對t從0到255進行遍歷,選擇使g最大的t作為分割的閾值threshold_Coating。
3.根據(jù)權利要求1所述的舌頭彩色圖像數(shù)碼照片的舌苔分割提取方法,其特征在于所述的thresholdH值按照以下步驟求得步驟(A),從0到255中取一個值h作閾值,把圖像分為H(x,y)>h和H(x,y)≤h兩個部分;步驟(B),按下式計算所述兩個部分的類間方差s=w0·(Hue0-Hue)2+w1·(Hue1-Hue)2,其中,Hue0和Hue1分別表示分割后兩個部分的平均色調(diào),Hue表示整個圖像的平均灰度,w0,w1表示權重取w0=w1=0.5;步驟(C),對h從0到255進行遍歷,選擇使s最大的h作為分割的閾值thresholdH。
4.根據(jù)權利要求1所述的舌頭彩色數(shù)碼照片的舌態(tài)分割方法其特征在于thresholdR,thresholdG,thresholdB的值為20。
全文摘要
本發(fā)明屬于醫(yī)用診斷用彩色圖像處理技術領域,其特征在于依次含有的下列步驟預處理,去處反光點;對去除反光點后的圖像進行分裂合并計算對顏色較相近的部位用同一顏色代替;用Ostu閾值法對分類合并后的圖像進行分割,區(qū)分舌質(zhì)和舌苔部分;在色調(diào)空間,對舌苔部分用Ostu閾值法進行分割,分割出厚苔,其余部分為薄苔;用不同的顏色分別標示舌質(zhì)、厚苔和薄苔后列出。本發(fā)明對舌苔進行二次分割,具有分割細致,結果兼顧醫(yī)生主觀判斷的優(yōu)點。
文檔編號G06T5/00GK1908984SQ20061011244
公開日2007年2月7日 申請日期2006年8月18日 優(yōu)先權日2006年8月18日
發(fā)明者白凈, 張永紅, 吳佳, 史云迪 申請人:清華大學