• 2.1 图像平滑处理


    图像平滑处理:

                  是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和高频干扰成分的图像

                  处理方法,

                  目的是使图像亮度平缓渐变,减小突变梯度,改善图像质量。

                  平滑处理时需要滤波器

    归一化滤波器

                  最简单的滤波器,输出像素值是核窗口内像素值的均值。

                  blur(Mat src, Mat det, Size(xradius,yradius),Point(-1,-1));

                  src:输入图像

                  dst:输出图像

                  Size(w,h):定义内核大小,宽度,高度

                  Point(-1,-1):指定锚点位置(被平滑点),如果为负值,取核的中心为锚点。

    高斯滤波器

                  GaussianBlur(Mat src,Mat dst,Size(i,i),sigmax,sigmay);

                  其中Size(x,y),x,y必须是正数而且是奇数。

                  Size(w,h):定义内核大小(需要考虑邻域的范围),w,h必须是正奇数,否则将使用sigmax

                  和sigmay参数来计算内核大小。

                  sigmax:x方向标准差,如果是0则sigmax用内核大小计算得到。

                  digmay:y方向标准差,如果是0则sigmay用内核大小计算得到。

     中值滤波器

                 统计排序滤波器

                 中值模糊对椒盐噪声(极大值,极小值)有很好的抑制作用。

                 medianBlur(src,dst,ksize)

                 ksize:内核大小(只需一个值,因为使用正方形)必须为奇数

     双边滤波器

                 均值模糊无法克服边缘像素信息丢失缺陷,原因是均值滤波器是基于平均权重

                  高斯模糊部分克服了该缺陷,但是无法完全避免因为没有考虑像素值的不同。

                  高斯双边模糊 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变。

                  bilaterFilter(src,dst,d,sigmaC,sigmaS)

                  d:像素的邻域半径,半径之内的像素值会被纳入计算

                 sigmaColor:颜色空间的标准方差,决定多少差值之内的像素会被计算。

                 sigmaSpace:坐标空间的标准方差(像素单位),如果d的值大于0,则声明无效,

                                     否则用它来计算d的值。

             

    #include <opencv2/imgproc/imgproc.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    using namespace std;
    using namespace cv;
    
    int main() {
        Mat src, dst;
        src = imread("D:\OpenCVT\5.jpg");
        if (!src.data) {
            printf("could not load image!");
            exit(0);
        }
        char input_title[] = "input image";
        char output_title[] = "blur image";
        char gaussian_title[] = "Gaussian Blur";
        char median_title[] = "Median Blur";
        char bilater_filter[] = "gaussian filter";
        namedWindow(input_title,CV_WINDOW_AUTOSIZE);
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
        namedWindow(gaussian_title, CV_WINDOW_AUTOSIZE);
        namedWindow(median_title, CV_WINDOW_AUTOSIZE);
        namedWindow(bilater_filter, CV_WINDOW_AUTOSIZE);
        imshow(input_title, src);
        blur(src, dst, Size(9, 3), Point(-1, -1));
        imshow(output_title, dst);
    
        Mat gdst;
        GaussianBlur(src, gdst, Size(5, 5), 11, 11);
        imshow(gaussian_title, gdst);
    
        Mat mdst;
        medianBlur(src, mdst, 3);
        imshow(median_title, mdst);
    
        Mat fdst;
        bilateralFilter(src, fdst, 3, 150, 3);
        imshow(bilater_filter, fdst);
        waitKey(0);
        return 0;
    }
    View Code
  • 相关阅读:
    c# .net 均适用根据经纬度坐标获得省市区县行政区划城市名称
    .NET LoongArch64 正式合并进入.NET
    Microk8s 安装 与使用指南
    Dapr 不是服务网格,只是我长的和他很像
    从同步函数 helloworlddotnet 开始探索OpenFunction
    CoreWCF 1.0.0 发布,微软正式支持WCF
    Microsoft Graph 的 .NET 6 之旅
    .NET MAUI RC2 发布,支持 Tizen 平台
    [LeetCode] 1296. Divide Array in Sets of K Consecutive Numbers 划分数组为连续数字的集合
    [LeetCode] 1297. Maximum Number of Occurrences of a Substring 子串的最大出现次数
  • 原文地址:https://www.cnblogs.com/zuoyou151/p/9593938.html
Copyright © 2020-2023  润新知