Matlab圖像處理——中值濾波medfilt2問題解決


本文鏈接:https://blog.csdn.net/Pxzly1117/article/details/79201772
程序:

I=imread('13.jpg');%讀入圖像
imshow(I);
h=imnoise(I,'salt & pepper');%為I圖片疊加椒鹽噪聲噪聲
figure;imshow(h);
w=[1 2 1;2 4 2;1 2 1]/16;%高斯模板
I5=imfilter(h,w,'corr','replicate');%高斯平滑
figure;imshow(I5);
w=[1 1 1;1 1 1;1 1 1]/9;%平均模板
I7=imfilter(h,w,'corr','replicate');%平均平滑
figure;imshow(I7);
I9=medfilt2(h,[3,3]);%中值濾波
figure;imshow(I9);

出現錯誤:

 

問題:

中值濾波medfilt2,用法是B = medfilt2(A, [m n]),輸入圖像A應是二維矩陣,程序中輸入圖像h是由imread得到的I加上噪聲得到的,而imread讀到的圖像I通常是3維RGB圖,是三維矩陣,因此才出現問題,顯示A應該為二維的。

解決方法:

先用rgb2gray(I)將h先將I圖像轉換為灰度矩陣圖像,再用medfilt2。
程序后段改為:
j=rgb2gray(I);
I9=medfilt2(j,[3,3]);
figure;imshow(I9);

 

 

附:中值濾波定義

medfilt2需要輸入兩個參數,第一個是圖像A,第二個參數需要輸入一個長度是二的向量,[m n],指定模版的大小,m行n列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM