图像边缘锐化与边缘检测

图像锐化和边缘检测是什么关系,可以先后操作吗?我想获取清晰的边缘

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/762833
  • 你也可以参考下这篇文章:数字图像处理实验一 实现一个在视频叠加字幕的程序。鼠标点击屏幕,关闭或打开字幕
  • 除此之外, 这篇博客: 基于过侵蚀的柑橘图像识别中的 步骤效果及注意事项 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    1. 原始图像
      在这里插入图片描述

    2. 颜色筛选

      先用以下函数将原始图片由BGR空间转换YCrCb空间

      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2YCrCb);
      

      再提取Cr分量,对分量调用Ostu阈值分割,注意这里得到的是目标区域的二值图,将其作为掩模与原图进行与运算即可提取出目标区域。

      Imgproc.threshold(img_cr, dst, 0, 255, Imgproc.THRESH_OTSU);
      

    在这里插入图片描述
    3. 中值模糊

    这里需要进行一次滤波是为了减少过多噪音Canny边缘检测的影响。
    在均值滤波、中值滤波、高斯滤波中采取不会丢失重叠边缘的中值滤波。
    在这里插入图片描述
    4. Canny边缘检测

    跟阈值分割一样,以检测到的边缘图片做掩模加深原图边缘。
    在这里插入图片描述在这里插入图片描述
    5. 过侵蚀
    在这里插入图片描述
    6. 开运算
    在这里插入图片描述
    7. 灰度化、二值化

    先灰度化将三通道转为单通道,再根据灰度值二值化。
    在这里插入图片描述
    8. 凸包填充

    识别过程不需要进行闭运算进行空洞填充,因为在保留边缘的条件下可直接识别凸包进行填充,注意填充凸包后要重绘凸包边界,防止边缘连接,否则就会如下图:
    错误示范
    正确示范:
    在这里插入图片描述
    9. 椭圆拟合

    主要调用以下两个函数:

    Imgproc.findContours(dst, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE,
                    new Point(0, 0));
    
    Imgproc.fitEllipse(dst); 	//调用此函数前要判断轮廓点超过5个,否则会报错
    

    这里面积较小的柑橘未识别出来,是因为我将面积小于最大连通区域1/5的连通区域当成噪音去除了。
    在这里插入图片描述
    10. 结果图像
    在这里插入图片描述

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 整个程序需要考虑的设计规范小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

互关