OpenCV 滤波方法总结

1.概述

在深度学习出现之前,主要有中值滤波、均值滤波、高斯滤波等.

2.理论对比

3.参数设置

  1. blur()::
    • 也称为均值滤波。
    • 此函数通过对矩形区域内的像素值进行平均化来平滑图像。
    • 语法:cv::blur(src, dst, Size(k, k)),其中k是kernel的大小(奇数整数)。
  2. GaussianBlur()
    • 使用高斯滤波器进行模糊处理。
    • 像素的新值来自它的邻居,根据高斯函数,为更接近它的近邻赋予更多的权重。
    • 语法:cv::GaussianBlur(src, dst, Size(k, k)。值sigmaXsigmaY 表示 X 和 Y 方向上的标准差。通常,只指定了sigmaX ,而将sigmaXY设置为零。
  3. medianBlur()
    • 将每个像素的值替换为其相邻像素的中位数。
    • 对椒盐噪声特别有效。
    • 语法:cv::medianBlur(src, dst, k),其中k是kernel的大小(大于1 的奇数整数)。​​​​​​
  4. Bilateral Filtering

    • src: Source image

    • dst: Destination image
    • d: The diameter of each pixel neighborhood.
    • σ_Color: Standard deviation in the color space.
    • σ_Space: Standard deviation in the coordinate space (in pixel terms)

4.代码实现

#include <iostream>
#include <opencv2/opencv.hpp>

int main(int argc, char** argv) {
    if(argc != 2) {
        std::cerr << "Usage: " << argv[0] << " <image_path>" << std::endl;
        return -1;
    }

    // Load the noisy image
    cv::Mat noisyImage = cv::imread(argv[1]);
    if(noisyImage.empty()) {
        std::cerr << "Error: Couldn't read the image. Check the path and try again." << std::endl;
        return -1;
    }
    cv::imshow("Noisy Image", noisyImage);

    // Apply averaging blur
    cv::Mat averageBlurred;
    cv::blur(noisyImage, averageBlurred, cv::Size(5,5));
    cv::imshow("Averaging Blur", averageBlurred);

    // Apply Gaussian blur
    cv::Mat gaussianBlurred;
    cv::GaussianBlur(noisyImage, gaussianBlurred, cv::Size(5,5), 0);
    cv::imshow("Gaussian Blur", gaussianBlurred);

    // Apply median blur
    cv::Mat medianBlurred;
    cv::medianBlur(noisyImage, medianBlurred, 5);
    cv::imshow("Median Blur", medianBlurred);

    // Wait for a key press and then close
    cv::waitKey(0);
    
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scott198512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值