陳 超
(內(nèi)江師范學(xué)院四川省數(shù)據(jù)恢復(fù)重點實驗室 四川 內(nèi)江 641112)
醫(yī)學(xué)圖像邊界信息檢測是醫(yī)學(xué)圖像分析的重要環(huán)節(jié)。一般的醫(yī)學(xué)圖像邊緣是通過尋找最佳閾值來分割圖像,而邊界是一個重要的信息點。因為邊界往往是正常組織和病變組織相鄰的位置,實際檢測病變組織的邊界不準(zhǔn)確或者不精確,對于診斷病情沒有實際輔助意義。一些國內(nèi)學(xué)者[1-2]使用權(quán)重因子改進概率轉(zhuǎn)移函數(shù)與混沌系統(tǒng)動態(tài)更新信息素矩陣檢測出目標(biāo)的真實邊緣,結(jié)果表明識別邊緣效果好但沒有做其他目標(biāo)對比實現(xiàn),無法說明其泛化能力。詹永豐等[3]用邊緣梯度與二維高斯濾波器對CT圖像進行濾波處理實現(xiàn)CT 圖像邊界的完整分割,但分割出來的目標(biāo)完整性不理想。張小莉等[4]改進蟻群算法(ACO),結(jié)合聚類動態(tài)更新信息素濃度和參數(shù)變量把實驗醫(yī)學(xué)圖像精確分割,但是沒有針對噪聲影響下分割是否有效進行分析。許梅梅等[5]提出自適應(yīng)邊緣算法優(yōu)化醫(yī)學(xué)圖像邊緣信息檢測出目標(biāo)的真實邊緣,但有時丟失了部分真實的邊緣。鄭延斌等[6]基于蟻群算法的虛擬植物優(yōu)化研究,針對植物的分割取得優(yōu)秀效果。朱立軍等[7]提出一種改進蟻群算法的醫(yī)學(xué)圖像提取。張耀楠等[8]利用ACO結(jié)合網(wǎng)格分割目標(biāo)邊緣。吳學(xué)禮等[9]應(yīng)用改進ACO實現(xiàn)無人機避險對比性實驗,取得了良好效果,但沒有對時間復(fù)雜度做定量分析。黃志華[10]利用自適應(yīng)ACO求解旅行商最優(yōu)路徑問題(TSP)。文獻[11-13]也提出從改進蟻群算法的參數(shù)實現(xiàn)越野路徑規(guī)劃或者引入混沌系統(tǒng)預(yù)測控制的無人機群避碰對機動性的影響或者多閾值蟻群算法實現(xiàn)各種圖像目標(biāo)的分割,取得了顯著效果,但是實時性或者分割的有效性沒有得到明顯的提高。本文改進蟻群算法的信息素重要程度參數(shù)和揮發(fā)系數(shù)等,實時地根據(jù)聚類前后期不同,分階段地動態(tài)修改相關(guān)參數(shù),再結(jié)合原圖和羅伯特邊緣最近的變化速度動態(tài)地調(diào)整蟻群算法的信息素,指導(dǎo)更多的螞蟻向最優(yōu)路徑聚集。通過五組醫(yī)學(xué)圖像的實驗結(jié)果做圖像分割客觀分析后[14-17],結(jié)果表明改進后的蟻群算法結(jié)合圖像的邊緣變化等信息可以很好地實現(xiàn)醫(yī)學(xué)圖像的有效分割。
ACO主要是模擬自然界螞蟻的群體智能,其中每個螞蟻的信息在蟻群內(nèi)部不斷更新并互相學(xué)習(xí)交流,使整體不斷優(yōu)化,算法通過外激素的濃度對最優(yōu)解進行篩選。問題的解在蟻群中通過不斷迭代逐步被優(yōu)化。對于各種復(fù)雜優(yōu)化問題,蟻群算法通過定義解的分量來解決。開始時,解的分量對應(yīng)每只螞蟻,備選解以重復(fù)增加解的分量的方式來產(chǎn)生。當(dāng)處于選擇點上時,決定哪個解的分量要加到它的當(dāng)前部分解,主要取決于信息量的濃度以及禁忌表的情況,在構(gòu)造完一個完整的解后,解的分量會被螞蟻涂上信息素,指導(dǎo)接下來整體和個體的活動。ACO中主要包含兩個環(huán)節(jié):每個螞蟻的狀態(tài)轉(zhuǎn)移規(guī)則;信息素更新規(guī)則。
1) 狀態(tài)轉(zhuǎn)移規(guī)則:
人工螞蟻每次從當(dāng)前位置i,在八鄰域范圍內(nèi)按照如下轉(zhuǎn)移概率公式選擇下一步要到達的位置j:
(1)
式中:Ω表示第i只螞蟻允許選擇可能位置的集合,在圖像中一般是八鄰域范圍內(nèi);τij(t)是第t次迭代,醫(yī)學(xué)圖像某個像素點具體的位置的信息素濃度;α和β為常數(shù);ηij(t)為期望程度。
2) 信息素更新規(guī)則:
(2)
(3)
式中:ρ為每只螞蟻信息素的保留因子,取(0,1)范圍內(nèi)的常數(shù);Q為常數(shù);Ck(t)是第k只螞蟻在t次迭代尋優(yōu)過程中所經(jīng)過路徑的實際長度。
1.2.1改進狀態(tài)轉(zhuǎn)移規(guī)則
在迭代中,每只人工螞蟻都會在當(dāng)前像素點位置的八鄰域范圍內(nèi)以當(dāng)前的轉(zhuǎn)移概率選擇最優(yōu)坐標(biāo)點。針對不同迭代次數(shù)NC,2個參數(shù)會對應(yīng)取不同的值,以應(yīng)對不同時期算法不同的特點,大致分為四個階段進行調(diào)整,兩個參數(shù)α、β動態(tài)調(diào)整具體如下:
(4)
(5)
式中:MAX為最大迭代次數(shù);NC為當(dāng)前迭代次數(shù)。這些參數(shù)的設(shè)置都是經(jīng)過大量實驗給定的。α′和β′分別為本文改進后的重要程度和啟發(fā)因子。則改進后的轉(zhuǎn)移概率公式為:
(6)
1.2.2改進信息素更新規(guī)則
醫(yī)學(xué)圖像的每只螞蟻信息素值初始化為:
(7)
其中:
gk=|f(i+1,j)-f(i,j)|+|f(i,j+1)-f(i,j)|
(8)
E(f)為當(dāng)前待檢測醫(yī)學(xué)圖像的所有像素的期望值。信息素濃度的調(diào)整因子ρ改進為ρ′,具體如下:
(1-gk)
(9)
式中:學(xué)習(xí)因子cc1=0.85;rr1=0.75。
改進后的信息素更新公式為:
(10)
式中:m是所有像素的綜述;n是在聚類時小于指定半徑的像素總個數(shù),則:
(11)
本文提出動態(tài)自適應(yīng)的方法來控制:
(12)
式中:ε=0.001。算法終止,反之繼續(xù)運行尋找最優(yōu)閾值。最后使用改進ACO邊緣與聚類算法將樣本到聚類中心的歐式加權(quán)距離:
(13)
式中:cjk為聚類半徑;m為螞蟻數(shù)。
(1) 初始化蟻群算法各參數(shù),如α、β、Q等參數(shù);
(2) 求出圖像直方圖的峰值點作為初始聚類中心;
(3) 根據(jù)信息素和梯度信息由式(6)計算螞蟻選擇最優(yōu)路徑;
(4) 根據(jù)式(13)算歐氏加權(quán)距離;
(5) 使用式(10)更新路徑上的信息素濃度;
(6) 計算該類更新后的聚類中心;
(7) 當(dāng)聚類中心變化量小于閾值時,停止計算,并輸出聚類中心及聚類個數(shù);
(8) 由第(7)步得到的聚類數(shù)目和中心作為FCM的原始聚類個數(shù)和中心位置;
(9) 根據(jù)最新的信息素和歐式距離更新聚類中心;
(10) 計算最優(yōu)分割閾值或達到最大迭代次數(shù)時,停止計算,否則轉(zhuǎn)到(3)繼續(xù)迭代。
實驗環(huán)境是Window XP系統(tǒng)、MATLAB 7.0、英特爾奔騰CPU 2.60.00 GHz(2 CPUs)、內(nèi)存8 GB,64位操作系統(tǒng)。
針對三大經(jīng)典邊緣算子以及最近兩年國內(nèi)外成果(文獻[1]和文獻[12])做了5組對比性實驗,所有實驗數(shù)據(jù)都是256×256的醫(yī)學(xué)圖像,相關(guān)的核心代碼如下:
function T=AntCC(x)
%初始化相關(guān)參數(shù)
alpha=1;
beta=1;
maxant=numel(x);
r=20;
//聚類半徑
rho=0.9;
//揮發(fā)系數(shù)
ranta=0.9;
//隸屬度
c=105;
//食物源中心(初始聚類中心)
new_m=0;
//類集合中所有像素灰度值總和
new_n=0;
//類集合中所有像素個數(shù)
x=double(x);
j=1;
for i=1:maxant
distance(i)=sqrt((x(i)-c)^2);
//螞蟻i到食物源c的距離
if distance(i)<=r;
distance3(j)=distance(i);
//小于指定歐式距離的保留,其余的賦值為0
j=j+1;
end
if distance(i)<=r;
ph(i)=1;
else
ph(i)=0;
end
if distance(i)==0;
//判斷為一類
similar(i)=1;
else
similar(i)=r/sqrt((x(i)-c)^2);
//不為一類,那么就對相似度賦值為r/sqrt((x(i)-c)^2),
//越不相似的,相似度越低
end
if distance(i)<=r;
//判為一類
new_n=new_n+1;
newph(new_n)=ph(i)*(1-rho^new_n)/(1-rho);
%rho=0.9(改進)
newph1(new_n)=1;
//信息濃度,更新為1
end
if distance(i)<=r;
similar1(i)=similar(i);
end
end
similar2=similar1(find(similar1));
allsum=newph1.*similar2;
for n=2:new_n
allsum(n)=allsum(n-1)+allsum(n);
end
for n=1:new_n
newallsum(n)=allsum(n)/n;
end
cc1=1.95;
rr1=0.75;
for n=1:new_n
if distance3(n)==0;
newp(n)=1;
//是同一類,必然要選
else
//不是同一類,就根據(jù)當(dāng)前概率來選擇
newp(n)=((newph1(n)^alpha)*
(similar2(n)^beta))/newallsum(n);
V= cc1*rr1*(1-arccos(-2*n/new_n+1));
V=0.729*V;
newp(n)=newp(n)+V;
end
end
for i=1:maxant
if distance(i)<=r;
//差異太大的設(shè)置為0
new_m(i)=x(i);
end
end
new_m1=new_m(find(new_m));
//只保留非0
//元素,兩個蟻群算法都是使用這個來計算new_m1
//改進蟻群算法求類間分割閾值
new_m2=0;
new_n2=0;
for n=1:new_n
//目標(biāo)類
if newp(n)>ranta;
//大于隸屬度0.9,對該類像素值求和(改進)
new_m2=new_m2+new_m1(n);
//類集合中所有像素灰度值總和
new_n2=new_n2+1;
//統(tǒng)計一共有多少個像素
end
end
//改進蟻群算法求類間分割閾值
//計算目標(biāo)所有像素的灰度值的平均值
T=new_m2/new_n2;
在本次實驗中一共五張醫(yī)學(xué)圖像,如圖1-圖5所示。其中每張圖中包含原圖、對應(yīng)的直方圖、原圖的灰度化圖像、roberts算子、sobel算子、prewitt算子、文獻[1]、文獻[12]、本文改進算法分割的效果圖。圖1為CT醫(yī)學(xué)圖像,從分割效果可以看出改進后的蟻群算法可以很好地檢測出圖像的邊緣信息,包含的信息量較文獻[1]和文獻[12]增加很多,對于診斷有很大的輔助作用。
圖1 第一張醫(yī)學(xué)圖像邊界提取效果圖
圖2也是CT圖像,只是清晰度不同,左邊圖像灰度值較低,右邊較高。使用改進后的蟻群算法分割后,可以看出邊界明顯較前面兩種算法更加完整,尤其是第二排第二幅圖像擁有的信息量提高了。
圖2 第二張醫(yī)學(xué)圖像邊界提取效果圖
圖3是病人的頭部MRI圖像,對于后腦勺部分的紋理比較復(fù)雜,灰度信息差別不大,使用改進后的算法分割后可以從分割的邊界信息輔助診斷,靠近嘴巴和后腦勺部分的邊界得到了清晰的呈現(xiàn)。
圖3 第三張醫(yī)學(xué)圖像邊界提取效果圖
圖4是胸部到盆腔的整段X影像。在胸部靠近脊椎部分受噪聲污染導(dǎo)致圖像邊界的清晰度受到嚴重影響,使用改進后的蟻群算法能檢測出真實邊界。
圖4 第四張醫(yī)學(xué)圖像邊界提取效果圖
圖5是一個病患的TCD顱腦超聲腦電圖,腦血管的邊界信息可以很好地輔助醫(yī)生確診疾病,檢測出的邊界清晰度和完整性得到了提高,尤其是腦顱內(nèi)部的血管邊界得到了清晰的展示。
圖5 第五張醫(yī)學(xué)圖像邊界提取效果圖
分別對改進ACO結(jié)合圖像邊緣信息分割后做客觀評價,主要的評價指標(biāo)如下[14-18]:
(1) 概率隨機指數(shù)(PRI)計算了一對像素的分數(shù),這些像素的標(biāo)簽在計算出的分割和真值之間是一致的,在多個真值分割中求平均值,以解釋人類感知的尺度變化。PRI越大檢測效果越好。
(2) 信息變化(VOI)度量將兩個分段之間的距離定義為一個分段給定另一個分段的平均條件熵,從而粗略地測量一個分段中不能由另一個解釋的隨機性數(shù)量。在原圖上能夠檢測出真實而精準(zhǔn)的邊界效果為最佳,VOI越大,檢測邊緣信息越好。
(3) 全局一致性錯誤(GCE)衡量一個分段被視為另一個分段的細化程度。 GCE越大,檢測邊緣信息越好。
表1-表5給出了文獻[1]、文獻[12]、本文算法的五幅醫(yī)學(xué)圖像的定量分析。
表1 第一幅醫(yī)學(xué)邊緣提取參數(shù)比較統(tǒng)計
表2 第二幅醫(yī)學(xué)邊緣提取參數(shù)比較統(tǒng)計
表3 第三幅醫(yī)學(xué)邊緣提取參數(shù)比較統(tǒng)計
表4 第四幅醫(yī)學(xué)邊緣提取參數(shù)比較統(tǒng)計
表5 第五幅醫(yī)學(xué)邊緣提取參數(shù)比較統(tǒng)計
改進ACO提取五幅醫(yī)學(xué)圖像邊緣閾值如表6所示。
表6 改進ACO提取五幅醫(yī)學(xué)圖像邊緣閾值
計算機算法復(fù)雜性的衡量標(biāo)準(zhǔn)是該算法完成相應(yīng)功能時所需要消耗的計算機資源的多少,主要包括時間和空間兩個部分,即時間復(fù)雜性和空間復(fù)雜性兩個部分構(gòu)成[18-19]。
(1) 時間復(fù)雜度比較。蟻群算法的時間復(fù)雜度分析如表7所示。
表7 蟻群算法的時間復(fù)雜度分析
綜上所述時間復(fù)雜度為:
T(n)=O(Ncn2m2)
(14)
式中:Nc為最大循環(huán)數(shù);n為螞蟻數(shù);m為圖像高度和寬度。
改進后的算法在檢測目標(biāo)時,沒有增加額外時間開銷,且有一定時間的減少,在普通的計算機上即可完成實驗。在上述數(shù)據(jù)集檢測時沒有出現(xiàn)數(shù)量級的增加,對于有些醫(yī)學(xué)圖像分割時間有略微的增加。分割運動目標(biāo)的時間、整個過程所有的實驗結(jié)果都直接寫入磁盤需要的時間等,對比文獻[1]和文獻[12]算法的時間見表8。
表8 改進ACO_FCM提取五張圖像邊界所需時間 s
(2) 空間復(fù)雜度比較。改進后蟻群算法中的數(shù)據(jù)主要在于問題的描述和尋找最優(yōu)分割閾值數(shù)據(jù),沒有增加額外的內(nèi)存空間,依然使用二維數(shù)組,空間復(fù)雜度為[18-19]:
S(n)=O(n2)+O(nm)
(15)
(3) 魯棒性分析。在以上仿真實驗中,所有數(shù)據(jù)在實現(xiàn)目標(biāo)檢測的過程中沒有出現(xiàn)不穩(wěn)定現(xiàn)象,也沒有出現(xiàn)過擬合現(xiàn)象,只有在檢測后期目標(biāo)位置不精準(zhǔn),導(dǎo)致檢測出其他的目標(biāo),因此改進ACO_FCM算法有較好的魯棒性。
本文提出了一種新的基于蟻群算法的醫(yī)學(xué)圖像提取算法。該算法不是通過人工預(yù)設(shè)閾值來判斷醫(yī)學(xué)圖像,而是先通過人工螞蟻的遍歷來增強目標(biāo)(醫(yī)學(xué)圖像邊緣)的信息強度,然后使用聚類算法自動獲得最佳醫(yī)學(xué)圖像分割閾值。通過定性和定量分析,不管是檢測出的邊緣展現(xiàn)還是細節(jié)分析都驗證了本文改進后的蟻群算法具有良好的檢測邊界的作用。通過實驗驗證,當(dāng)人工螞蟻間距取 2個像素的時候,既能保證醫(yī)學(xué)圖像檢測的速度又能保證醫(yī)學(xué)圖像檢測的效果。因本文算法搜索的目標(biāo)是灰度小、梯度大的像素,易造成漏判和誤判,未來還需進一步研究和解決。