快速高斯濾波

2021-07-05 10:42:13 字數 1750 閱讀 9237

高斯濾波器是影象處理中經常用到的濾波器,其濾波核函式為:

為簡單起見,這裡省略了歸一化因子。

由得:

其中由上式可見,我們可以將二維高斯濾波分解為兩次一維高斯濾波。

對於二維高斯濾波,設影象大小

程式:

#include "stdafx.h"

#include#include//邊界處理

int edge(int i,int x,int max)

//二維高斯處理灰度影象

extern "c" _declspec(dllexport) void gaussfiltergray(unsigned char *a, int nwidth, int nheight, int stride,double dsigma)

} deletepdkernel;

deletebuffer;

}//一維高斯處理灰度影象

extern "c" _declspec(dllexport) void gaussfiltergray1d(unsigned char *a, int nwidth, int nheight, int stride,double dsigma)

} deletepdkernel;

deletebuffer;

}//二維高斯處理彩色影象

extern "c" _declspec(dllexport) void gaussfiltercolor(unsigned char *a, int nwidth, int nheight, int stride,double dsigma)

} deletepdkernel;

deletebuffer;

}//一維高斯處理彩色影象

extern "c" _declspec(dllexport) void gaussfiltercolor1d(unsigned char *a, int nwidth, int nheight, int stride,double dsigma)

} //縱向濾波

for(int i=0;i255)dfilterb=255;

if(dfilterb<0)dfilterb=0;

if(dfilterg>255)dfilterr=255;

if(dfilterg<0)dfilterr=0;

if(dfilterr>255)dfilterg=255;

if(dfilterr<0)dfilterg=0;

a[index]=dfilterb;

a[index+1]=dfilterg;

a[index+2]=dfilterr;

} }deletepdkernel;

deletebuffer;

}

演示結果:

上面對一幅512*512的彩色影象,基本的高斯演算法耗時1469ms,而快速高斯耗時439ms。選取的

參考:

快速高斯濾波

高斯濾波器是影象處理中經常用到的濾波器,其濾波核函式為 為簡單起見,這裡省略了歸一化因子。由的可分離特性 得 其中為輸入影象,為輸出影象,為濾波模板半徑。根據準則,通常使。由上式可見,我們可以將二維高斯濾波分解為兩次一維高斯濾波。對於二維高斯濾波,設影象大小,高斯模板大小,處理每個畫素點需要次操作,...

OpenCV 高斯濾波

一 前言 關於高斯濾波在我的前一篇文章 數字影象基本處理演算法 中有所談及那篇只是介紹了高斯濾波的應用,現在這一篇將著重簡介高斯濾波的原理和應用,一探個究竟!二 啥是高斯濾波?好吃麼?高斯濾波,說白了就是乙個函式來對輸入的訊號 其實這裡的訊號就是影象的畫素值 進行計算然後得出結果作為該訊號的值,只不...

高斯濾波001

高斯濾波 高斯濾波去噪方法就是對整幅影象畫素進行加權然後取平均的過程,影象中的每乙個畫素點的灰度值,都由其本身和鄰域內的其他畫素點的灰度值經過加權平均後得到。高斯濾波演算法的具體操作步驟是 用乙個固定大小的模板 或稱卷積 掩模 平滑數字影象中的每乙個畫素點,用模板大小確定的鄰域內畫素灰度值的加權平均...