高斯函數的詳細分析_論文一資料

來源:互聯網
上載者:User


  摘要

    論文中遇到很重要的一個元素就是高斯核函數,但是必須要分析出高斯函數的各種潛在屬性,本文首先參考相關材料給出高斯核函數的基礎,然後使用matlab自動儲存不同參數下的高斯核函數的變化gif動圖,同時分享出原始碼,這樣也便於後續的論文寫作。


高斯函數的基礎 2.1 一維高斯函數

高斯函數,Gaussian Function, 也簡稱為Gaussian,一維形式如下:


對於任意的實數a,b,c,是以著名數學家Carl Friedrich Gauss的名字命名的。高斯的一維圖是特徵對稱“bell curve”形狀,a是曲線尖峰的高度,b是尖峰中心的座標,c稱為標準方差,表徵的是bell鐘狀的寬度。


高斯函數廣泛應用於統計學領域,用於表述常態分佈,在訊號處理領域,用於定義高斯濾波器,在影像處理領域,二維高斯核函數常用於高斯模糊Gaussian Blur,在數學領域,主要是用於解決熱力方程和擴散方程,以及定義Weiertrass Transform。

從上圖可以看出,高斯函數是一個指數函數,其log函數是對數凹二次函數 whose logarithm a concave quadratic function。

高斯函數的積分是誤差函數error function,儘管如此,其在整個實線上的反常積分能夠被精確的計算出來,使用如下的高斯積分


同理可得


若且唯若

上式積分為1,在這種情況下,高斯是常態分佈隨機變數的機率密度函數,期望值μ=b,方差delta^2 = c^2,即



2.2 二維高斯函數

    二維高斯函數,形如


A是幅值,x。y。是中心點座標,σx σy是方差,圖示如下,A = 1, xo = 0, yo = 0, σx = σy = 1



2.3 高斯函數分析

這一節使用matlab直觀的查看高斯函數,在實際編程應用中,高斯函數中的參數有

ksize 高斯函數的大小

sigma 高斯函數的方差

center 高斯函數尖峰中心點座標

bias 高斯函數尖峰中心點的位移量,用於控制截斷高斯函數

為了方便直觀的觀察高斯函數參數改變而結果也不一樣,下面的代碼實現了參數的自動遞增,並且將所有的結果圖儲存為gif映像,首先貼出完整代碼:

 function mainfunc()% 測試高斯函數,遞增的方法實現高斯函數參數的改變對整個高斯函數的影響,% 並自動儲存為gif格式輸出。% created by zhao.buaa 2016.09.28%% 儲存gif動畫item = 10;      % 迭代次數dt = 1;             % 步長大小ksize =20;      % 高斯大小sigma = 2;      % 方差大小% filename = ['ksize-' num2str(ksize) '--' num2str(ksize+dt*item) '-sigma-' num2str(sigma) '.gif']; %必須預先建立gif檔案filename = ['ksize-' num2str(ksize)  '-sigma-' num2str(sigma) '--' num2str(sigma+dt*item) '.gif']; %必須預先建立gif檔案% main loopfor i = 1:item    center  = round(ksize/2);          % 中心點    bias       = ksize*10/10;              % 位移中心點量    ksigma = ksigma(ksize, sigma, center, bias);    % 構建核函數    tname  = ['ksize-' num2str(ksize) '-sigma-' num2str(sigma) '-center-' num2str(center)];    figure(i), mesh(ksigma), title(tname);    %設定固定的x-y-z座標範圍,便於觀察,axis([xmin xmax ymin ymax zmin zmax])    axis([0 ksize 0 ksize 0 0.008]);  view([0, 90]);% 改變可視角度       % ksize 遞增%     ksize = ksize + 10;    % sigma 遞增    sigma = sigma + dt;             % 自動儲存為gif映像    frame = getframe(i);    im = frame2im(frame);    [I,map] = rgb2ind(im,256);    if i==1        imwrite(I,map,filename,'gif','Loopcount',inf, 'DelayTime',0.4);    else        imwrite(I,map,filename,'gif','WriteMode','append','DelayTime',0.4);    endend;close all;%% 截斷高斯核函數,截斷的程度取決於參數biasfunction ksigma = ksigma(ksize, sigma, center,bias)%ksize = 80;    sigma = 15;ksigma=fspecial('gaussian',ksize, sigma);   % 構建高斯函數[m, n] =size(ksigma);for i = 1:m    for j = 1:n        if(  (i<center-bias)||(i>center+bias)||(j<center-bias)||(j>center+bias)  )            ksigma(i,j) = 0;        end;    end;end;

結果圖:

固定ksize為20,sigma從1-9,固定center在高斯中間,並且bias位移量為整個半徑,即原始高斯函數。

隨著sigma的增大,整個高斯函數的尖峰逐漸減小,整體也變的更加平緩,則對映像的凹凸貼圖越來越明顯。

保持參數不變,對上述高斯函數進行截斷,即truncated gaussian function,bias的大小為ksize*3/10,則結果如下圖:


truncated gaussian function的作用主要是對超過一定地區的原始映像資訊不再考慮,這就保證在更加合理的利用靠近高斯函數中心點的周圍像素,同時還可以改變高斯函數的中心座標,如下圖:


為了便於觀察截斷的效果,改變了可視角度。


高斯核函數卷積

    論文中使用gaussian與feature map做卷積,目前的結果來看,要做到隨著到邊界的距離改變高斯函數的截斷參數,因為映像的邊緣如果使用原始高斯函數,就會在邊界地方出現特別低的一圈,原因也很簡單,高斯函數在與原始映像進行高斯卷積的時候,映像邊緣外為0計算的,那麼如何解決邊緣問題呢。

先看一段代碼:

% 截斷高斯核函數ksize = 40; ksigma=fspecial('gaussian',  ksize, 6);[m, n] =size(ksigma);for i = 1:m    for j = 1:n        if( i<25 )           ksigma(i,j) = 0;        end;    end;end;figure, mesh(ksigma);

在i,即row上對高斯核函數進行截斷,bias為半徑大小,則如圖6

並且對下圖7進行卷積,

首先卷積核為原始未截斷高斯核函數,則結果如圖8

可以看出,在映像邊緣處的卷積結果出現不想預見的結果,邊緣處的值出現大幅度減少的情況,這是高斯核函數在邊緣處將映像外的部分當成0計算的結果,因此,需要對高斯核函數進行針對性的截斷處理,但是前提是要掌握bias的規律,下面就詳細分析。

如果使用圖6的高斯核函數與圖7做卷積操作,則如圖9:

可以看出,相比較於圖8,與高斯核函數相對應的部分出現了變化,也就是說:

        if( i<25 )           ksigma(i,j) = 0;        end;

靠近邊緣的時候,改變 i 或 j 的值,即可保證邊緣處的平滑處理。但是這樣改變高斯核函數,使用matlab不是很好解決這個問題,還是使用將待處理映像邊緣向外部擴充bias的大小,與標準高斯核函數做卷積,再將超過原始映像大小的部分剪下掉,目前來看在使用matlab中imfilter函數做卷積運算最合適且最簡單的處理方法了,先寫在這裡,此部分並不是論文中的核心部分,只是數值運算的技巧性編程方法。

 

 

 

 

 

 

 

 

 


 








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.