双边过滤

在图像处理应用中,双边滤波器是一种特殊类型的非线性滤波器

在失去结构和去除噪声之间存在折衷,因为最流行的去除噪声的方法是高斯模糊,它不了解图像的结构; 因此,它也删除了边缘。大多数情况下,edge 包含有关场景的有价值信息,我们不想放松它。该双边滤波器是意识到了场面的结构,它往往像当它是没有边缘的区域经典模糊过滤器; 然而,当它看到边缘时,它会改变它的行为; 因此,模糊不会在边缘上起作用,但它沿边缘起作用,这意味着它们是边缘保留滤镜

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

void main(int argc, char* argv[]) {
    if(argc==1) {
        std::cout << argv[0] << " <image>" << endl;
        return;
    }

    cv::Mat image, output;
    image = cv::imread(argv[1]);
    if(image.empty()) {
        std::cout << "Unable to load the image: " << argv[1] << endl;
        return;
    }

    cv::bilateralFilter(image, output, 3, 5, 3);
}