溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

matlab圖像濾波實(shí)例分析

發(fā)布時間:2023-02-25 10:29:40 來源:億速云 閱讀:111 作者:iii 欄目:開發(fā)技術(shù)

這篇“matlab圖像濾波實(shí)例分析”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“matlab圖像濾波實(shí)例分析”文章吧。

    matlab圖像濾波詳解(二維傅里葉濾波)

    在matlab中,圖像濾波有很多中

    • 比如平滑濾波(smooth()函數(shù))

    • 中值濾波medfilt2()函數(shù))

    這些相對簡單,可以直接參考函數(shù)解釋,不做詳細(xì)解說

    這里重點(diǎn)講解一下傅里葉濾波,在matlab中,常用的為快速傅里葉變換。進(jìn)行濾波的難點(diǎn)就在于如何將圖像轉(zhuǎn)換到頻率域以及如何將頻率域的圖像逆變換為空間域中的圖像

    第一步:讀取圖像并對圖像進(jìn)行傅里葉變換

    Path='images.jpg';
    im=imread(Path);
    img=rgb2gray(im);%將彩色圖變成二維灰度圖圖像
    img2=double(img);%將數(shù)據(jù)改成double類型,方便進(jìn)行數(shù)據(jù)變換
    subplot(131)
    imshow(img);
    title('原始圖像')
    f=fft2(img2);

    此時,f為圖像的二維頻譜,但是此時的零頻分量并不在中間,如果直接進(jìn)行顯示的話,會出現(xiàn)如下結(jié)果(見左圖),matlab提供ffishift()函數(shù),可以將圖像零頻分量移到中間

    代碼見下:

    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))會很大,圖像不好看

    第二步:濾波

    濾波分為低通、高通、帶通、帶阻、高斯低通、高低高通濾波,其本質(zhì)就是令頻譜F乘以濾波器H,針對不同的濾波器,H不同

    低通濾波器【D(u,v)表示點(diǎn)(u,v)到中心的距離】

    matlab圖像濾波實(shí)例分析

    在此我們以高斯低通濾波器為例,利用matlab設(shè)計(jì)濾波器(設(shè)D0為10)

    D0=10;
    [M,N]=size(f2);
    m=floor(M/2);
    n=floor(N/2);%(n,m)為中心點(diǎn)
    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('濾波后的頻譜')

    第三步:傅里葉逆變換

    進(jìn)行逆變換時,要先將頻譜移動回原位置,即通過ifftshift( )函數(shù)實(shí)現(xiàn),代碼如下

    img3 = (ifft2(ifftshift(f3)));
    img4 = uint8(real(img3));%real函數(shù)表示留下復(fù)數(shù)的實(shí)部
    figure
    subplot(121)
    imshow(img);
    title('原圖');
    subplot(122)
    imshow(img4);
    title('逆變換');

    這里要注意的是逆變換后的img3為復(fù)數(shù),要刪除虛數(shù)部分,并轉(zhuǎn)換成uint8圖像格式數(shù)據(jù)才能用imshow顯示

    以上就是關(guān)于“matlab圖像濾波實(shí)例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI