2010-05-06 100 views
4

我在MATLAB中有三個峯值的嘈雜數據集,並且想要對其進行一些圖像處理。在底部,峯值約爲5-9個像素,以50×50陣列。我如何找到峯值? MATLAB對我來說是非常新的。以下是我迄今爲止...使用MATLAB查找含有大量噪聲的數據的最大值

對於我的原始圖像,讓我們稱之爲array,我試圖

J = fspecial('gaussian',[5 5], 1.5); 
C = imfilter(array, J) 
peaks = imregionalmax(C); 

但仍有沿峯之間的基線,所以我最終得到一些噪音大量的局部最大值只是噪聲值。 (我試圖與濾波器的尺寸打,但沒有幫助。)我也試過

peaks = imextendedmax(C,threshold); 

其中目視判斷的門檻......這作品,但絕對不是做一個好辦法因爲它顯然不那麼健壯。

那麼,如何以穩健的方式找到這些峯?

回答

2

快速建議:

嘗試在MATLAB medfilt2與中值濾波工作,它比高斯濾波器去除噪聲更有效。高斯conovlution過濾器更好的噪音和更好地保留圖像。

然後,在提取峯值後,它們仍未分類,應對每個峯進行分類並確定它是噪聲還是預期峯值。我建議你看一下binary image類的功能。特別看看bwconncomp