zoukankan      html  css  js  c++  java
  • opencv学习笔记3 滤波 形态学

    一。滤波

    1.方框滤波

    void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT )

    2.均值滤波

    void blur(InputArray src, OutputArraydst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )

    3.高斯滤波

    void GaussianBlur(InputArray src,OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, intborderType=BORDER_DEFAULT )

    4.中值滤波

    void medianBlur(InputArray src,OutputArray dst, int ksize)

    5.双边滤波

    void bilateralFilter(InputArray src, OutputArraydst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)

    二。形态学-膨胀、腐蚀

    1.膨胀(求局部最大值)

    void dilate(
    InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor=Point(-1,-1),
    int iterations=1,
    int borderType=BORDER_CONSTANT,
    const Scalar& borderValue=morphologyDefaultBorderValue()
    );

    2.腐蚀(求局部最小值)

    void erode(
    InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor=Point(-1,-1),
    int iterations=1,
    int borderType=BORDER_CONSTANT,
    const Scalar& borderValue=morphologyDefaultBorderValue()
    );

     1 #include <opencv2/core/core.hpp>
     2 #include<opencv2/highgui/highgui.hpp>
     3 #include"opencv2/imgproc/imgproc.hpp"
     4 #include <iostream>
     5 using namespace std;
     6 using namespace cv;
     7 int main()
     8 {
     9     Mat src = imread("E:/test.jpg");
    10     Mat dst1;
    11     Mat dst2;
    12     //定义内核
    13     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    14     dilate(src, dst1, element);//膨胀
    15     erode(src, dst2, element);//腐蚀
    16     imshow("src", src);
    17     imshow("dst1", dst1);
    18     imshow("dst2", dst2);
    19     waitKey();
    20     return 0;
    21 }

    三。形态学-开运算、闭运算、形态学梯度、顶帽、黑帽

    morphologyEx函数

    void morphologyEx(
    InputArray src,
    OutputArray dst,
    int op,
    InputArraykernel,
    Pointanchor=Point(-1,-1),
    intiterations=1,
    intborderType=BORDER_CONSTANT,
    constScalar& borderValue=morphologyDefaultBorderValue() );

    op选项

    MORPH_OPEN – 开运算(Opening operation)
    MORPH_CLOSE – 闭运算(Closing operation)
    MORPH_GRADIENT -形态学梯度(Morphological gradient)
    MORPH_TOPHAT - “顶帽”(“Top hat”)
    MORPH_BLACKHAT - “黑帽”(“Black hat“)

    1.开运算 先腐蚀后膨胀

    开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积

    1     Mat src = imread("E:/test.jpg");
    2     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    3     Mat open;
    4     morphologyEx(src, open,MORPH_OPEN, element);
    5     imshow("原图", src);
    6     imshow("开运算", open);

    2.闭运算 膨胀后腐蚀

    闭运算能够排除小型黑洞(黑色区域)

    1     Mat src = imread("E:/test.jpg");
    2     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    3     Mat close;
    4     morphologyEx(src, close,MORPH_CLOSE, element);
    5     imshow("原图", src);
    6     imshow("闭运算", close);

    3.形态学梯度 膨胀图与腐蚀图之差

    形态学梯度来保留物体的边缘轮廓

    1     Mat src = imread("E:/test.jpg");
    2     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    3     Mat gradient;
    4     morphologyEx(src, gradient, MORPH_GRADIENT, element);
    5     imshow("原图", src);
    6     imshow("形态学梯度", gradient);

    4.顶帽 原图与开运算后的图作差

    顶帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取

    1     Mat src = imread("E:/test.jpg");
    2     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    3     Mat tophat;
    4     morphologyEx(src, tophat, MORPH_TOPHAT, element);
    5     imshow("原图", src);
    6     imshow("顶帽", tophat);

    5.黑帽 闭运算的图与原图作差

    黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。

    所以,黑帽运算用来分离比邻近点暗一些的斑块

    1     Mat src = imread("E:/test.jpg");
    2     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    3     Mat blackhat;
    4     morphologyEx(src, blackhat, MORPH_BLACKHAT, element);
    5     imshow("原图", src);
    6     imshow("形态学梯度", blackhat);

     

  • 相关阅读:
    洛谷 P1443 马的遍历
    括号序列 (自出水题)
    19年清北学堂冬令营游记
    计数排列(模板)
    全排列
    unique去重
    链表 模板+详解
    输入输出优化
    关于广/宽度优先搜索
    第四周 6.7-6.13
  • 原文地址:https://www.cnblogs.com/sclu/p/11507717.html
Copyright © 2011-2022 走看看