• 图像形态学


    • 膨胀

      跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状,首先明确灰度图像(0~255)对应(黑~白);膨胀结果如下:

    •  腐蚀

       腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值

    •  开操作

      开操作为先腐蚀后膨胀可以去掉小的对象,单纯去掉小点噪声的话多进行几次腐蚀迭代也可以,但是这样会使像素值小的区域变小,与原图不匹配,再膨胀回来是为了保持目标图像大小不变。

     

    • 闭操作

      闭操作为先膨胀后腐蚀可以去掉区域内部的噪声小对象,可以填充小的洞,单纯去掉小点噪声的话多进行几次膨胀迭代也可以,但是这样会使像素值大的区域变大,与原图不匹配,再腐蚀回来是为了保持目标图像大小不变。

    • 形态学梯度(基本梯度还包括内部梯度、方向梯度)

      形态学梯度是膨胀减去腐蚀

    • 顶帽

      是原图像与开操作之间的差值图像

    • 黑帽

      是原图像与闭操作之间的差值图像

    创建用于形态学操作的结构元素:Mat struct = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1,-1)); 
    //Point(-1,-1)默认自动寻找区域中心,参数一有MORPH_RECT MORPH_CROSS MORPH_ELLIPSE等几种区域形状。
    
    struct = getStructuringElement(MORPH_RECT, Size(image.cols/20,1), Point(-1,-1));
    //就是一条水平直线去扫描,可以取出图片中的横线。
    
    膨胀函数dilate(in1,out1,structa, Point(-1, -1),5);
    //第三个参数为结构操作元素,5为迭代次数,即膨胀几次;
    
    腐蚀函数:erode(in2, out2, structa, Point(-1, -1), 5);
    //参数意义同上。
    
    图像形态学运算:morphologyEx(in2, out2, CV_MOP_CLOSE, structa);
    // CV_MOP_CLOSE为指定操作类型,structa同35为结构操作元素。
    //有CV_MOP_OPEN/ CV_MOP_CLOSE/ CV_MOP_GRADIENT为形态学梯度 / CV_MOP_TOPHAT/ CV_MOP_BLACKHAT 形态学操作类型.
  • 相关阅读:
    程序员的四个阶段
    2010Year Plans
    HttpHandler HttpModule入门篇
    Lucene.net索引文件的并发访问和线程安全性
    stream流写到MemoryStream内存流引发得问题
    ASP.NET 2.0 多文件上传小经验
    HTML 迷魂灯
    如何在Windows下搭建Android开发环境
    利用Lucene.net搭建站内搜索(4)数据检索
    数据加密和解密
  • 原文地址:https://www.cnblogs.com/fuzhuoxin/p/12111973.html
Copyright © 2020-2023  润新知