在我的研究过程中,我已经从图像中分离出了寄生虫。这个寄生虫看起来像一条虫。我希望MATLAB能够读取所有输入的图像,寻找类似于深紫色虫子的图像,如果检测到,就输出“已检测到”的回复。我尝试使用直方图比较,但我认为使用面积或形状是一个更好的选择,并且这涉及到机器学习。我不知道该怎么做。
(http://www.cdc.gov/dpdx/lymphaticFilariasis/gallery.html#microwbancrofti)
回答:
由于问题没有正式化,所以很难确定你需要做什么,因此我们无法提供一个100%有效的算法。
粗略看了一下图片,我注意到图片大致包含三种类型的对象:
- 背景
- 前景颜色的微小球体
- 前景颜色的长而弯曲的虫子
你可以采取的措施包括:
-
将图像(每个像素)二值化成两种颜色:前景和背景。你可以只使用像素本身,也可以使用其邻居像素。
-
在前景像素中查找连通分量。你可以将图片的每个像素表示为一个节点,或者做一些更复杂的处理。
-
如果存在的话,最大的连通分量可能是一条虫子。你可以分析你拥有的图片,并设定一个阈值来区分虫子和球体,或者做一些更复杂的处理。
例如,这些球体具有圆形形状,因此你可以尝试将每个连通分量拟合成一个圆。图片中的所有球体看起来非常明显且分离,因此具有巨大半径的分量就是你要找的。或者,你可以计算分量之间的最大距离。
总之:正如我之前所说,你的问题没有确切的解决方案。你需要尝试不同的方法,看看哪种效果最好。