色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

圖像高斯濾波的原理及FPGA實現思路

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2024-12-07 09:12 ? 次閱讀

1.概念

高斯分布

圖像濾波之高斯濾波介紹

圖像處理算法|高斯濾波

高斯濾波(Gaussian filter)包含很多種,包括低通、高通、帶通等,在圖像上說的高斯濾波通常是指的高斯模糊(Gaussian Blur),是一種高斯低通濾波。通常這個算法也可以用來模糊圖像,提供模糊濾鏡。也可以用來過濾自然界的高斯白噪聲。

高斯分布(正態分布)是一個常見的連續概率分布,正態分布的數學期望值或期望值μ muμ等于位置參數,決定了分布的位置,其方差σ 2 sigma^2σ2的開平方或者標準差σ sigmaσ等于尺度參數,決定了分布的幅度。正態分布的概率密度函數曲線呈鐘形,所以又被稱為鐘形曲線。我們常說的標準正態分布是位置參數μ = 0 , 方差 σ 2 = 1 mu=0,方差sigma^2=1μ=0,方差σ2=1的正態分布。
??若隨機變量X XX服從一個位置參數為μ 、方差為 σ 2 mu、方差為sigma^2μ、方差為σ2的正態分布,可以記為X N ( μ , σ 2 ) X~N(mu,sigma^2)XN(μ,σ2),其概率密度函數為:
g ( x ) = 1 2 π σ e ( ? ( x ? μ ) 2 2 σ 2 ) (1) g(x)=frac{1} {sqrt{2pi} sigma }e^{(-frac{{(x-mu)}^{2} }{2sigma^{2}})} ag{1}g(x)=2πσ1e(?2σ2(x?μ)2)(1)
??高斯濾波器是一種根據高斯函數的形狀來選擇權值的線性平滑濾波器,對于抑制服從正態分布的噪聲非常有效,一維零均值高斯函數為:
g ( x ) = 1 2 π σ e ? x 2 2 σ 2 (2) g(x)=frac{1} {sqrt{2pi} sigma }e^{-frac{x^{2} }{2sigma^{2}}} ag{2}g(x)=2πσ1e?2σ2x2(2).
??其中,高斯分布參數(σ sigmaσ)決定了高斯函數的寬度,一維高斯函數的圖形如下圖:

bd43b4b2-b2bc-11ef-93f3-92fbcf53809c.png


??二維高斯高斯分布的函數為:
g ( x , y ) = 1 2 π σ 2 e ? x 2 + y 2 2 σ 2 (3) g(x,y)=frac{1}{2pisigma^2}e^{frac{-x^2+y^2}{2sigma^2}} ag{3}g(x,y)=2πσ21e2σ2?x2+y2(3)
??二維高斯分布的圖像為:

bd64dfde-b2bc-11ef-93f3-92fbcf53809c.png

2.高斯濾波性質

高斯函數具有五個重要的性質,這些性質使得它在早期圖像處理中特別有用.這些性質表明,高斯平滑濾波器無論在空間域還是在頻率域都是十分有效的低通濾波器,且在實際圖像處理中得到了工程人員的有效使用.高斯函數具有五個十分重要的性質,它們是:
??1.二維高斯函數具有旋轉對稱性,即濾波器在各個方向上的平滑程度是相同的.一般來說,一幅圖像的邊緣方向是事先不知道的,因此,在濾波前是無法確定一個方向上比另一方向上需要更多的平滑.旋轉對稱性意味著高斯平滑濾波器在后續邊緣檢測中不會偏向任一方向.
??2.高斯函數是單值函數.這表明,高斯濾波器用像素鄰域的加權均值來代替該點的像素值,而每一鄰域像素點權值是隨該點與中心點的距離單調增減的.這一性質是很重要的,因為邊緣是一種圖像局部特征,如果平滑運算對離算子中心很遠的像素點仍然有很大作用,則平滑運算會使圖像失真.
??3.高斯函數的傅立葉變換頻譜是單瓣的.正如下面所示,這一性質是高斯函數付立葉變換等于高斯函數本身這一事實的直接推論.圖像常被不希望的高頻信號所污染(噪聲和細紋理).而所希望的圖像特征(如邊緣),既含有低頻分量,又含有高頻分量.高斯函數付立葉變換的單瓣意味著平滑圖像不會被不需要的高頻信號所污染,同時保留了大部分所需信號.
??4.高斯濾波器寬度(決定著平滑程度)是由參數σ表征的,而且σ和平滑程度的關系是非常簡單的.σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好.通過調節平滑程度參數σ,可在圖像特征過分模糊(過平滑)與平滑圖像中由于噪聲和細紋理所引起的過多的不希望突變量(欠平滑)之間取得折衷.
??5.由于高斯函數的可分離性,較大尺寸的高斯濾波器可以得以有效地實現.二維高斯函數卷積可以分兩步來進行,首先將圖像與一維高斯函數進行卷積,然后將卷積結果與方向垂直的相同一維高斯函數卷積.因此,二維高斯濾波的計算量隨濾波模板寬度成線性增長而不是成平方增長.

3.高斯濾波的原理與實現

3.1 高斯模板的生成

高斯濾波既能用來過濾高斯噪音,也可用來做高斯模糊。
??要模糊一張圖像,可以直接用均值濾波來做簡單的模糊,但是這樣做顯然不大合理,因為圖像是連續的,離卷積核中心的點關系更加密切,越遠的點關系越疏遠,這個時候就需要加權平均。明顯的離中心點越近的像素點權重越大。而正態分布顯然是一種可取的權重分配方式,又由于圖像是二維的,所以需要使用二維的高斯函數。所以高斯濾波的本質是利用高斯函數來生成高斯核(高斯卷積模板)來對圖像進行卷積操作。
??理論上高斯分布在所有定義域上都有非負值,這就需要一個無限大的卷積核,但是實際上,僅需要取均值的三倍標準差(即3 σ 3sigma3σ)內的值,以外的部分去掉即可。
??高斯濾波最重要的就是找到高斯模板然后進行卷積,以3X3高斯模板為例,假設中心點的坐標為(0,0),根據二維高斯函數g ( x , y ) g(x,y)g(x,y),還需要設定σ sigmaσ的值,假定σ = 0.8 sigma=0.8σ=0.8(這個值不宜過大,否則就會變成均值濾波),可以根據坐標值來算出對應的高斯模板。
??假定中心點的坐標為(0,0),那么距離它最近的八個點的坐標如下:

bd71418e-b2bc-11ef-93f3-92fbcf53809c.png


??將坐標以及設定的σ sigmaσ帶入二維高斯函數中,可以得到對應點的坐標的權重如下:

bd814e6c-b2bc-11ef-93f3-92fbcf53809c.png

為了防止高斯濾波后的圖像偏亮或者偏暗,我們還需要對圖像進行歸一化,這九個點的權重和等于0.9125991,因此需要分別對這九個數除以0.9125991,最終得到的高斯模板為:

bd8c2940-b2bc-11ef-93f3-92fbcf53809c.png


??有了高斯模板就可以對圖像進行卷積了,但是在FPGA中對于小數的運算不友好,于是我們將這個3X3模板擴大了16倍,得到了近似的整數模板,卷積完成后再除以16來做定浮點數的近似計算。16倍后的模板高斯卷積模板為:

bda5adf2-b2bc-11ef-93f3-92fbcf53809c.png


??3X3的高斯模板生成與定浮點數的MATLAB算法實現為:

clear;
clc;
close all;
sigma = 0.8 ;
A = exp(-(1+1)/(2*sigma*sigma))/(2*pi*sigma*sigma);
B = exp(-(1+0)/(2*sigma*sigma))/(2*pi*sigma*sigma);
C = exp(-(0+0)/(2*sigma*sigma))/(2*pi*sigma*sigma);
D = A*4 + B*4 + C;

gauss_double = [A,B,A;B,C,B;A,B,A];
gauss_normal = gauss_double / sum(sum(gauss_double));
gauss_integer = floor(gauss_normal/gauss_normal(1,1));

3.2 高斯算法的FPGA實現

生成卷積模板后的FPGA實現與仿真參考前面幾章,這里只貼高斯算法的FPGA實現部分:

module gassin_filter#(
    parameter DW = 8
)(
    input   wire                clk         ,
    input   wire                rst_n       ,

    input   wire                matrix_de   ,
    input   wire    [DW-1:0]    matrix11    ,
    input   wire    [DW-1:0]    matrix12    ,
    input   wire    [DW-1:0]    matrix13    ,
    input   wire    [DW-1:0]    matrix21    ,
    input   wire    [DW-1:0]    matrix22    ,
    input   wire    [DW-1:0]    matrix23    ,
    input   wire    [DW-1:0]    matrix31    ,
    input   wire    [DW-1:0]    matrix32    ,
    input   wire    [DW-1:0]    matrix33    ,

    output  wire                gassin_data_de     ,
    output  wire    [DW-1:0]    gassin_data 
);

//gassin_filter
//  [1      2       1]
//  [2      4       2]
//  [1      2       1]
reg     [1:0]           matrix_de_r ;

reg     [DW+2:0]        one_line    ;
reg     [DW+2:0]        two_line    ;
reg     [DW+2:0]        three_line  ;
reg     [DW+4:0]        sum_matrix  ;

always @(posedge clk)begin
    if(rst_n == 0)begin
        matrix_de_r     <=  0;
    end 
    else begin
        matrix_de_r     <=  {matrix_de_r[0],matrix_de};
    end
end 


always @(posedge clk)begin
    if(rst_n==0)begin
        one_line    <=  0   ;
        two_line    <=  0   ;
        three_line  <=  0   ;
    end 
    else if(matrix_de)begin
        one_line    <=  matrix11    +   2*matrix12  +   matrix13    ;
        two_line    <=  2*matrix21  +   4*matrix22  +   2*matrix23  ;
        three_line  <=  matrix31    +   2*matrix32  +   matrix33    ;
    end
    else begin
        one_line    <=  0   ;
        two_line    <=  0   ;
        three_line  <=  0   ;
    end  
end 

always @(posedge clk)begin
    if(rst_n == 0)begin
        sum_matrix  <=  0;
    end 
    else if(matrix_de_r[0])begin
        sum_matrix  <=  one_line + two_line + three_line ;
    end
    else begin
        sum_matrix  <=  0;
    end
end

assign  gassin_data     =   sum_matrix[DW+4:4]  ;
assign  gassin_data_de  =   matrix_de_r[1]      ;

endmodule

3.3 高斯算法的MATLAB實現以及驗證

clear;
clc;
close all;
sigma = 0.8 ;
A = exp(-(1+1)/(2*sigma*sigma))/(2*pi*sigma*sigma);
B = exp(-(1+0)/(2*sigma*sigma))/(2*pi*sigma*sigma);
C = exp(-(0+0)/(2*sigma*sigma))/(2*pi*sigma*sigma);
D = A*4 + B*4 + C;

gauss_double = [A,B,A;B,C,B;A,B,A];
gauss_normal = gauss_double / sum(sum(gauss_double));
gauss_integer = floor(gauss_normal/gauss_normal(1,1));

GRAY = imread('../img/gray.bmp');
[row,col] = size(GRAY);
gassin_padding  =   zeros(row+2,col+2);
gassin_result   =   zeros(row,col);

for i = 1:row
    for j = 1:col
        gassin_padding(i+1,j+1) = GRAY(i,j);
    end
end

for i = 1:row+2
    gassin_padding(i,1) = gassin_padding(i,2);
    gassin_padding(i,col+2) = gassin_padding(i,col+1);
end

for i = 1:col+2
   gassin_padding(1,i) = gassin_padding(2,i);
   gassin_padding(row+2,i) = gassin_padding(row+1,i);
end

for i = 2:row+1
    for j = 2:col+1
        matrix11 = gassin_padding(i-1,j-1);
        matrix12 = gassin_padding(i-1,j);
        matrix13 = gassin_padding(i-1,j+1);
        
        matrix21 = gassin_padding(i,j-1);
        matrix22 = gassin_padding(i,j);
        matrix23 = gassin_padding(i,j+1);
        
        matrix31 = gassin_padding(i+1,j-1);
        matrix32 = gassin_padding(i+1,j);
        matrix33 = gassin_padding(i+1,j+1);

        matrix = [matrix11,matrix12,matrix13;matrix21,matrix22,matrix23;matrix31,matrix32,matrix33];
        gassin_mult = matrix.* gauss_integer;

        sum_gassin_matrix = sum(sum(gassin_mult()));
        gassin_result(i-1,j-1) = sum_gassin_matrix/16;
    end
end

a = textread('../data/gassin_filter.txt','%s');
IMdec1 = hex2dec(a);

IM1 = reshape(IMdec1,col,row);
fpga_Y = uint8(IM1)';

b = textread('../data/pre.txt','%s');

subplot(1,3,1)
matlab_Y = uint8(floor(gassin_result));
imshow(matlab_Y),title('MATLAB gassin算法圖像');
subplot(1,3,2)
imshow(fpga_Y),title('FPGA gassin算法圖像');
subplot(1,3,3)
imshow(GRAY),title('原圖像');

sub = matlab_Y - fpga_Y;

min_sub = min(min(sub));
max_sub = max(max(sub));

bdb92152-b2bc-11ef-93f3-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    602986
  • 濾波器
    +關注

    關注

    161

    文章

    7795

    瀏覽量

    177993
  • 高斯濾波
    +關注

    關注

    0

    文章

    18

    瀏覽量

    8063

原文標題:圖像高斯濾波的原理與FPGA實現思路

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一文了解高斯濾波器,附原理及實現過程

    `本文主要介紹了高斯濾波器的原理及其實現過程高斯濾波器是一種線性濾波器,能夠有效的抑制噪聲,平滑
    發表于 09-04 08:00

    為什么高斯濾波廣泛的應用在圖像處理中?

    為什么高斯濾波廣泛的應用在圖像處理中
    發表于 10-09 06:31

    基于圖像信噪比選擇優化高斯濾波尺度

    基于圖像信噪比選擇優化高斯濾波尺度:該文提出了一種選擇優化高斯濾波尺度的算法。首先對圖像的信噪比
    發表于 10-29 13:02 ?12次下載

    基于FPGA的實時圖像中值濾波算法及實現_蔣濤

    基于FPGA的實時圖像中值濾波算法及實現_蔣濤
    發表于 03-19 11:38 ?15次下載

    基于FPGA灰度圖像高斯濾波算法的實現

    FPGA仿真篇-使用腳本命令來加速仿真二 基于FPGA的HDMI高清顯示借口驅動 基于FPGA灰度圖像高斯
    發表于 02-20 20:49 ?7618次閱讀
    基于<b class='flag-5'>FPGA</b>灰度<b class='flag-5'>圖像</b><b class='flag-5'>高斯</b><b class='flag-5'>濾波</b>算法的<b class='flag-5'>實現</b>

    FPGA 實現 高斯濾波

    1、高斯濾波器的實現方式方法1:與高斯核直接進行卷積實現,這樣使用的資源和乘法器 加法器都會很多。例如3*3窗口的
    的頭像 發表于 10-19 13:39 ?4317次閱讀
    <b class='flag-5'>FPGA</b> <b class='flag-5'>實現</b> <b class='flag-5'>高斯</b><b class='flag-5'>濾波</b>

    高斯濾波器的原理和實現

    高斯濾波器是一種線性濾波器,能夠有效的抑制噪聲,平滑圖像。其作用原理和均值濾波器類似,都是取濾波
    發表于 09-01 11:09 ?8754次閱讀
    <b class='flag-5'>高斯</b><b class='flag-5'>濾波</b>器的原理和<b class='flag-5'>實現</b>

    如何使用FPGA實現圖像的中值濾波算法

    圖像濾波圖像預處理過程中葦要的組成部分,而基于FPGA濾波算法相對軟件算法而言具有高度的并行性。能滿足實時
    發表于 04-01 11:21 ?42次下載
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>實現</b><b class='flag-5'>圖像</b>的中值<b class='flag-5'>濾波</b>算法

    FPGA高斯濾波算法的實現

    1.高斯濾波算法的實現 前面講的均值/中值濾波,對于濾波窗口內每個像素的權重都是一樣的。但是噪聲在圖像
    的頭像 發表于 10-29 10:59 ?5394次閱讀

    基于FPGA圖像處理的高斯模糊實現

    高斯模糊(Gaussian Blur)是一種高斯低通濾波,可以過濾掉圖像的高頻部分,保留低頻部分,對于去除高斯噪聲非常有效果,常常被用于
    發表于 10-26 09:36 ?797次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b>處理的<b class='flag-5'>高斯</b>模糊<b class='flag-5'>實現</b>

    高斯濾波的基本原理有哪些

    高斯濾波的基本原理可以從以下幾個方面進行闡述: 一、定義與性質 定義 :高斯濾波(Gaussian Filter)是一種常見的圖像處理技術,
    的頭像 發表于 09-29 09:27 ?494次閱讀

    高斯濾波的卷積核怎么確定

    高斯濾波的卷積核確定主要依賴于高斯函數的特性以及圖像處理的具體需求。以下是確定高斯濾波卷積核的幾
    的頭像 發表于 09-29 09:29 ?485次閱讀

    高斯濾波的特點有哪些

    高斯濾波作為一種廣泛使用的圖像處理技術,具有以下幾個顯著的特點: 平滑性 : 高斯濾波通過卷積操作對圖像
    的頭像 發表于 09-29 09:36 ?303次閱讀

    高斯濾波和雙邊濾波的區別

    高斯濾波和雙邊濾波圖像處理中都是常用的平滑濾波技術,但它們之間存在一些顯著的區別。以下是兩者之間的主要區別: 一、基本原理
    的頭像 發表于 09-29 09:37 ?393次閱讀

    高斯濾波和均值濾波的區別

    高斯濾波和均值濾波圖像處理中都是常用的平滑濾波方法,但它們之間存在一些關鍵的區別。以下是兩者之間的主要區別: 1.
    的頭像 發表于 09-29 09:40 ?624次閱讀
    主站蜘蛛池模板: 精品久久久久中文字幕| 国产精品亚洲视频在线观看| 国产成人小视频| 精品亚洲麻豆1区2区3区| 免费视频国产| 亚洲 欧美 另类 中文 在线| 中文在线日韩亚洲制服| 国产成人免费高清视频| 久久亚洲成a人片| 午夜福到在线2019| 97色在线视频| 狠狠国产欧美在线视频| 被窝伦理午夜电影网| 精品AV无码一二三区视频| 欧美一区二区视频97色伦| 亚洲 欧美 综合 高清 在线| yin荡体育课羞耻play双性| 黄得让人湿的片段| 受被三个攻各种道具PLAY| 98色精品视频在线| 久久青草费线频观看国产| 午夜视频无码国产在线观看 | 亚洲精品无码一区二区三区四虎| 99久热精品免费观看| WWW污污污抽搐喷潮COM| 捆绑白丝粉色JK震动捧喷白浆 | 久久欧洲视频| 亚洲天堂久久久| 黄色三级视频在线观看| 午夜福利体验试看120秒| 粉嫩自拍 偷拍 亚洲| 人妻夜夜爽99麻豆AV| 99九九免费热在线精品| 美女脱衣服搞鸡| 8050午夜二级一片| 美女全光末满18勿进| 69成人免费视频| 暖暖日本大全免费观看| BL文高H强交| 日韩精品熟女一区二区三区中文| 大胸美女被cao哭|