因在工程中,要求代码可移植性比较强,经常是用纯C写的。下面代码是计算2-D高斯核,然后将计算得到的2-D高斯核可以用来对图像进行高斯滤波。
/*
* Eclispe CDT
*/
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
const double eps=1e-6;
class GuassianKernel{
private:
int i,j,k;
void guassiankernel(double* kernel,int size, double sigma){
double sum=0;
double *data=kernel;
for(i=0;i<size;++i){
double index=(size>>1)-i;
if(size&1)
*(data+i)=exp(-(index*index)/(2*sigma*sigma+eps));
else{
index-=0.5;
*(data+i) = exp(-(index*index)/(2*sigma*sigma+eps));
}
sum+=*(data+i);
}
for(i=0;i<size;++i){
*(data+i)