Opencv 求手的边界区域
我有手的图像,这是使用链接检测到的。它的手部检测使用HSV颜色空间 现在我面临一个问题:我需要得到封闭区域/绘制足够可能的边界线来确定手部区域,然后填充封闭区域并从原始区域中减去它以移除手部 到目前为止,我已经尝试过模糊图像以减少噪音、放大图像、关闭孔洞等,这些似乎是过量的。我尝试过等高线,这似乎是迄今为止最好的方法。我试图得到凸包(最大的),在使用不同的阈值进行测试后,我得到了以下结果 当船体变直时,可以用拇指看到不准确的情况。它必须是弯曲的。我试图找出手的位置,以便识别手所覆盖的区域。将其减去以从原始图像中删除手。这就是我想要实现的目标 有没有更好的方法 非常感谢您的想法和建议 原始和检测结果如下所示Opencv 求手的边界区域,opencv,image-processing,computer-vision,detection,Opencv,Image Processing,Computer Vision,Detection,我有手的图像,这是使用链接检测到的。它的手部检测使用HSV颜色空间 现在我面临一个问题:我需要得到封闭区域/绘制足够可能的边界线来确定手部区域,然后填充封闭区域并从原始区域中减去它以移除手部 到目前为止,我已经尝试过模糊图像以减少噪音、放大图像、关闭孔洞等,这些似乎是过量的。我尝试过等高线,这似乎是迄今为止最好的方法。我试图得到凸包(最大的),在使用不同的阈值进行测试后,我得到了以下结果 当船体变直时,可以用拇指看到不准确的情况。它必须是弯曲的。我试图找出手的位置,以便识别手所覆盖的区域。将其
假设您想要识别手部区域而不是凸包所提供的区域,并且应用程序的背景至少是相同的颜色,如果可能的话,我将应用hsv阈值来识别背景而不是手部。或者,如果光分布不一致,可能是自适应阈值。我相信很多应用程序都是这样做的
如果背景不能被固定,分割不是一个容易解决的问题,因为你应该照顾阴影和掌纹。
而不是凸包,考虑使用<强> alpha船体< /强>,它可以更好地跟随形状的轮廓,允许凹凸。 这个网站对阿尔法形状有一个很好的总结:“关于阿尔法形状你一直想知道但不敢问的一切”,作者是弗朗索瓦·贝莱尔
正如戴维在文章中提到的,考虑使用HSV(或HSI)颜色空间进行阈值化,而不是在RGB或灰度上进行阈值处理。如果您可以允许更长的处理时间,您可以使用Mean Shift等算法来分割像您这样的复杂图像。OpenCV实现了均值漂移,而《学习OpenCV》一书提供了算法的简明描述
无论如何,标准的二值化阈值似乎没有多大帮助。考虑使用动态阈值;据我回忆,OpenCV中的轮廓至少实现了局部/动态阈值。因此,您希望识别手部区域,而不是凸面外壳提供的区域。我说的对吗?我会说,手罩的图像部分我正在使用HSV空间来检测手,这似乎正是我想要的。我将不得不看看它是否也在OpenCV中,你能获得更清晰的焦点吗?您可以使用漫反射照明(“阴天”照明)来减少阴影,或使用角度照明来创建清晰一致的阴影吗?你能不能改变背景色,因为它会破坏一些边缘的对比度?暗像素是一个问题,但所有暗像素都与手及其阴影相关。这可能会破坏基于直方图的二值化。考虑将通道强度小于20(或任何值)的每个像素重新映射到值高于阈值的最近颜色。考虑只使用一个或两个HSV通道,我现在不能做太多。但我肯定会发布更清晰的图像。我一定会试试你的建议。