用python的opencv进行图像处理,但是颜色极其接近,在RGB和HSV通道中都只相差了1-15px的像素值,非常非常接近。假设A区域是我要的,B区域是我不要的,那当我能分割出90%以上的A区域的时候,B区域能分割出85%;如果我把B区域的影响降到最低,那A的区域只能分割出30%左右,准确率极低。想知道这个还能从图像处理完成吗?还是说要跳出这个领域,到深度学习里完成了?
分水岭算法即使是俩个对象的轮廓有重合都可以提取出来轮廓。opencv应该是可以的。方便放个图吗
还是需要用部分的原图才能具体分析的,颜色接近也不是说就没有办法了,可以用直方图均衡的方法将原本接近的像素值的拉开,或者类似的思路来处理
如果像你说的那样,你能先将黄色和蓝色区域直接分开吗?蓝色区域里面的黄色点可以不管,这个在将蓝色和黄色大区域分开之后面积比蓝色小很多,直接可以根据斑点面积直接填充掉。形态学是可以用的,计算面积可以在形态学能正确分割出来你要的区域之后,然后在原图上面用mask的方法将不要的区域mask掉,然后再计算面积,这个影响不会很大的。
形态学,不过不懂
需要具体情况具体分析,比如你的两块区域有不同的形状,或者一些其他特征。类似圆度,凸度,惯性率等等不同也可以分出来的(这块可以看看opencv的SimpleBlobDetector检测器,具体可以看看这里面的blob检测 OpenCV图像处理中“找圆技术”的使用 - jsxyhelu - 博客园 圆是基本图形的一种,更为重要的是,自然情况下采集的图像,很少大量存在“圆”;但凡存在的,大都是人工的,那么就必然代表特定的意义,从而方便定位、分割和识别。<!--more--> OpenC https://www.cnblogs.com/jsxyhelu/p/14117304.html%EF%BC%89%E3%80%82
还有类似楼上的分水岭算法也可以,最后才是你说的深度学习,但是深度学习一般要求就是你要有足够的数据量才行,单张图片基本上不能用。
图不太方便放出,但是我需要的是那一整块儿面积,所以我不敢用形态学来操作,因为我需要计算的就是真实的面积,从颜色很接近的、相互连接的区域中找出我想要的区域,而且本身我的任务就是在颜色极其相近的颜色区域块中分割出我需要的。如图,蓝色是我要的,黄色我不要的,实际上会有很多黄色的小点点(真的很小)覆盖在蓝色上,并且颜色非常非常接近,我试过RGB和HSV通道都很困难
首先,黄色和蓝色的区域就是无法直接很明确的分开。其次,我用过了直方图均衡,然后再去找阈值的方法,效果同样不好。最后,你提供的这个思路我觉得不错,可以试一试,但是想问问“根据斑点面积填充掉”是怎么样操作,可以稍微解释一下吗?但是在这之前一个很大的问题是我都无法抠出我想要的区域,更罔提形态学操作了