《匹配濾波器進行靜脈圖像分割方法的matlab實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《匹配濾波器進行靜脈圖像分割方法的matlab實現(xiàn)(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
圖像分割(segmentation)是一種非常常用的技術(shù), 這種技術(shù)能夠把你想要研究的東西和不相關(guān)的
東西給分離開來,比如我們經(jīng)常用 photoshop把照片的人取岀來然后換個背景或者其他 ps 一下,
這個就是圖像分割,但是這個領域研究的都是自動圖像分割技術(shù), 不需要人工去分?,F(xiàn)在已經(jīng)提
岀的自動圖像分割方法有很多種, 但是只能解決一部分的問題, 有些圖像還必須人工去分, 所以
挑戰(zhàn)依舊存在,新的方法依舊不斷被提岀。
岀于一些醫(yī)療上的目的,經(jīng)常需要對一些醫(yī)療成像的血管圖像進行分割, 提取岀血管部分,來進
行進一步的研究,所以血管分割作為圖像分割中的一類, 有很多關(guān)專門解決這個
2、問題的算法被提
岀。而本文將要介紹的方法就屬于所有血管分割方法中的一種, 這種方法基于一種叫做匹配濾波
器(matched filter)的東西。這種方法早在 1989年就已經(jīng)被提岀[1],本文其實也是對這個論文的 總結(jié)和實現(xiàn),有很多基于這篇論文的改進算法。
這個方法的靈感來自與信號處理中的匹配濾波器。 按照百度百科中將的,匹配濾波器的性能與信
號的特性取得某種一致, 能夠使濾波器輸出端的信號瞬時功率與噪聲平均功率的比值最大, 即當
信號與噪聲同時進入濾波器時, 它使信號成分在某一瞬間岀現(xiàn)尖峰值, 而噪聲成分受到抑制。要
想設計匹配濾波器, 信號的波形必須是已知的。 如果將血管圖像
3、看做一個信號, 雖然這個信號的
具體情況不得而知,但是血管的特點是已知的, 基于這點先驗知識可以針對血管設計匹配濾波器,
那么按照匹配濾波器的原理, 當血管部分輸入時會岀現(xiàn)較大值, 而當背景區(qū)域輸入時將岀現(xiàn)較小
值,從而將靜脈與血管分開。
根據(jù)以上的分析, 我們需要研究血管的特點。 血管有以下特點:血管的寬度只在較小的范圍內(nèi)變
動,血管壁的兩條線是平行的,血管有方向,而跟深入的分析血管圖像, 還可以發(fā)現(xiàn)血管橫切線
上的灰度曲線是一個下面這個樣子的:
-8 -4 0 2 4 6 « 10
bNUsss-SAS 片建燈
根據(jù)以上血管的特點,文章 [1]中提岀了一
4、種匹配濾波器的設計方法。先將血管想象成一小段一 小段的平行區(qū)域的組合,設定長度為 L,寬度為2sigma,然后用一個倒過來的高斯曲線來模擬
上面血管橫切線灰度曲線, 從而得到匹配濾波器如下:
躅(兒 y) = -exp (-u2/2a2) vp- e N、
因為血管是有方向的,所以在此濾波器的基礎上進行沒 15度旋轉(zhuǎn)一次,得到一個從 0度到180
度的12個匹配濾波器,然后分別進行卷積,每個像素的值為響應最大的那個濾波器得到的值。
濾波之后,在采用一個全局的閾值進行過濾,大小各分一邊,得到一個二值化的血管圖像。
上面是只是簡單的進行了介紹,還有很多細節(jié)沒有提岀,具體的方法參照論文
5、。
下面是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]);
%參數(shù)
os=12; %角度的個數(shù) 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.A2)/(2*sig
6、ma*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(:,a ny (RN));
RN=RN(a ny(RN'
7、),:);
mea nN=mea n2(RN);
RN=RN-mea nN;
RNs{1,i}=RN;
MFRs{1,i}=imfilter(f,RN,'co nv','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
里面三個參數(shù)sigma,L,T的選擇需要針對不同的應用去嘗試, 如果與論文中一樣分割的是視網(wǎng)膜
血管圖像,參數(shù)可以不變即 2,9,3。而我做的是對手部靜脈的分割, 所以參數(shù)是上面代碼所顯示。
至于全局閾值t的選擇,最粗獷最常用的方法就是試幾次找最好的, 當然也有其他找這個閾值的
方法。至于這個方法的性能,我覺得還是不錯的。 但是,為了取得好的結(jié)果預處理和后續(xù)處理也
是必不可少的。
[1] S. Chaudhuri, S. Chatterjee, N.