平滑粗糙边缘轮廓opencv

时间:2016-07-20 12:12:19

标签: c++ opencv image-processing blending

我有这个图片

enter image description here

当你缩放它时,你可以看到像这样的粗糙边缘

enter image description here

我想使粗糙的边缘平滑,使它们形成几乎完美的曲线/线条,有些像这样 enter image description here

我试过这个方法 Image edge smoothing 但我似乎无法将其保存为bmp文件。我也尝试过高斯模糊但没有受到太大影响。轮廓是从二值图像中提取的轮廓。增加轮廓的厚度会将粗糙边缘移到某一点,但它会改变边界的清晰定义。

编辑: - 如何填写二进制图像?

enter image description here

enter image description here

Dilating会改变边界太多。

1 个答案:

答案 0 :(得分:2)

您正在寻找的方式是不可能的。正如@Miki所说,数字图像的分辨率上限是你无法超越的。

解决方案是将曲线表示为矢量化曲线。然后你可以以任何你想要的分辨率渲染。一种可能的解决方案是使用Bezier Curves来表示轮廓(或Spline)。然后你可以用你想要的任何调整大小分数绘制它们。

您可以在这里找到一些资源: