數字圖像去噪典型算法及matlab實現

圖像去噪是數字圖像處理中的重要環節和步驟。去噪效果的好壞直接影響到后續的圖像處理工作如圖像分割、邊緣檢測等。圖像信號在產生、傳輸過程中都可能會受到噪聲的污染,一般數字圖像系統中的常見噪聲主要有:高斯噪聲(主要由阻性元器件內部產生)、椒鹽噪聲(主要是圖像切割引起的黑圖像上的白點噪聲或光電轉換過程中產生的泊松噪聲)等;
目前比較經典的圖像去噪算法主要有以下三種:
均值濾波算法:也稱線性濾波,主要思想為鄰域平均法,即用幾個像素灰度的平均值來代替每個像素的灰度。有效抑制加性噪聲,但容易引起圖像模糊,可以對其進行改進,主要避開對景物邊緣的平滑處理。
中值濾波:基于排序統計理論的一種能有效抑制噪聲的非線性平滑濾波信號處理技術。中值濾波的特點即是首先確定一個以某個像素為中心點的鄰域,一般為方形鄰域,也可以為圓形、十字形等等,然后將鄰域中各像素的灰度值排序,取其中間值作為中心像素灰度的新值,這里領域被稱為窗口,當窗口移動時,利用中值濾波可以對圖像進行平滑處理。其算法簡單,時間復雜度低,但其對點、線和尖頂多的圖像不宜采用中值濾波。很容易自適應化。
Wiener維納濾波:使原始圖像和其恢復圖像之間的均方誤差最小的復原方法,是一種自適應濾波器,根據局部方差來調整濾波器效果。對于去除高斯噪聲效果明顯。

實驗一:均值濾波對高斯噪聲的效果

復制代碼
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%讀取圖像

J
=imnoise(I,'gaussian',0,0.005);%加入均值為0,方差為0.005的高斯噪聲

subplot(
2,3,1);imshow(I);

title(
'原始圖像');

subplot(
2,3,2); imshow(J);

title(
'加入高斯噪聲之后的圖像');

%采用MATLAB中的函數filter2對受噪聲干擾的圖像進行均值濾波

K1
=filter2(fspecial('average',3),J)/255; %模板尺寸為3

K2
=filter2(fspecial('average',5),J)/255;% 模板尺寸為5

K3
=filter2(fspecial('average',7),J)/255; %模板尺寸為7

K4
= filter2(fspecial('average',9),J)/255; %模板尺寸為9

subplot(
2,3,3);imshow(K1);

title(
'改進后的圖像1');

subplot(
2,3,4); imshow(K2);

title(
'改進后的圖像2');

subplot(
2,3,5);imshow(K3);

title(
'改進后的圖像3');

subplot(
2,3,6);imshow(K4);

title(
'改進后的圖像4');
復制代碼
PSfilter2用法
fspecial函數用于創建預定義的濾波算子,其語法格式為:
h = fspecial(type)
h = fspecial(type,parameters)
參數type制定算子類型,parameters指定相應的參數,具體格式為:
type='average',為均值濾波,參數為n,代表模版尺寸,用向量表示,默認值為[3,3]
type= 'gaussian',為高斯低通濾波器,參數有兩個,n表示模版尺寸,默認值為[3,3]sigma表示濾波器的標準差,單位為像素,默認值為
0.5
type= 'laplacian',為拉普拉斯算子,參數為alpha,用于控制拉普拉斯算子的形狀,取值范圍為[0,1],默認值為0.2
type= 'log',為拉普拉斯高斯算子,參數有兩個,n表示模版尺寸,默認值為[3,3]sigma為濾波器的標準差,單位為像素,默認值為0.5
type= 'prewitt'
,為prewitt算子,用于邊緣增強,無參數。

type= 'sobel',為著名的sobel算子,用于邊緣提取,無參數。
type= 'unsharp',為對比度增強濾波器,參數alpha用于控制濾波器的形狀,范圍為[0,1],默認值為0.2
運行效果見圖1

據我目測,使用均值濾波去噪(高斯噪聲)效果選用的鄰域半徑越大效果越好,當然其代價也會更大,另外確切的去噪效果的好壞還需要用SNR等數據來度量。
實驗二:二維自適應維納濾波對高斯噪聲的濾除效果
復制代碼
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif'); %讀取圖像

J
=imnoise(I,'gaussian',0,0.005); %加入均值為0,方差為0.005的高斯噪聲

K2
=wiener2(J,[3 3]); %對加噪圖像進行二維自適應維納濾波

K2
=wiener2(J,[5 5]); %對加噪圖像進行二維自適應維納濾波

K2
=wiener2(J,[7 7]); %對加噪圖像進行二維自適應維納濾波

K2
=wiener2(J,[9 9]); %對加噪圖像進行二維自適應維納濾波

subplot(
2,3,1);imshow(I);

title(
'原始圖像');

subplot(
2,3,2);imshow(J);

title(
'加噪圖像');

subplot(
2,3,3);imshow(K1);

title(
'恢復圖像1');

subplot(
2,3,4);imshow(K2);

title(
'恢復圖像2');

subplot(
2,3,5);imshow(K3);

title(
'恢復圖像3');

subplot(
2,3,6);imshow(K4);

title(
'恢復圖像3');
復制代碼
PS維納濾波的兩個函數wiener2deconvwnr都能夠完成維納濾波的功能,?deconvwnr強調圖象復原方面,wiener2強調圖象空間域銳化的作用,其中J=wiener2(I,[m,n])返回有噪聲圖像I經過wierner(維納)濾波后的圖像,[m,n]指定濾波器窗口大小為m*n,默認值為3*3J=wiener2(I,[m,n],noise)指定噪聲的功率,[J,noise]=wiener2(I,[m,n])在圖像濾波的同時,返回噪聲功率的估計值noise
imnoise的語法格式為
J = imnoise(I,type)
J = imnoise(I,type,parameters)
其中J = imnoise(I,type)返回對原始圖像I添加典型噪聲的有噪圖像J
參數typeparameters用于確定噪聲的類型和相應的參數。
下面的命令是對圖像1.gif分別加入高斯噪聲、椒鹽噪聲和乘性噪聲,其結果如圖所示
實驗三:對加入椒鹽噪聲的圖像分別作均值、中值和維納濾波

******************************************************************************************************************************************

紅:數字圖像處理視頻教程(兩部)

{中科院版36講視頻教程 + 電子科大版70講視頻教程(岡薩雷斯 第二版)}
? ? 橙:halcon軟件、halcon軟件手把手教破解視頻教程
? ? 黃:數字圖像模式識別demo(C++編寫,在公司也是用C++哦)
? ? 綠:halcon軟件視頻教程、halcon軟件在vs2010中配置
? ? 青:面向對象C++視頻教程
? ? 藍:MFC C++視頻教程
? ? 紫:海量相關文檔資料
? ? http://item.taobao.com/item.htm?spm=a1z10.3.w4002-9510581636.11.VUYzOY&id=43025290175

******************************************************************************************************************************************


復制代碼
I=imread(1.gif');
J1=imnoise(I,'gaussian',0,0.02);
J2
=imnoise(I,'salt & pepper',0.02);
J3
=imnoise(I,'speckle',0.02);

運行效果見圖2

I
=imread('C:\Documents and Settings\Administrator\桌面\1.gif');

J
=imnoise(I,'salt & pepper',0.02);

%h=ones(3,3)/9;%產生3*3的全1數組

%B=conv2(J,h);%卷積運算

K2
=filter2(fspecial('average',3),J)/255; %均值濾波模板尺寸為3

K
= medfilt2(J);%采用二維中值濾波函數medfilt2對受椒鹽噪聲干擾的圖像濾波

K1
=wiener2(J,[3 3]); %對加噪圖像進行二維自適應維納濾波

subplot(
2,3,1);imshow(I);

title(
'原始圖像');

subplot(
2,3,2);imshow(J);

title(
'加噪圖像');

subplot(
2,3,3);imshow(K2);

title(
'均值濾波后的圖像');

subplot(
2,3,4);imshow(K);

title(
'中值濾波后的圖像');

subplot(
2,3,5);imshow(K1);

title(
'維納濾波后的圖像');
復制代碼
PSMATLAB中提供了卷積運算的函數命令conv2,其語法格式為:
  C = conv2(A,B)
C = conv2(A,B)
返回矩陣AB的二維卷積C。若Ama×na的矩陣,Bmb×nb的矩陣,則C的大小為(ma+mb+1)×(na+nb+1)
MATLAB圖像處理工具箱提供了基于卷積的圖象濾波函數filter2filter2的語法格式為:
Y = filter2(h,X)
其中Y = filter2(h,X)返回圖像X經算子h濾波后的結果,默認返回圖像Y與輸入圖像X大小相同。例如:
其實filter2conv2是等價的。MATLAB在計算filter2時先將卷積核旋轉180度,再調用conv2函數進行計算。
Fspecial函數用于創建預定義的濾波算子,其語法格式為:
h = fspecial(type)
h = fspecial(type,parameters)
參數type制定算子類型,parameters指定相應的參數,具體格式為前文已有敘述。
ones產生全1數組,zeros產生全零數組。
ones(a,b)產生ab列全1數組
ones(a)產生aa列全1叔祖
運行效果見圖3

通過圖3我們也可得出結論,即中值濾波對于去除椒鹽噪聲效果最好,而維納濾波去除效果則較差。中值濾波對于去除椒鹽噪聲效果明顯,是因為椒鹽噪聲只在畫面上的部分點隨機出現,而中值濾波根據數據排序,將未被污染的點代替噪聲點的值的概率較大,所以抑制效果好。對點、線和尖頂較多的圖像不宜采用中值濾波,因為一些細節點可能被當成噪聲點。
實驗四:?分別使用二維統計濾波對椒鹽噪聲和高斯噪聲進行濾波
復制代碼
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');

J1
=imnoise(I,'salt & pepper',0.004);

subplot(
2,3,1);imshow(I);

title(
'原始圖像');

subplot(
2,3,2);imshow(J1);

title(
'加椒鹽噪聲后的圖像');

J
= ordfilt2(J1,5,ones(3,4));% 進行二維統計順序過濾

subplot(
2,3,3);imshow(J);

title(
'椒鹽噪聲濾波后的圖像');

J2
=imnoise(I,'gaussian',0,0.004);

subplot(
2,3,4);imshow(J2);

title(
'加高斯噪聲后的圖像');

J3
= ordfilt2(J2,5,ones(3,4));

subplot(
2,3,5);imshow(J3);

title(
'高斯噪聲濾波后的圖像');
復制代碼
PS:
效果見圖4

PSMATLAB小波分析工具箱提供的用于圖像去噪的函數有wrcoef2wpdencmp,其語法格式分別為:
X=wrcoef2(‘type’,C,S,’wname’)
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)
其中,X=wrcoef2(‘type’,C,S,’wname’)返回基于小波分解結構[C,S]的小波重構圖像X。參數“type”等于a表示重構近似系數;等于h表示重構水平細節系數;等于v表示重構垂直細節系數,等于d表示重構對角細節系數。
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)是通過小波包定限(閾值化),返回輸入信號或圖像X的除噪結果xd。輸入參數中,[treed,datad]為xd的最佳小波包分解結構;perfl2perf0表示L^2復原和壓縮百分數;perf12=100*(xd的小波包系數向量范數/X的小波包系數向量范數)?^2Keepapp=1表示近似系數不能閾值化,否則可以閾值化;sorh=’s’為軟閾值化,h為硬閾值化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pat1100. Mars Numbers (20)

1100. Mars Numbers (20) 時間限制400 ms內存限制65536 kB代碼長度限制16000 B判題程序Standard 作者CHEN, YuePeople on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars.The numbers 1 to 12 on Earch is called "jan, feb, …

【USACO1.1】Broken Necklace

題意 一個環形項鏈,有rbw三種珠子,r代表red,b代表blue,w代表white,從任意一個位置斷開,兩端分別取珠子,同一端取的珠子要相同顏色,w可以染成想要的顏色,即既可當作r也可以…

html+注釋格式化,使用xml注釋來生成格式化的html輸出

我試圖從我在xml文件中的注釋中生成一個格式良好的html文檔。目前我有一個xml文件,用于生成xml表格的html列表。為了讓我添加有關表格的評論,我手動將注釋添加到輸出html文件中。使用xml注釋來生成格式化的html輸出我想如果可能將html代碼放在xml文件中作…

圖像增強-圖像銳化

圖像銳化主要影響圖像中的低頻分量,不影響圖像中的高頻分量。 圖像銳化的主要目的有兩個: 1.增強圖像邊緣,使模糊的圖像變得更加清晰,顏色變得鮮明突出,圖像的質量有所改善,產生更適合人眼觀察和識別的圖像…

[譯]git revert

git revert git revert用來撤銷一個已經提交了的快照. 但不是從項目歷史中移除這個commit, 而是生成一個新的commit, 老的commit還是保留在歷史項目里面的. 這樣做的好處是防止了項目丟失歷史. 用法 git revert <commit>生成一個新的commit, 撤銷老的<commit>的所有…

圖像二值化算法總結

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#xff…

html 替換反斜杠,在URL直接替換反斜杠反斜杠

我們有一個系統&#xff0c;基于Moodle的平臺&#xff0c;在這里的文件是這樣引用&#xff1a;在URL直接替換反斜杠反斜杠的http&#xff1a;// [服務器] /file.php/3/LR4/info/ index.html的現在&#xff0c;這個偉大的工程&#xff0c;但是我們的一些老師錯誤地使用落后的斜杠…

VMware橋接模式無法連網

2019獨角獸企業重金招聘Python工程師標準>>> #VMware橋接模式無法連網 在VMware上裝了個CentOS7&#xff0c;使用橋接模式連網&#xff0c;開始使用的時候沒有問題&#xff0c;可以正常上網。最近打開的時候發現上不了網了&#xff0c; 使用ifconfig查看也沒有分配到…

Java 7 中 NIO.2 的使用——第四節 文件和目錄

Files類提供了很多方法用于檢查在于你真正實際去操作一個文件或目錄。這些方法強烈推薦&#xff0c;也非常有用&#xff0c;也能避免很多異常的發生。例如&#xff0c;一個很好的習慣就是在你試著移動一個文件從一個地方到另一個地方的時候&#xff0c;先檢查文件是否存在。 檢…

計算機二級access知識點6,2019年計算機二級ACCESS考試知識點:關系數據模型

【導語】2019年計算機二級考試備考正在進行中&#xff0c;為了方便考生及時有效的備考&#xff0c;那么&#xff0c;無憂考網為您精心整理了2019年計算機二級ACCESS考試知識點&#xff1a;關系數據模型&#xff0c;歡迎大家的關注。如想獲取更多計算機二級考試的備考資料&#…

乘方取模計算(模冪計算)

乘方取模計算也稱為模冪計算&#xff0c;在密碼系統中經常使用&#xff0c;是不可缺少的。 使用本程序可以解HDU2035&#xff0c;只需要考慮輸入和輸出。 /** 乘方取模** 已知給定的正整數a、n和m&#xff0c;計算x的值&#xff0c;a^n x (mod m)。** 二分法用在這里也很有效果…

Moldflow中文版注塑流動分析案例導航視頻教程

http://item.taobao.com/item.htm?spma1z10.5.w4002-9510581626.18.30lDTO&id43054534418 QQ&#xff1a;2911984429 http://aidem.lingw.net/

Jaxb annotation使用

JAXB&#xff08;Java Architecture for XML Binding) 是一個業界的標準&#xff0c;是一項可以根據XML Schema產生Java類的技術。該過程中&#xff0c;JAXB也提供了將XML實例文檔反向生成Java對象樹的方法&#xff0c;并能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來…

湖北大學計算機袁云,暑期走訪不停歇 遠赴異地送關懷——學校慰問離退休教職工和校友...

不畏酷暑送清風&#xff0c;心常為老懷關愛。7月至8月&#xff0c;正值高溫時節&#xff0c;校領導和各單位負責人根據學校黨委的安排&#xff0c;赴深圳、廣州、北京、上海等地走訪慰問70歲以上離退休教職工和部分校友&#xff0c;把學校的問候和祝福送到他們身邊。“對老同志…

MATLAB各類函數詳細講解 simulike系統仿真分析

http://item.taobao.com/item.htm?spma230r.1.14.40.yWjJFw&id43113292964&ns1&abbucket2&_uk10ekfuf6120#detail Matlab基本操作函數 SIMULINK仿真函數 插值與擬合函數視頻教程 符號運算函數視頻教程 概率統計函數視頻教程 級數與微積分函數視頻教程 矩陣運…

Github Coding Developer Book For LiuGuiLinAndroid

Github Coding Developer Book For LiuGuiLinAndroid 收集了這么多開源的PDF&#xff0c;也許會幫到一些人&#xff0c;現在里面的書籍還不是很多&#xff0c;我也在一點點的上傳&#xff0c;才上傳不到一半&#xff0c;沒辦法&#xff0c;庫存太多了 覺得全部pull麻煩的話&…

#個人博客作業week2——結對編程伙伴代碼復審

General 1.程序能夠順利地運行。程序通過命令行輸入&#xff0c;能夠向對應的文件中輸出符合要求的題目和答案。程序能夠根據用戶的不同選擇&#xff0c;進行題目的生產或答案的校驗&#xff0c;生成出的題目符合參數要求和項目的查重等各種要求&#xff0c;答案校驗準確迅速。…

Linux設備驅動程序(第三版)/深入理解計算機系統(原書第2版)/[Android系統原理及開發要點詳解].(韓超,梁泉)百度云盤下載

文檔下載云盤連接&#xff1a;http://pan.baidu.com/s/1dDD2sgT 更多其他資料&#xff0c;請關注淘寶&#xff1a;http://shop115376623.taobao.com/ http://item.taobao.com/item.htm?spma230r.1.14.3.ArS64K&id43025290175&ns1&abbucket2&_uk10ekfuf6187#d…

個人用戶上網需要有計算機電話線,個人用戶上網需要有計算機、電話線、用戶賬號和口令,以及______。...

_條形碼按照使用目的可分為()、()和()。簡述市場定位的步驟。植物、真菌、藻類和原核細胞的細胞外基質是用糞便隱血試驗鑒別消化道良性與惡性腫瘤所致的出血&#xff0c;有價值的是從長期來看,在紙幣制度下或紙幣本位下,( )是決定匯率的基礎。最常引起肺心病的疾病是從長期來看…

Xcode 5.1 編譯模擬器以及真機都能使用的靜態庫

Xcode 5.1.dmg 下載地址 http://pan.baidu.com/s/1jGJpKm6 1.新建 Framework & Library 工程 我起名叫ShowInfo,下面為其源碼 showInfo.h #import <Foundation/Foundation.h> interface ShowInfo : NSObject (void)showInfo; end showInfo.m #import "ShowI…