一種采用匹配濾波器進行靜脈圖像分割方法的matlab實現


圖像分割(segmentation)是一種非常常用的技術,這種技術能夠把你想要研究的東西和不相關的東西給分離開來,比如我們經常用photoshop把照片的人取出來然后換個背景或者其他ps一下,這個就是圖像分割,但是這個領域研究的都是自動圖像分割技術,不需要人工去分。現在已經提出的自動圖像分割方法有很多種,但是只能解決一部分的問題,有些圖像還必須人工去分,所以挑戰依舊存在,新的方法依舊不斷被提出。

出於一些醫療上的目的,經常需要對一些醫療成像的血管圖像進行分割,提取出血管部分,來進行進一步的研究,所以血管分割作為圖像分割中的一類,有很多關專門解決這個問題的算法被提出。而本文將要介紹的方法就屬於所有血管分割方法中的一種,這種方法基於一種叫做匹配濾波器(matched filter)的東西。這種方法早在1989年就已經被提出[1],本文其實也是對這個論文的總結和實現,有很多基於這篇論文的改進算法。

這個方法的靈感來自與信號處理中的匹配濾波器。按照百度百科中將的,匹配濾波器的性能與信號的特性取得某種一致,能夠使濾波器輸出端的信號瞬時功率與噪聲平均功率的比值最大,即當信號與噪聲同時進入濾波器時,它使信號成分在某一瞬間出現尖峰值,而噪聲成分受到抑制。要想設計匹配濾波器,信號的波形必須是已知的。如果將血管圖像看做一個信號,雖然這個信號的具體情況不得而知,但是血管的特點是已知的,基於這點先驗知識可以針對血管設計匹配濾波器,那么按照匹配濾波器的原理,當血管部分輸入時會出現較大值,而當背景區域輸入時將出現較小值,從而將靜脈與血管分開。

根據以上的分析,我們需要研究血管的特點。血管有以下特點:血管的寬度只在較小的范圍內變動,血管壁的兩條線是平行的,血管有方向,而跟深入的分析血管圖像,還可以發現血管橫切線上的灰度曲線是一個下面這個樣子的:

 

根據以上血管的特點,文章[1]中提出了一種匹配濾波器的設計方法。先將血管想象成一小段一小段的平行區域的組合,設定長度為L,寬度為2sigma,然后用一個倒過來的高斯曲線來模擬上面血管橫切線灰度曲線, 從而得到匹配濾波器如下:

因為血管是有方向的,所以在此濾波器的基礎上進行沒15度旋轉一次,得到一個從0度到180度的12個匹配濾波器,然后分別進行卷積,每個像素的值為響應最大的那個濾波器得到的值。濾波之后,在采用一個全局的閾值進行過濾,大小各分一邊,得到一個二值化的血管圖像。

上面是只是簡單的進行了介紹,還有很多細節沒有提出,具體的方法參照論文。

下面是matlab代碼:

function [g,bg]=matchedFilter2(f)

f=double(f);
% mean filter
f=medfilt2(f,[5,5]);
f=medfilt2(f,[21 1]);
f=medfilt2(f,[1,7]);

% 參數
os=12;  % 角度的個數
sigma=10;
tim=4;
L=9;
t=70; % threshhold

thetas=0:(os-1);
thetas=thetas.*(180/os);
N1=-tim*sigma:tim*sigma;
N1=-exp(-(N1.^2)/(2*sigma*sigma));
N=repmat(N1,[2*floor(L/2)+1,1]);
r2=floor(L/2);
c2=floor(tim*sigma);
[m,n]=size(f);
RNs=cell(1,os);  % rotated kernals
MFRs=cell(1,os); % filtered images
g1=f;

% matched filter
for i=1:os
    theta=thetas(i);
    RN=imrotate(N,theta);
    %去掉多余的0行和零列
    RN=RN(:,any(RN));
    RN=RN(any(RN'),:);
    meanN=mean2(RN);
    RN=RN-meanN;
    RNs{1,i}=RN;
    MFRs{1,i}=imfilter(f,RN,'conv','symmetric');
end

% get the max response
g=MFRs{1,1};
for j=2:os
    g=max(g,MFRs{1,j});
end
bg=g<t;

end

 

里面三個參數sigma,L,T的選擇需要針對不同的應用去嘗試,如果與論文中一樣分割的是視網膜血管圖像,參數可以不變即2,9,3。而我做的是對手部靜脈的分割,所以參數是上面代碼所顯示。至於全局閾值t的選擇,最粗獷最常用的方法就是試幾次找最好的,當然也有其他找這個閾值的方法。至於這個方法的性能,我覺得還是不錯的。但是,為了取得好的結果預處理和后續處理也是必不可少的。

 

 [1] S. Chaudhuri, S. Chatterjee, N. Katz, M. Nelson, M. Goldbaum, Detection of blood vessels in retinal images using two dimensional matched filters, IEEE Trans. Med. Imaging 8 (3) (1989) 263–269.

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM