OpenCV如何平滑边界

时间:2014-02-27 12:54:46

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

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

我想要的是:

What I want is this:

我的图片背景是alpha。

我有两个解决方案:

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

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

  3. 感谢任何帮助。我正试图在iPhone上使用OpenCV

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

高斯模糊将成功。您可以从此处了解详情:http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html

所有这些都是平滑的常用方法。