针对重叠的图像分割是非常具有挑战的,正好之前一起工作过的同事跟我一起讨论了关于这方面的问题,我首先想到的就是用分水岭来进行分割。
下面我将结合他提供的细胞图像来实现分水岭分割算法的实现。
1、RGB2HSV空间变换
首先我们观察图像可以看到背景是白色,而我们期望的目标颜色有深有浅,而且颜色也不一样,所以直接将RGB转成HSV,分割出白色区域然后再取反即可。关于白色在HSV中范围,我之前的文章中有分享过,这里就不给出来了。代码实现:
cv::Mat hsvimage, thresholdimage;
cv::cvtColor(src, hsvimage, CV_BGR2HSV);
cv::inRange(hsvimage, cv::Scalar(0, 0, 221), cv::Scalar(180, 30, 255), thresholdimage);
result = ~thresholdimage.clone();
2、形态学闭操作
因为分割的图像中间会有一些空洞,我们用形态学闭操作来弥补这个缺陷。
代码实现:
cv::M