13.形态学操作应用——提取水平和垂直线

  1. 主要内容:
    形态学操作的应用——提取水平与垂直线原理方法
    实现步骤

  2. 原理方法
    图像形态学操作的时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出,通过使用两个基本的形态学操作——膨胀(dilate)和腐蚀(erode),使用不同的结构元素实现对输入图像的操作,得到想要的结果。(理解对比开操作和闭操作)
    膨胀——输出的像素值是结果元素覆盖下输入图像的最大像素值
    腐蚀——输出的像素值是结构元素覆盖下输入图像的最小像素值

例如:我需要提取水平线或者垂直线 保留水平线即设置一个对垂直线不敏感对水平线敏感的结构元素,运用合适的形态学操作进行

  1. 结构元素
    膨胀和腐蚀可以使用任意形状的结构元素
    常见的形状:矩形、圆、直线、磁盘形状、砖石形状等各种自定义形状

  2. 提取步骤
    输入图像彩色图像imread
    转换为灰度图像——cvtColor
    转换为二值图像——adaptiveThreshold
    定义结构元素
    开操作(腐蚀+膨胀)提取水平与垂直线

  3. 相关API——转换为二值图像——adaptiveThreshold

adaptiveThreshold(
    Mat src,//输入的灰度图像
    Mat dest,//输入的二值图像
    double maxValue,//二值图像的最大值
    int adaptiveMethod,//自适应方法,只能其一
                       //ADAPTIVE_THRESE_MEAN_C
                       //ADAPTIVE_THRESH_GAUSSIAN_C
    int thresholdType,//阈值类型
    int blockSize,//块大小
    double C//常量C可以是正数,0,负数
)

有时为了让输出的图像显示更圆滑,可以使用blue函数进行图像的模糊操作

实例:去除文字的干扰线
原图:

输入源图像——输入灰度图——输入二值图——定义结构元素——使用形态学操作中的开操作 结果图:

在这里插入图片描述
6. 课外扩展:
Wellner 自适应阈值二值化算法
拜小白opencv22-自适应阈值化操作:adaptiveThreshold()函数
OpenCV阈值操作(Threshold,AdaptiveThreshold)

发布了41 篇原创文章 · 获赞 14 · 访问量 2006

猜你喜欢

转载自blog.csdn.net/qq_43367829/article/details/103957565