ZBLOG

opencv高斯滤波

OpenCV中的高斯滤波(Gaussian Blur)是一种常用的图像平滑技术,通过高斯核卷积消除图像中的噪声。以下是详细说明和代码示例:


1. 高斯滤波原理

  • 作用:抑制噪声(尤其是高斯噪声),同时保留图像边缘。
  • 核心思想:像素值由邻域内像素的加权平均决定,权重服从二维高斯分布(中心点权重最大,远离中心逐渐减小)。

2. OpenCV函数原型

void GaussianBlur(
    InputArray src,     // 输入图像
    OutputArray dst,    // 输出图像
    Size ksize,        // 高斯核大小(宽高为奇数,如3x3、5x5)
    double sigmaX,      // X方向标准差
    double sigmaY = 0,  // Y方向标准差(默认=sigmaX)
    int borderType = BORDER_DEFAULT // 边界处理方式
);

3. C++代码示例

#include <opencv2/opencv.hpp>
using namespace cv;

int main() {
    Mat src = imread("input.jpg", IMREAD_COLOR); // 读取图像
    if (src.empty()) {
        std::cerr << "Error: Image not found!" << std::endl;
        return -1;
    }

    Mat dst;
    GaussianBlur(src, dst, Size(5, 5), 1.5); // 5x5核,sigma=1.5

    imshow("Original", src);
    imshow("Gaussian Blur", dst);
    waitKey(0);

    return 0;
}

4. 关键参数说明

  • ksize:核尺寸越大,模糊效果越强(但计算量增加)。
  • sigma
    • sigmaX/Y越大,周围像素影响范围越广。
    • 若设为0,OpenCV会根据ksize自动计算sigma。

5. Python等效代码

import cv2
img = cv2.imread("input.jpg")
blurred = cv2.GaussianBlur(img, (5, 5), sigmaX=1.5)
cv2.imshow("Result", blurred)
cv2.waitKey(0)

6. 应用场景

  • 预处理:在边缘检测(如Canny)前降噪。
  • 美化:皮肤柔化、背景虚化等。
  • 去噪:消除传感器噪声或光照不均。

注意事项

  • 性能:大核(如15x15)会影响实时性,需权衡效果与速度。
  • 边缘处理:建议使用BORDER_REFLECTBORDER_CONSTANT避免边界伪影。

如果需要进一步优化或特定场景的用法,可以告诉我具体需求!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23524

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?