2013-08-01 131 views
1

由於在前一種情況下圖像質量下降,我正在使用幾何平均濾波器去除噪聲而不是中值濾波器。下面顯示的代碼是移除噪聲的m文件的一部分。從MATLAB中的圖像中去除噪聲

fname = getappdata(0, 'fname'); 
[a, map] = imread(fname); 
x = ind2rgb(a, map); 
b = im2double(x); 
w=fspecial('gaussian',[3,3]); 
geom=exp(imfilter(log(b),ones(3,3),'replicate')).^(1/3/3); 
fname=imfilter(b,w,'replicate'); 
axes(handles.axes1); 
imshow(fname); 

如果我按被命名爲「刪除噪聲」上面的代碼獲得不管圖象質量/屬性的執行按鈕。從這個意義上說,即使沒有噪聲存在,圖像也會經過濾波。

我的問題,有沒有什麼辦法來檢測噪聲是否存在,以便當按下按鈕時,如果圖像中沒有噪聲,它應該顯示一條消息,說明「NO NOISE TO REMOVE」自動。

回答

1

沒有直接的方法來確定圖像是否有噪音。

但是,你可以比較產生與輸入圖像b圖像0​​以這樣的方式,如果它們的差值超過一定的閾值,那麼就可以決定,降噪操作還沒有有效地改變形象,沒有太多噪音在原始圖像,如:

threshold_ratio = 0.2; % to be decided experimentally 

difference_ratio = sum(sum((fname - b).^2))/sum(sum(b.^2)); 

if difference_ratio < threshold_ratio 

    disp('NO NOISE TO REMOVE'); 

end