小明很幸运,刚毕业就收到了一家大型医疗公司实习生的offer,今天是他入职第一天,刚到公司经理就问了他一个问题:什么是图像分割?小明不假思索地回答:对图像上的每一个像素进行分类!经理很满意,决定让他来接手图像分割模块。
小明很快就接到了第一个任务:将下面的苹果分割出来。
小明很快想到了基于阈值的分割,其关键是得到合理的阈值,可以通过先验知识获取阈值,但现实中大多通过计算得到,例如,直方图。
这里顺便讲一下直方图,直方图是一种很流行的统计方法,本次应用的是颜色直方图,顾名思义是用来统计灰度的分布,横坐标是灰度值,纵坐标是该灰度的分布,但该统计并不包括位置信息。
根据灰度直方图,小明很轻松地就得到了苹果区域的灰度值201,灰度图中0代表黑色,255代表白色。
得到了苹果区域的灰度值,就可以基于阈值进行分割,阈值可以设置为背景和苹果中间任意一点,例如,阈值设置为100,Opencv中阈值分割函数:
threshold( src_gray, dst, threshold_value, max_binary_value, threshold_type );
threshold_value就是我们计算的阈值100,threshold_type是个很有意思的参数,可以控制分割结果,例如,如果无法计算出阈值,可以设定THRESH_OSTU,算法自动计算一个阈值。