失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c++实现高斯滤波器

c++实现高斯滤波器

时间:2021-10-09 13:36:27

相关推荐

c++实现高斯滤波器

//高斯滤波器实现

void gausBlur(cv::Mat srcImage, cv::Mat dstImage, int ksize, double sigma){const double PI = 4.0 / (atan(1.0));//定义卷积核大小double **tempMatrix = new doublle*[ksize];for(int i = 0; i < ksize; ++i){tempMatrix [i] = new double[ksize];}//生成高斯滤波模板int center = ksize / 2;int sum = 0;for(int i = 0; i < ksize; ++i){for(int j = 0; j < ksize; ++j){tempMatrix[i][j] = (1 / (2 * PI * sigma * sigma))* (-((i - center)*(i - center) + (j - center) * (j - center)) / (2 * sigma *sigma)) ;sum += gaus[i][j];}}for(int i = 0; i < ksize; ++i){for(int j = 0; j < ksize; ++j){tempMatrix[i][j] /= sum;}}//将高斯滤波模板用于图像//边界扩充copyMakeBorder(srcImage,dstImage, center, center, center, center, BorderTypes::BORDER_REFLECT);int rows = dstImage.rows - center;int cols = dstImage.cols - center;for(int i = 0; i < rows; ++i){for(int j = 0; j < cols; ++j){double s = 0;for(int p = -center; p < center; ++p){for(int q = -center; q < center; ++q){s += tempMatrix[i][j] * dstImage.at<uchar>(i + p, j + q);}}dstImage.at<uchar>(i,j) = static_cast<uchar>(s);}}}

如果觉得《c++实现高斯滤波器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。