簡體   English   中英

在MATLAB中消除圖像中的噪點

[英]Removing Noise From an image in MATLAB

我使用的是幾何均值濾波器,以去除噪聲,而不是中值濾波器,因為前一種情況下圖像質量下降了。 下面顯示的代碼是m文件的一部分,用於消除噪聲。

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);

如果我按上面代碼中名為“ Remove Noise”的按鈕,則無論圖像質量/屬性如何,都將執行。 從某種意義上說,即使沒有噪音存在,圖像也會受到過濾。

我的問題是,有沒有辦法檢測是否存在噪音,所以當我按下按鈕時,如果圖像中沒有噪音,它應該顯示一條信息,提示“沒有噪音要去除”。

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

但是,您可以將結果圖像fname與輸入圖像b進行比較,使得如果它們的差異低於某個閾值,則可以確定去噪操作沒有有效改變圖像,並且原始圖像中沒有太多噪聲圖片如下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM