前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >医学图像处理案例(三)——用分水岭算法分割重叠细胞

医学图像处理案例(三)——用分水岭算法分割重叠细胞

作者头像
医学处理分析专家
发布2020-06-29 12:00:57
1.9K0
发布2020-06-29 12:00:57
举报
文章被收录于专栏:最新医学影像技术

针对重叠的图像分割是非常具有挑战的,正好之前一起工作过的同事跟我一起讨论了关于这方面的问题,我首先想到的就是用分水岭来进行分割。

下面我将结合他提供的细胞图像来实现分水岭分割算法的实现。

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::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(kernelsize, kernelsize));

cv::morphologyEx(src, result, cv::MORPH_CLOSE, element, cv::Point(-1, -1));

3、生成标记区域

首先要生成前景区域,代码实现:

cv::distanceTransform(src, dist, CV_DIST_L2, 5);

cv::normalize(dist, dist, 0, 255, cv::NORM_MINMAX);

double minv = 0.0, maxv = 0.0;

cv::minMaxIdx(dist, &minv, &maxv);

cv::Mat sure_fg;

cv::threshold(dist, sure_fg, 0.4*maxv, 255, CV_THRESH_BINARY);

sure_fg.convertTo(sure_fg, CV_8U);

cv::imwrite("sure_fg.jpg", sure_fg);

然后生成背景区域,代码如下:

cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(kernelsize, kernelsize));

cv::morphologyEx(src, result, cv::MORPH_DILATE, element, cv::Point(-1, -1));

将上面两个结果相减得到未确定区域。

根据分水岭算法的特点,我们要把未确定区域设置为波谷值(例如0),而之前分割中背景也是0,因此通过连通域分析,我们将背景的值设置成1。代码如下:

cv::Mat labelmatImage = cv::Mat(dist.size(), CV_32SC1);

int label = cv::connectedComponents(sure_fg, labelmatImage, 8);

labelmatImage = labelmatImage + 1;

for (int i = 0; i < labelmatImage.rows; i++)

{

for (int j = 0; j < labelmatImage.cols; j++)

{

if ((int)unkonwn.at<uchar>(i, j) == 255)

{

labelmatImage.at<int>(i, j) = 0;

}

}

}

4、用分水岭算法进行分割

opencv自带的分水岭算法。代码如下:

cv::watershed(src, markers);

最后的效果只能是差强人意吧,大家如果有更好的方法,欢迎一起交流学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 最新医学影像技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档