susan算子的运用
SUSAN?算法
?????1997?年英國牛津大學(xué)的?S.M.smith?和?J.M.Brady?人提出了一種用于低層次圖像
處理的最小核值相似區(qū)(即?Smallest Univalue Segment Assimilating Nucleus,簡稱SUSAN)算法[65,66]。它直接對圖像灰度值進行操作,方法簡單,無需梯度運算,
保證了算法的效率;定位準確,對多個區(qū)域的結(jié)點也能精確檢測;并且具有積分
特性,對局部噪聲不敏感,抗噪能力強。
???SUSAN?準則的原理如圖?所示,用一個圓形模板遍歷圖像,若模板內(nèi)其他
任意像素的灰度值與模板中心像素(核)的灰度值的差小于一定閾值,就認為該
點與核具有相同(或相近)的灰度值,滿足這樣條件的像素組成的區(qū)域稱為核值
相似區(qū)(Univalue Segment Assimilating Nucleus, USAN)。把圖像中的每個像素與
具有相近灰度值的局部區(qū)域相聯(lián)系是?SUSAN?準則的基。
具體檢測時,是用圓形模板掃描整個圖像,比較模板內(nèi)每一像素與中心像素
的灰度值,并給定閾值來判別該像素是否屬于?USAN?區(qū)域,如下式:
式中,c(r,r0)為模板內(nèi)屬于?USAN?區(qū)域的像素的判別函數(shù),I (r0)是模板中心
像素(核)的灰度值,I (r)為模板內(nèi)其他任意像素的灰度值,t是灰度差門限。它
影響檢測到角點的個數(shù)。t減小,獲得圖像中更多精細的變化,從而給出相對較多
的檢測數(shù)量。門限t必須根據(jù)圖像的對比度和噪聲等因素確定。
則圖像中某一點的?USAN?區(qū)域大小可由下式表示:
sUSAN?區(qū)域包含了圖像局部許多重要的結(jié)構(gòu)信息,它的大小反映了圖像局部
特征的強度,當(dāng)模板完全處于背景或目標中時,USAN?區(qū)域最大(如圖?2.6?中?a),
當(dāng)模板移向目標邊緣時,USAN?區(qū)域逐漸變小(如圖?2.6?中?c,d,e),當(dāng)模板中心
處于角點位置時,USAN?區(qū)域很小(如圖?2.6?中?b)。得到每個像素對應(yīng)的?USAN
區(qū)域大小后,利用下式產(chǎn)生初始角點響應(yīng):
其中,g?為幾何門限,影響檢測到的角點形狀,?g?越小,檢測到的角點越尖銳。
(1) t , g的確定
????門限g決定了輸出角點的USAN區(qū)域的最大值,·即只要圖象中的象素具有比g
小的USAN區(qū)域,該點就被判定為角點。g的大小不但決定了可從圖象中提取角點
的多寡,而且如前所述,它還決定了所檢測到的角點的尖銳程度。所以一旦確定了
所需角點的質(zhì)量(尖銳程度),g就可以取一個固定不變的值。門限t表示所能檢測
角點的最小對比度,也是能忽略的噪聲的最大容限。它主要決定了能夠提取的特征
數(shù)量,t越小,可從對比度越低的圖象中提取特征,而且提取的特征也越多。因此
對于不同對比度和噪聲情況的圖象,應(yīng)取不同的t值。
SUSAN?準則有一個突出的優(yōu)點,就是對局部噪聲不敏感,抗噪能力強。這是
由于它不依賴于前期圖像分割的結(jié)果,并避免了梯度計算,另外,USAN?區(qū)域是
由模板內(nèi)與模板中心像素具有相似灰度值的像素累加而得,這實際上是一個積分
過程,對于高斯噪聲有很好的抑制作用。
SUSAN?二維特征檢測的最后一個階段,就是尋找初始角點響應(yīng)的局部最大值,
也就是非最大抑制處理,以得到最終的角點位置。非最大抑制顧名思義,就是在
局部范圍內(nèi),如果中心像素的初始響應(yīng)是此區(qū)域內(nèi)的最大值,則保留其值,否則
刪除,這樣就可以得到局部區(qū)域的最大值。
?matlab 代碼:
im=imread('xinglong.jpg'); >> image_out = susan(im,0.25);
function image_out = susan(im,threshold) % 功能:實現(xiàn)運用SUNSAN算子進行邊緣檢測 % 輸入:image_in-輸入的待檢測的圖像 % threshold-閾值 % 輸出:image_out-檢測邊緣出的二值圖像% 將輸入的圖像矩陣轉(zhuǎn)換成double型 d = length(size(im)); if d==3image=double(rgb2gray(im)); elseif d==2image=double(im); end% 建立SUSAN模板mask = ([ 0 0 1 1 1 0 0 ;0 1 1 1 1 1 0;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;0 1 1 1 1 1 0;0 0 1 1 1 0 0]); R=zeros(size(image)); % 定義USAN 區(qū)域 nmax = 3*37/4;[a b]=size(image); new=zeros(a+7,b+7); [c d]=size(new); new(4:c-4,4:d-4)=image;for i=4:c-4for j=4:d-4current_image = new(i-3:i+3,j-3:j+3);current_masked_image = mask.*current_image;% 調(diào)用susan_threshold函數(shù)進行閾值比較處理current_thresholded = susan_threshold(current_masked_image,threshold);g=sum(current_thresholded(:));if nmax<gR(i,j) = g-nmax;elseR(i,j) = 0;endend endimage_out=R(4:c-4,4:d-4);
function thresholded = susan_threshold(image,threshold) % 功能:設(shè)定SUSAN算法的閾值[a b]=size(image); intensity_center = image((a+1)/2,(b+1)/2);temp1 = (image-intensity_center)/threshold; temp2 = temp1.^6; thresholded = exp(-1*temp2);
總結(jié)
以上是生活随笔為你收集整理的susan算子的运用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像的七个不变矩 可用于图像的匹配
- 下一篇: LOG算子的运用