首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenCV的图像去噪

基于OpenCV的图像去噪
EN

Stack Overflow用户
提问于 2016-04-08 00:10:42
回答 4查看 749关注 0票数 0

我已经使用here提供的代码对一个二进制图像执行了细化操作。我使用的源图像是这个。

在对源图像进行细化操作后得到的结果图像是这样的

我面临的问题是如何去除图像中的噪声。在细小的白线周围是可见的。

EN

回答 4

Stack Overflow用户

发布于 2016-04-08 00:57:55

在这种特殊情况下,最简单和最安全的解决方案是标记连接的分量(并集查找算法),并删除表面低于一个或两个像素的分量。

票数 0
EN

Stack Overflow用户

发布于 2016-04-08 01:13:01

另一个简单但可能不那么健壮的方法是使用轮廓面积来删除小的连通区域,然后在应用细化过程之前使用腐蚀/膨胀。

但是,您可以使用cv::findContours(,)直接处理细化后的图像,并对面积较小的轮廓进行掩码。这与FiReTiTi的回答类似。

您可以使用OpenCV中的findContour示例,使用Canny等边缘检测器构建轮廓检测。该示例可以作为您的需求的一部分直接移植。

一旦你在vector<vector<Point> > contours;中得到了等高线,你就可以遍历每个等高线,并使用cv::contourArea找到每个区域的面积。使用预定义的阈值,您可以删除不需要的区域。

票数 0
EN

Stack Overflow用户

发布于 2016-04-08 01:29:40

FiReTiTi和kcc__已经提供了很好的答案,但我想我应该提供另一种观点。看过你之前的一些帖子后,你似乎正在尝试构建一个软件,使用手上的血管模式来识别人。因此,在某些情况下,您将需要构建某种分类算法。

我提出这一点是因为许多这样的算法在这种噪声存在的情况下是相当健壮的。例如,如果您打算使用监督学习来训练卷积神经网络(假设您可以收集大量的训练样本,这将是一种合理的方法),您可能会发现这种类型的大量预处理是不必要的,甚至可能会降低性能。

只是一些需要考虑的想法。干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36481695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档