姚堯++胡淑金++李紅亮++孫銀合+++常子棟



摘要:傳統X射線醫學影像存在邊緣模糊、對比度低等缺點,影響了醫學影像質量和診斷治療。本文介紹了運用 Matlab 處理醫學影像的數字圖像處理方法,通過分析原始X射線圖像的缺陷,設計預處理、巴特沃斯濾波、中值濾波、同態濾波圖像處理方案,將原始X射線圖像轉化成對比度高、邊緣清晰的圖像,為醫學研究提供便利。
關鍵詞:數字圖像處理;X射線;Matlab;醫學影像
中圖分類號:TP312 文獻標識碼:A 文章編號:1007-9416(2017)02-0167-03
1 引言
X射線的波長短,透射力強,具有感光和熒光作用,現代醫學中,X射線檢查對醫學診斷有重要參考價值。人體的骨骼、器官密度、厚度不同,當X射線通過人體時,在熒光屏上形成灰度不同的圖像,密度大的部位圖像灰度大,密度小的圖像灰度小[1]。醫生根據X射線影像結合患者自述癥狀及診斷經驗即可制定治療計劃。骨骼對X射線的吸收比肌肉對X射線的吸收強得多,1895年,倫琴利用X射線拍攝出歷史上第一張X光片[2-3]。
由于 X 射線曝光不均勻、環境照度低,使得經圖像信息輸入系統獲取的源圖像中含有各種各樣的噪聲與畸變,降低了圖像的品質,大大影響圖像的質量,容易造成對病變器官的漏診與誤診。采用圖像增強的方法對圖像進行改善,將圖像中感興趣的特征有選擇地進行突出,并衰減不需要的特征,可以突出組織間的對比度、邊緣輪廓。
隨著計算機技術的發展,Matlab在圖像處理方面的優勢逐漸顯現。其在仿真模擬、圖形處理、大數據計算方面的功能特別適用于醫學影像處理,開放式的編程環境及擴展功能為它的發展奠定了基礎。其自帶的工具箱含有大量圖像處理函數,避免了使用者重新設計冗雜的程序,簡化了工作流程,利用其實現醫學影像處理和病理分析,具有深遠的醫學價值。
2 圖像處理方案設計
2.1 預處理
圖1為待處理的原始圖像,其灰度過大,邊界不清晰。首先將原始彩色圖像轉換為黑白圖像,將三維RGB彩色圖像壓縮為一維黑白圖像,處理后的圖像大小為原圖像的三分之一。
對像源灰度值進行擴展可以增加動態范圍、擴展對比度,從而提高圖像的清晰度。對比度增強可以改變圖像灰度的動態范圍,改變0-0.5灰度值的像素,將其灰度值擴展為0-1。使用Matlab工具箱中的imadjust (I,[low_in; high_in],[low_out; high_out])指令,將輸入圖像中low_in值映射到輸出圖像中的low_out值 、high_in值映射到輸出圖像中的high_out值 , 并將 low_in與high_in間的值進行線性縮放。
待處理的圖像命名為“Image.jpg”存于E: \文件夾下。A為原始圖像,B為黑白圖像,C為經過對比度增強的圖像。Matlab程序如下:
A=imread('E:\ Image.jpg');
B=rgb2gray(A);
C=imadjust(B,[0,0.5],[]);
圖2為預處理后的圖像。
2.2 巴特沃斯高通濾波
圖像的細節、邊緣主要位于其高頻部分,圖像的模糊主要是由于其高頻成分比較弱。采用巴特沃斯高通加強濾波處理圖像,提取圖像中邊緣灰度值變化率大的部分,對圖像進行銳化處理,是為了消除模糊,突出邊緣。
巴特沃斯高通加強濾波器的傳遞函數為:
,
其中,
表示頻率(u,v)至濾波器中心(u0,v0)的距離[4]。
用巴特沃斯高頻加強濾波處理,可以彌補高頻信號,即在原傳遞函數上加上一個大于0小于1的常數。程序中,取特征值a=1.5,b=0.5。Matlab不支持圖像無符號整型的運算,因此要先將上一步通過預處理的圖像轉換數據類型,每點進行傅里葉變換。計算傅里葉變換后的數據大小,并取整,便于后續傳遞函數的運算。選定截止頻率d0和階次n后,按照傳遞函數進行運算,經濾波后再進行傅里葉反變換,圖3為濾波后的圖像。
Matlab程序如下:
D1=double(C); % 數據類型轉換
D2=fft2(D1); %采用傅里葉變換
D3=fftshift(D2); %數據局陳平衡,將FFT的DC分量移到頻譜中心
[M,N]=size(D3);
n1=floor(M/2);
n2=floor(N/2);
d0=20; %截止頻率為20
n=2; %階次為2
for i=1:M %巴特沃斯高通濾波
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
if d==0
h=0.5;
else
h=1.5/(1+(d0/d)^(2*n))+0.5;
end
D4(i,j)=h*D3(i,j);
end
end
D=ifftshift(D4);
D=uint8(real(ifft2(D)));
2.3 中值濾波
中值濾波的基本原理是將數字圖像中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近真實值,以此消除孤立的噪聲點。本文中選用3*3平滑模版濾波,使其變得均勻。
Matlab程序實現:G=filter2(fspecial('average',3),D)。
Matlab工具箱中自帶的(type,para)函數用于建立預定義的濾波算子,type為濾波算子的類型,本文中選定average做均值濾波;para為參數,本文中選定3*3。將經過巴特沃斯高通加強濾波處理的圖像加到進行過對比度增強的圖像中后,圖像變得清晰。處理后的圖像再進行一次3*3平滑模版濾波,使其變得均勻,圖4為處理后的圖像。經過高通濾波能夠提取出高頻信號,削弱低頻信號,將此時的圖像疊加到經過預處理后的圖像2中,既能獲得邊緣銳化的高頻信號,又保留低頻信號,如圖5所示。
2.4 同態濾波
同態濾波把灰度變換和頻率過濾結合起來,將圖像的照度反射率模型作為頻域處理的基礎,通過壓縮亮度范圍和增強對比度改善圖像的質量。使用這種方法可以使圖像處理符合人眼對于亮度響應的非線性特性,避免了直接對圖像進行傅立葉變換處理的失真[4]。
高斯型高通濾波器的傳遞函數為:
,
rh表示高頻增益,rl表示低頻增益,利用常數c控制濾波器函數斜面的銳化,當rl<1,rh>1時,減小低頻并且增強高頻,動態范圍被壓縮,對比度增強。利用Matlab實現時,首先轉換數據類型,然后進行傅里葉變換,便于在頻域內對高頻信號和低頻信號分別處理,選定高頻增益為2、低頻增益為0.5、常數c為4、截止頻率為10,利用雙重循環實現傳遞函數的運算,再進行傅里葉反變換。處理后的圖像再進行一次3*3平滑模版濾波,使其變得均勻。圖6為處理后的最終圖像。
Matlab程序如下:
H=double(H);
f=fft2(H); %采用傅里葉變換
g=fftshift(f);
[M,N]=size(f);
d0=10;
rl=0.5;
rh=2;
c=4;
n1=floor(M/2);
n2=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
h=(rh-rl)*(1-exp(-c*(d.^2/d0.^2)))+rl;
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
g=uint8(real(ifft2(g)));
3 結語
Matlab集成了多種圖像處理的工具箱,將復雜變換利用自帶函數得以實現。在實際使用中,應根據不同X射線光片的灰度范圍、拍攝亮度、不同骨骼布局適當的調整函數參數,如高頻增益、低頻增益、截止頻率等,同時可將此數據存入數據庫,在后續研究中以調用和參考。將Matlab應用于醫學影像圖像處理,通過對比度增強、傅里葉變換、濾波等處理,優化了圖像質量,提高了診斷效率。
參考文獻
[1]汪寧寧,金奎東,季宏波,陳秀芳,李莉,姜華.淺析X射線在醫學影像診斷領域的發展及應用[J].中國衛生標準管理,2015,(14):167-168.
[2]羅述謙.X射線成像技術在醫學中應用[J].物理,2007,(08):602-608.
[3]苗琦,王金苗.X射線成像技術在醫學中應用[J].微計算機信息物理通報,2015,(05):124-126.
[4]陳春寧,王延杰.在頻域中利用同態濾波增強圖像對比度[J].微計算機信息,2007,(06):264-266.