【问题标题】:OpenCV how to smoothen boundaryOpenCV如何平滑边界
【发布时间】:2014-03-30 22:06:00
【问题描述】:

我有一个图像,我想创建一个平滑的边界。这通常是在 Photoshop 中通过图像边界周围的涂抹工具完成的,但我想通过代码来完成。

我想要的是这个:

我的图片背景是 alpha。

我有两个解决方案:

  1. 获取所有边界像素区域并仅对这些区域应用高斯模糊。我不知道如何只提取边界像素。

  2. 再次,获取所有边界像素并在每个像素处应用 Alpha。例如,我在图像周围设置 10px 边界,然后每个像素应用增加 10% 的 alpha,因此效果将是 10% alpha 、20%....100% 然后是可见区域。

感谢任何帮助。我正在尝试在 iPhone 上使用 OpenCV 进行此操作

【问题讨论】:

    标签: c++ ios iphone opencv image-processing


    【解决方案1】:

    您正在寻找的东西称为“抗锯齿”。通常这样做的方法是使用一些内置技术,例如在渲染期间进行子采样(参见 OpenCV 文档以了解抗锯齿:http://docs.opencv.org/modules/core/doc/drawing_functions.html)。或者以更大的比例(比如 4 倍大小)渲染图像,然后下采样(缩小图像)。

    【讨论】:

      【解决方案2】:

      您所需要的只是简单的模糊(高斯或任何其他)。而且您不需要仅提取边界像素,因为平坦区域的平滑是相同的平坦区域,因此您只会看到边界上的平滑。

      【讨论】:

      • 是的,我只想在边界上平滑..!
      • 适当的平滑只会影响边界。这就是基于内核的处理的优势(在非常方便的波浪意义上):它不会影响恒定值像素的大连接字段。所以用一维水平高斯核卷积,然后用一维垂直高斯核卷积,就可以了。您可能可以像写回复一样快地编写代码。
      【解决方案3】:

      高斯模糊可以解决问题。您可以从这里了解更多信息:http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html

      都是常用的平滑方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 2013-01-21
        • 2014-03-14
        • 2017-10-26
        相关资源
        最近更新 更多