OpenCV二维高斯滤波核实现 matlab的fspecial函数

来源:互联网 发布:手机重装系统后数据恢复 编辑:程序博客网 时间:2024/05/22 15:10
//高斯核Mat gaussian_kernal(int kernelRowSize,int kernelColSize,double sigma0) { float halfRowSize = (kernelRowSize-1)/ 2.0 ;float halfColSize = (kernelColSize-1)/ 2.0; Mat K(kernelRowSize, kernelColSize, CV_32FC1); //生成二维高斯核 double s2 = 2.0 * sigma0 * sigma0; for(float i = (-halfRowSize); i <= halfRowSize; i+=1) { int m = i + halfRowSize; for (float j = (-halfColSize); j <= halfColSize; j+=1) { int n = j + halfColSize; float v = exp(-(1.0*i*i + 1.0*j*j) / s2); K.ptr(m)[n] = v; } } Scalar all = sum(K); Mat gaussK; K.convertTo(gaussK, CV_32FC1, (1/all[0])); return gaussK; }
0 0