日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)1

發布時間:2024/1/1 循环神经网络 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/cjsh_123456/article/details/79342300

一、簡介

我們知道,在一幅圖像中,其低頻成分對應者圖像變化緩慢的部分,對應著圖像大致的相貌和輪廓。而其高頻成分則對應著圖像變化劇烈的部分,對應著圖像的細節(圖像的噪聲也屬于高頻成分)。

低頻濾波器,顧名思義,就是過濾掉或者大幅度衰減圖像的高頻成分,讓圖像的低頻成分通過。低頻濾波器可以平滑圖像,慮去圖像的噪聲。而與此相反的高頻濾波器,則是過濾低頻成分,通過高頻成分,可以達到銳化圖像的目的。

理想低通濾波器的濾波非常尖銳,而高斯低通濾波器的濾波則非常平滑。Butterworth低通濾波器則介于兩者之間,當Butterworth低通濾波器的階數較高時,接近于理想低通濾波器,階數較低時,則接近于高斯低通濾波器。

下面我們所說的都是對應于二維圖像處理的情況。


二、這三種濾波器的相關介紹

在這三種低通濾波器的表達式中,我們都用D0來表示其截止頻率。D(u, v)表示距離頻率矩形中心的距離。


我并沒有說明振鈴現象產生的原因,只是說明了什么情況下振鈴現象較為明顯。


1. 理想低通濾波器(ILPF)

理想低通濾波器在以原點為圓心、D0為半徑的園內,通過所有的頻率,而在圓外截斷所有的頻率。(圓心的頻率最低,為變換的直流(dc)分量)。函數如下:



可以看出,理想低通濾波器的過渡非常急劇,會產生振鈴現象。


2. Butterworth低通濾波器

函數表達式如下(在有些書中,Butterworth的函數的平方才等于右邊的表達式,在這里我們按照課本的寫法,計算較為方便),其中n稱為Butterworth低通濾波器的階數:



從濾波器的函數圖中,我們可以看出其過渡沒有理想低通濾波器那么劇烈,從圖(c)中可以看出,階數越高,濾波器的過度越劇烈,振鈴現象將越明顯。


3. 高斯低通濾波器(GLPF)

函數表達式如下:



高斯濾波器的過度特性非常平坦,因此不會產生振鈴現象。


三、頻域濾波步驟

1. 基本步驟

1. 給定一幅大小為m*n的圖像f(x,y)。選擇適當的填充參數P和Q,一般令P = 2m,Q = 2n。

2. 對圖像f(x, y)填充0,填充后得到圖像大小為P*Q的圖像fp(x, y)。

3. 用(-1)^(x+y)乘以fp(x,y)將其移到變換中心(中心化)。

4. 計算fp(x, y)的DFT,得到F(u,v)。?

5. 生成一個實的,對稱的濾波函數H(u, v),大小為P*Q,中心在(P/2, Q/2)處。然后相乘(矩陣點乘)得到G(u,v) = H(u,v)F(u,v)。

6. 對G(u, v)反傅里葉變換,然后取實部,再乘以(-1)^(x+y)進行反中心變換最后得到gp(x,y)。

7. 提取gp(x,y)左上角的m*n區域,對提取的部分進行標準化處理,得到最終的結果圖像g(x,y)。


2. 相關步驟說明

1. 對圖像進行0填充,得到大小為P*Q的圖像,主要是為了避免在循環卷積中出現的纏繞錯誤。當兩個矩陣大小相同時,P≥2m-1,Q≥2n-1時可以避免環繞錯誤。由于對于偶數尺寸的矩陣計算其傅里葉變換較快,因此P取2m,Q取2n。

2. 圖像乘以(-1)^(x+y),再對圖像進行傅里葉變換可以得到將原點移到中心的傅里葉變換。這樣,對于F(u,v)來說,中心的頻率最低,四周的頻率較高。每一點的值表示該頻率對于的幅度。在matlab中,也可以不乘以(-1)^(x+y),直接對填充后的圖像進行傅里葉變換,之后使用fftshift函數對其傅里葉變換進行中心化。得到的結果是一樣的。

3. 由于圖像是一個實函數,所以其傅里葉變換是一個旋轉對稱的傅里葉變換。

4. 關于對稱中心。課本中指出,對于一個長度為M的一維序列,當M為偶數時,位置0和M/2呈現零的特性,當M為奇數時,只有位置0呈現零的特性。因此,在matlab中,由于矩陣下標是從1開始的,我們的P = 2m,Q = 2n。因此中心點的位置為(P/2+1, Q/2+1),即(m+1, n+1)。

5. 標準化處理。對最終得到的圖像每一點的值進行處理。使其范圍變為[0, 255]的uint8。或者[0, 1.0]的double值。


四、matlab代碼實現Butterworth低通濾波器

在使用matlab代碼的實現過程中,對于這三種低通濾波器,只是在實驗低通濾波器函數H(u,v)的代碼中有部分不同,其他部分一致。因此,在下面中,只給出實現Butterworth低通濾波器的代碼,不給出其他兩種濾波器的代碼。


1.? Butterworth濾波器的代碼如下:

該函數為Bfilter,輸入為需要進行Butterworth濾波的灰度圖像,Butterworth濾波器的截止頻率D0以及Butterworth濾波器的階數n。輸出為進行濾波之后的圖像(圖像的值已經歸一化到[[0, 255])。

  • function [image_out] = Bfilter(image_in, D0, N)
  • % Butterworth濾波器,在頻率域進行濾波
  • % 輸入為需要進行濾波的灰度圖像,Butterworth濾波器的截止頻率D0,階數N
  • % 輸出為濾波之后的灰度圖像
  • [m, n] = size(image_in);
  • P = 2 * m;
  • Q = 2 * n;
  • fp = zeros(P, Q);
  • %對圖像填充0,并且乘以(-1)^(x+y) 以移到變換中心
  • for i = 1 : m
  • for j = 1 : n
  • fp(i, j) = double(image_in(i, j)) * (-1)^(i+j);
  • end
  • end
  • % 對填充后的圖像進行傅里葉變換
  • F1 = fft2(fp);
  • % 生成Butterworth濾波函數,中心在(m+1,n+1)
  • Bw = zeros(P, Q);
  • a = D0^(2 * N);
  • for u = 1 : P
  • for v = 1 : Q
  • temp = (u-(m+1.0))^2 + (v-(n+1.0))^2;
  • Bw(u, v) = 1 / (1 + (temp^N) / a);
  • end
  • end
  • %進行濾波
  • G = F1 .* Bw;
  • % 反傅里葉變換
  • gp = ifft2(G);
  • % 處理得到的圖像
  • image_out = zeros(m, n, 'uint8');
  • gp = real(gp);
  • g = zeros(m, n);
  • for i = 1 : m
  • for j = 1 : n
  • g(i, j) = gp(i, j) * (-1)^(i+j);
  • end
  • end
  • mmax = max(g(:));
  • mmin = min(g(:));
  • range = mmax-mmin;
  • for i = 1 : m
  • for j = 1 : n
  • image_out(i,j) = uint8(255 * (g(i, j)-mmin) / range);
  • end
  • end
  • end
  • 2. 測試代碼如下

    測試時Butterworth濾波器的階數為2。截止頻率分別為10,30,60,160,460。

  • clear all;
  • close all;
  • clc;
  • image1 = imread('3.bmp');
  • image2 = Bfilter(image1, 10, 2);
  • image3 = Bfilter(image1, 30, 2);
  • image4 = Bfilter(image1, 60, 2);
  • image5 = Bfilter(image1, 160, 2);
  • image6 = Bfilter(image1, 460, 2);
  • % 顯示圖像
  • subplot(2,3,1), imshow(image1), title('原圖像');
  • subplot(2,3,2), imshow(image2), title('D0 = 10, n = 2');
  • subplot(2,3,3), imshow(image3), title('D0 = 30, n = 2');
  • subplot(2,3,4), imshow(image4), title('D0 = 60, n = 2');
  • subplot(2,3,5), imshow(image5), title('D0 = 160, n = 2');
  • subplot(2,3,6), imshow(image6), title('D0 = 460, n = 2');

  • 3. 運行結果如下,可以看出,與課本給出的結果一致。




    總結

    以上是生活随笔為你收集整理的理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。