趙曉梅,劉兆邦,張正平,謝 璟,陸千琦*
(1.貴州大學 大數據與信息工程學院,貴州 貴陽 550025;2.中國科學院 蘇州生物醫學工程技術研究所,江蘇 蘇州 215163;3.溫州市人民醫院,浙江 溫州 325699)
皮膚病是人類中很常見的一種病癥,種類繁多,其中屬惡性黑色素瘤最為危險,最易導致皮膚癌死亡率上升。皮膚鏡是一種檢測皮膚病變的非侵入性成像方法,使皮損的亞表面結構更容易被分析,然而,研究表明,皮膚鏡檢查實際上可能會降低缺乏經驗的皮膚科醫生的診斷準確性。因此,為了最大化降低由人類主觀性引發的診斷錯誤,科研工作者將近幾年飛速發展的計算機圖像分析技術和皮膚鏡檢查融為一體,形成了自動皮膚鏡圖像分析技術。該技術一般分為3個步驟,分別為圖像分割、特征提取和病變分類,其中分割對于圖像分析尤為重要,因為它會影響后續步驟的準確性。目前為止,已經開發了許多方法用于皮膚損傷的自動分割,但是由于病變與周圍皮膚之間的對比度低、頭發和氣泡等干擾性因素、病變區域與背景區域的復雜性等原因,導致皮膚鏡圖像分割仍然是一項艱巨的任務。
皮損分割方法可大致分為基于區域的,基于邊緣的和基于閾值的分割算法。基于閾值的方法如文獻[1-3],這類方法通常根據圖像的直方圖選取一個合適的閾值進行分割,但由于大多數皮膚鏡圖像的皮損區域和背景區域并沒有明顯分界線,其直方圖存在多個峰值,導致閾值分割算法并不適用于皮膚鏡圖像分割。基于邊緣的方法以主動輪廓模型為主,在文獻[4-5]中有所體現,這些方法的目的是構造能量泛函,能量函數由內力和外力組成,通過最小化能量函數找到皮損的最佳邊緣,然而該類方法依賴于分割參數的選擇,并且可變模型通常還需要產生無效停止標準,影響運算效率。基于區域的分割方法[6-9]是指根據預定義的圖像特征(如顏色、強度、小波等)將圖像劃分成不同的區域。這類方法對于弱邊緣的檢測并不迅捷。近幾年,監督學習方法如卷積神經網絡(CNNs)被用于皮膚鏡圖像中的病變分割[10-12],該方法需要大量標記的訓練圖像從而提高分割正確率,然而,由于手工注釋的復雜性和臨床醫生的主觀性,皮膚鏡圖像數據的獲取是極其不易的。文獻[13]敘述并討論了上述所提到的皮膚病分割算法以及它們結合的分割算法。
針對上述算法存在的問題,文中提出了一種基于超像素和密度聚類的皮膚鏡圖像分割算法。為了驗證該算法的性能,從ISIC2018上下載了1 000多張皮膚鏡圖像,人為挑選并分成了易分,中等,難分各100張圖像,從分割指標來看,該算法在易分,中等,難分這3個種類的皮膚鏡圖像上與其他算法相比都取得了不錯的分割效果,尤其邊界比較模糊的圖像更能體現出該算法的有效性。
皮膚鏡圖像中皮損結構根據皮膚狀況而變化很大,諸如毛發、氣泡和凝膠墨水標記之類的偽影降低了分割算法的效果,其中屬毛發噪聲最常見也最影響分割效果。文獻[14]對皮膚鏡圖像做了全方位的預處理。而文中只處理毛發噪聲,新提出了一種毛發去除方法,首先使用低帽操作識別頭發,其次進行二值化和腐蝕使得毛發區域突出,最后用原始圖像的閉操作圖像替換毛發區域。
超像素算法是指具有相似紋理、顏色、亮度等特征的相鄰像素構成的不規則像素塊,它利用像素之間特征的相似性將像素分組,用少量的超像素代替大量的像素來表達圖片特征,很大程度上降低了后續圖像處理任務的復雜性,它們已經成為計算機視覺算法的關鍵步驟。
SLIC是用于生成超像素的方法之一,文獻[15]研究調查了28個超像素算法,并說明了SLIC為在實踐中使用的最佳6種方法之一。該算法將彩色圖像轉化為CIELAB顏色空間和XY坐標下的5維特征向量,然后對5維特征向量構造距離度量標準,對圖像像素進行局部聚類的過程。SILC包括3個核心步驟:

(2)超像素生成:將每個像素點根據距離度量公式(1)分配到最近的聚類中心,為了加快算法收斂,SLIC將搜索窗口改為2S*2S,而不是k-means算法中的s*s區域。
(1)
其中,dlab和dxy分別為:
(3)聚類中心更新:新的種子點根據所有像素的平均l-a-b-x-y向量進行更新。
該算法是Martin Ester等人[16]提出的對空間噪聲數據進行有效聚類的一種方法,核心思想是先發現密度較高的點,然后把相似的高密度點逐步都連成一片,進而生成各種簇。
在文獻[17]中提到密度聚類的相關定義分別為:
(1)數據點的鄰域:以點p為核心,Eps為半徑的鄰域定義為:
NEps={q∈D|dist(p,q)≤Eps}
其中,D為空間中數據集的集合,dist(p,q)表示D中p和q間的距離。
(2)直接密度可達:點p由點q直接密度可達需滿足p∈NEps,|NEps|≥MinPts。
(3)密度可達:點p由點q密度可達需滿足:若有一系列點p1,…,pi,…,pn,p1=q,pn=p,其中pi+1由pi直接密度可達。
(4)密度相連:點p與點q密度相連需滿足若存在點o,點p與q都由點o密度可達。
由以上定義可歸納出DBSCAN的定義:由密度可達關系導出的最大密度相連的樣本集合,即為最終聚類的一個類別或一個簇。
一般采取靈敏度(sensitivity,SE)、特異度(specificity,SP)、Dc系數、Ja指數、像素精確度Pa和誤差概率(error probability,EP)來評價一個分割算法的性能,相關定義如下所示:
(2)
(3)
(4)
(5)
(6)
(7)
其中,TP為真陽性,FN為假陰性,FP為假陽性,TN為真陰性[17]。
所提出的皮膚鏡圖像分割算法流程如下:
Step1:(預處理)對整理的300張皮膚鏡圖像進行預處理,由于下載的圖像大小不一,圖像尺寸過大影響算法運行時間,故將這300張皮膚鏡圖像統一大小為256*192。
Step2:(SILC超像素分割)該步驟主要參考文獻[14],算法描述如算法1所示:
算法1:SILC超像素分割。
輸入:皮膚鏡圖像,超像素個數,迭代次數;
輸出:超像素標記圖像I,鄰接矩陣Am,結構體數組C。
該算法的實現步驟見1.2節闡述部分。
文中在算法1的基礎上做了兩個細微改變,一是用六邊形網格代替了方形,二是聚類的方向不是沿著最低梯度。
Step3:(密度聚類算法)該算法是在超像素分割的基礎上將顏色相近的超像素合并在一起,達到皮膚鏡圖像分割的目的。算法流程見算法2。
算法2:密度聚類算法。
輸入:超像素標記圖像I,鄰接矩陣Am,結構體數組C,顏色閾值t;
輸出:超像素新聚類區域的標記圖像Ic。
步驟:
將所有的超像素標記為未訪問
(1)選擇第一個超像素p1,標記為已訪問;
(2)根據鄰接矩陣Am遍歷找出p1滿足顏色閾值t的全部鄰域,將其劃分為N1;
(3)不滿足的超像素則劃分為N2,找出屬于N2的超像素;
(4)繼續劃分新的簇Ni,直到所有的超像素劃分完畢。
輸出結果為Ic={N1,N2,…,Nk}。
Step4:(形態學處理)經過上述步驟處理后的皮膚鏡圖像,由于皮損區域和背景區域的多樣性,一些圖像會出現離散的小洞,用形態學方法對這些圖像進行處理,得到最終的分割圖像。
為了判斷所提算法的可行性,從ISIC2018上下載了1 000多張皮膚鏡圖像及其專家標注對應的皮損二值分割圖像,從中挑選300張作為所提算法的數據集,同時根據圖像背景是否復雜、紋理是否粗糙、皮損區域是否顯著將皮膚鏡圖像分成了易分,中等和難分3個數據集,以此更全面、更綜合地評價所提算法的好壞。由于文中只涉及分割,不涉及分類,所以不對皮膚病類型作深入研究。
用1.4節提出的評價指標評估文中算法,所使用的是像素級估計,即與標準分割圖像相比,能夠正確識別多少個病變像素。其中SE表示的是皮損像素的正確率,SP表示的是背景皮膚像素的正確率,Ja指數和Dc系數估計的是標準分割圖像與算法分割病變區域的重疊程度即相似度。選取了文獻[1]-自適應閾值分割算法,文獻[1,4]-水平集分割算法,文獻[8]-結合顯著性和OSTU分割算法,與文中算法作比較,表1~表3是各算法的分割指標對比情況。

表1 易分組

表2 中等組

表3 難分組
從表1~表3可看出,無論皮膚鏡圖像的質量好壞,文中所提出的算法對比于文獻[1,4,8]的算法在各項分割指標上都取得了很好的效果。
從易分組來看,除特異度指標外,其他指標文中算法表現得最好,文獻[8]中的算法次之,其中靈敏度取得了比第二名高出10%的結果,這說明文中算法在檢測皮損像素上具有較高的敏感性,這很大程度上取決于密度聚類算法能夠很好地檢測到皮膚鏡圖像的邊緣。從中等組來看,文獻[8]中的算法與文中算法效果不相上下,但同樣從靈敏度可看出,結合顯著性和OSTU分割算法在處理圖像邊緣時效果遠遠低于文中算法。從難分組來看,所有算法在處理背景比較復雜、皮損區域對比度低的皮膚鏡圖像時,分割指標都不算理想,相比較而言,文中算法取得了相對較高的結果。其次,分析三組的相似度指標,文中算法的Dc系數在3種類型的圖像上的結果分別為0.902 8,0.798 5,0.694 4,都優于文中所提到的算法。
圖1是所提算法的整個過程,圖2是未經預處理的分割圖像,中間省略了部分過程圖像。未經過毛發去除的圖像會導致分割失敗,可見,對于有毛發噪聲的圖像,預處理步驟可以極大提高分割精度。

圖1 文中算法過程

圖2 未經過預處理的圖像

圖3 易分組

圖4 中等組

圖5 難分組
圖3~圖5是文中算法在易分、中等和難分上的分割結果以及與其他算法對比情況。對于背景比較單一,皮損區域比較明確的情況,如圖3所示,4種算法都能得到很好的分割效果,但是自適應閾值和水平集分割方法并不能捕捉到類似鋸齒的邊界,相反,文獻[8]中的算法和文中算法比較接近真實的分割結果,所以它們的Ja指數和Dc系數都比較高。對于圖4中皮損區域不單一以及與背景圖像相似的情況,自適應閾值和水平集都分割失敗,這兩種算法僅能分割出明顯的皮損部分,文中算法在圖2中第一幅圖像上,檢測出了右下角和上方的非皮損部位,說明該算法較靈敏。對于圖5分辨率低、難于分割的皮膚鏡圖像,自適應閾值和水平集依然分割失敗,文中算法仍然能正確分割出目標區域,但對于極其模糊的邊界,該算法并不能準確檢測出來,也可以看出,文獻[8]中的算法能處理不均勻但無法處理模糊邊界。對于那些極難分割的圖像,如圖6,所有的分割算法都無效。

圖6 難分中分割失敗的皮膚鏡圖像
提出了一種基于超像素和密度聚類的皮膚鏡圖像分割算法,該算法中間過程少,運行速度快(運行一張圖片僅需2秒的時間)。能夠準確檢測皮膚鏡圖像的弱邊緣,這點對比于其他分割算法具有很大的優勢,分割精度也與其他分割算法相比更高。同時對于毛發噪聲提出了一種新的去除方法,該方法原理簡單,效果較好。
對于不同類型的皮膚病圖像,因為在密度聚類算法里需要設置合適的閾值,所以所提出的算法對于部分圖像需要手動調參,而關于皮膚鏡圖像分割的算法很多,但通用的算法很少。因此,研究皮膚鏡圖像的分割將會是一個長期而艱巨的過程。