您好,登錄后才能下訂單哦!
這篇“matlab圖像濾波實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“matlab圖像濾波實例分析”文章吧。
在matlab中,圖像濾波有很多中
比如平滑濾波(smooth()函數)
中值濾波medfilt2()函數)
這些相對簡單,可以直接參考函數解釋,不做詳細解說
這里重點講解一下傅里葉濾波,在matlab中,常用的為快速傅里葉變換。進行濾波的難點就在于如何將圖像轉換到頻率域以及如何將頻率域的圖像逆變換為空間域中的圖像
Path='images.jpg'; im=imread(Path); img=rgb2gray(im);%將彩色圖變成二維灰度圖圖像 img2=double(img);%將數據改成double類型,方便進行數據變換 subplot(131) imshow(img); title('原始圖像') f=fft2(img2);
此時,f為圖像的二維頻譜,但是此時的零頻分量并不在中間,如果直接進行顯示的話,會出現如下結果(見左圖),matlab提供ffishift()函數,可以將圖像零頻分量移到中間
代碼見下:
subplot(121) imshow(log(abs(f)+1),[]);%直接顯示圖像,未移動零頻分量 title('未移動零頻分量頻譜圖') subplot(122) f2=fftshift(f); imshow(log(abs(f2)+1),[]);%直接顯示圖像,未移動零頻分量 title('移動零頻分量頻譜圖')
這里有人肯定會疑問 log(abs(f)+1)中為什么要+1,不加也行,就是為了畫圖的時候,讓f為零 log(abs(f)+1),不加1的話 log(abs(f))會很大,圖像不好看
濾波分為低通、高通、帶通、帶阻、高斯低通、高低高通濾波,其本質就是令頻譜F乘以濾波器H,針對不同的濾波器,H不同
低通濾波器【D(u,v)表示點(u,v)到中心的距離】
在此我們以高斯低通濾波器為例,利用matlab設計濾波器(設D0為10)
D0=10; [M,N]=size(f2); m=floor(M/2); n=floor(N/2);%(n,m)為中心點 for i=1:M for j=1:N D=sqrt((i-m)^2+(j-n)^2); H(i,j)=exp(-1/2*D^2/D0^2); end end figure subplot(121) imshow(H); title('高斯低通濾波器')
濾波器與頻譜相乘,即得到濾波后的頻譜
subplot(122) f3=f2.*H; imshow(log(abs(f3)+1),[]) title('濾波后的頻譜')
進行逆變換時,要先將頻譜移動回原位置,即通過ifftshift( )函數實現,代碼如下
img3 = (ifft2(ifftshift(f3))); img4 = uint8(real(img3));%real函數表示留下復數的實部 figure subplot(121) imshow(img); title('原圖'); subplot(122) imshow(img4); title('逆變換');
這里要注意的是逆變換后的img3為復數,要刪除虛數部分,并轉換成uint8圖像格式數據才能用imshow顯示
以上就是關于“matlab圖像濾波實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。