我正在用Matlab从图像中提取数据,在灰度图像中使用函数im2bw,以供以后使用,但阈值并不适用于所有图像,这样图像就会产生噪声,所获得的数据也就不具有代表性。如何配置引发这个问题的阈值?函数graytresh没有给出一个好的阈值,还有其他方法来解决这个问题吗?我工作的图像很多(有时超过一万张),我不能一个接一个地运行。这些图片是鱼在游泳,我需要小心。谢谢你读我的问题!
我在像这个http://imgur.com/TEaWF1y -Sometimes这样的图像bw中使用灰度,图像上的失真太多了,包括m7o8Oie0KWWR-2a?dl=0起始图像、带有失真的bin图像和bw图像。
发布于 2016-09-28 20:43:30
有无数的方法来确定二值化阈值。这取决于图像。不能给出对任何图像有效的一般答案。
我建议您选择一组有代表性的图像,并比较最常见的阈值处理方法的结果。
也有可能一个全球阈值根本不合适。并尝试局部阈值化方法。
阅读这篇文章,对阈值处理方法进行广泛的比较:http://pequan.lip6.fr/~bereziat/pima/2012/seuillage/sezgin04.pdf
发布于 2016-09-30 08:56:18
我尝试了一下寻找这条鱼的方法,似乎用一个标准化的绿色-蓝色差异--这只是绿色和蓝色成分之间的差异--得到了相当好的结果,并将其归一化为0.1。我使用的步骤如下:
我只是在命令行中使用了ImageMagick。它安装在大多数Linux发行版上,可用于OSX和Windows。我相信你也可以在Matlab中做同样的事情:
convert fishy.jpg -auto-level -fx "(g-b)/(g+b)" -threshold 25% result.jpg

如果我有10,000个映像要做,我会使用GNU并行使我的所有CPU核心并行工作:
parallel 'convert {} -auto-level -fx "(g-b)/(g+b)" -threshold 25% results/{}' ::: fish*jpghttps://stackoverflow.com/questions/39756437
复制相似问题