【发布时间】:2019-05-22 16:17:48
【问题描述】:
我有这种带有粗糙水平线的图像,我想将其删除或至少使这些线不可见。
使用高斯模糊等平滑技术,我无法获得令人满意的结果,因为线条仍然可见,它只会降低图像的分辨率。
cv::GaussianBlur(image, result, cv::Size(5, 5), 3);
还有其他更适合我的问题的方法吗?谢谢
【问题讨论】:
-
我们谈论水平线还是对角线?如果对角线很薄,它们可能会在中值滤波后消失。水平线:你必须模糊更多,也许只是在垂直方向。
-
@generic_opto_guy 水平线,我将编辑我的问题,谢谢。如何只在垂直方向上模糊?
-
@gameon67 您可以修改内核大小,例如使用
cv::GaussianBlur(image, result, cv::Size(1, 15), 0)。这里,x方向的模糊被省略,y方向的模糊增加。我想,这就是其他评论员想要建议的。 -
使用水平边缘检测器并将图像除以边缘图像。这会削弱图像的水平线。 (您可以将一个常数值乘以结果图像以使其更好)。
标签: c++ opencv image-processing