生物医药领域当中,涉及到的细胞分割问题一直是视觉研究的重点和难点之一,虽然以深度学习为代表的分割模型取得了一定的效果,但分割网络会涉及到人工标注和GPU等高成本的资源占用,所以探索便捷、高效的分割算法进行一直是解决细胞分割的核心。今天我就基于自己的尝试,分享两种方法。

  1. 生物细胞图像

src = cv2.imread(img_Path)

src = cv2.resize(src, dsize=None, fy=0.5, fx=0.5)

cv2pil(src)

如图,动物细胞主要由细胞质(浅蓝色或浅红色)和细胞核(深蓝色)构成。我们看到的生物细胞颜色会有所不同,有浅蓝色的和浅红色的,颜色不同是由于细胞质和染色液结合后发生了不同的显色反应(主要是由于细胞内环境及PH差异引起),这也反应了细胞所处的阶段或生理转态不同,中间的深蓝色小点就是细胞核。

2.细胞核分割1:

针对这样的细胞图像,我们通过单一方法完成细胞分割,即便分割成功也不太可能有很强的的鲁棒性,由于时间关系,我本次简单分享2种细胞核分割方法。

细胞区域分割:

我们先拿到hsv图像, 完成细胞区域分离:

img_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

img_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

img_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

img_hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

cell_threshold, bw_cell = cv2.threshold(img_gray, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV)

img_mask_mean = max(cv2.mean(img_gray, bw_cell)[0], 180.0)

fig = plt.figure(figsize=(15,8))

plt.subplot(131), plt.imshow(img_gray, 'gray'), plt.xticks([]), plt.yticks([])

plt.subplot(132), plt.imshow(img_hsv, 'gray'), plt.xticks([]), plt.yticks([])

plt.subplot(133), plt.imshow(bw_cell, 'gray'), plt.xticks([]), plt.yticks([])

plt.show()

### 获取细胞区域

my_threshold = img_mask_mean - bg_gray_r

_, bw_cell1 = cv2.threshold(img_gray, my_threshold, 1, cv2.THRESH_BINARY_INV)

element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))

bw_cell2 = cv2.morphologyEx(bw_cell1, cv2.MORPH_OPEN, element)

fig = plt.figure(figsize=(15,8))

plt.subplot(131), plt.imshow(bw_cell, 'gray'), plt.xticks([]), plt.yticks([])

plt.subplot(132), plt.imshow(bw_cell1, 'gray'), plt.xticks([]), plt.yticks([])

plt.subplot(133), plt.imshow(bw_cell2, 'gray'), plt.xticks([]), plt.yticks([])

plt.show()

细胞区域初步分割结果:

_,bw_nucleus_s = cv2.threshold(img_s, 10, 255, cv2.THRESH_BINARY)

bw_nucleus = cv2.bitwise_and(bw_nucleus, bw_nucleus_s))

fig = plt.figure(figsize=(15,8))

plt.subplot(121),plt.imshow(bw_nucleus_s, 'gray') , plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(bw_nucleus, 'gray'), plt.xticks([]),plt.yticks([])

plt.show()

最终细胞核分割定位效果:左边是原图,右边是细胞核行为结果:

例子1:

例子2:

可以看到效果很得不错的。当然这里面还有很大的优化空间。

2.细胞核分割方法2:

img_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

b,g,r = cv2.split(src)

cv2pil(np.hstack((img_gray, g)))

左边为原始灰度图像, 右侧为g通道图像,由于图像本身的特征,我们选择g通道进行处理。

 

你试过吗?图像(细胞)分割相关推荐

  1. matlab实现细胞分割,MATLAB图像处理实验——细胞图像的分割和计数

    代码戳这里 1. 实验内容 本实验为使用MATLAB编写的细胞图像分割及计数系统,实现了对图像内细胞的计数,以及对每个细胞周长和面积的测量,并分别展示了分割后的每个细胞的图像. 实验步骤共分为图像预处 ...

  2. 细胞图像自动分割与计数软件简介

    1. 细胞图像分割的现状与意义 应用背景:对切片图像处理,自动分割出单个细胞,统计细胞个数.形状.分布等特征参数. 实际意义: 降低科研人员工作强度: 提高细胞分割精度: 从根本上提高统计分析工作的效 ...

  3. 使用大规模数据注释和深度学习对具有人类水平性能的组织图像进行全细胞分割

    使用大规模数据注释和深度学习对具有人类水平性能的组织图像进行全细胞分割 摘要 绪论 Mesmer 2.1Mesmer是一种用于精确全细胞分割的深度学习算法 2.2Mesmer实现了人类级的分割性能 2 ...

  4. 基于FCN,U-Net的深度学习医学影像分割算法(细胞分割算法)以及传统算法分析

    本博文主要分析了基于传统计算机视觉的细胞分割算法和基于深度学习的细胞分割算法.主要针对医学影像分割算法.包括了FCN全卷积网络的细胞分割效果,U-Net细胞分割效果.查阅了采用深度学习分割医学影像的几 ...

  5. 深度卷积网络CNN与图像语义分割

    转载请注明出处:  http://xiahouzuoxin.github.io/notes/html/深度卷积网络CNN与图像语义分割.html 级别1:DL快速上手 级别2:从Caffe着手实践 级 ...

  6. Pytorch实现U-net细胞分割

    网络结构 U-net是MICCAI2015的专门针对医学影像分割设计的网络结构,直到今天还是很好用,效果任然很好.网络的左半部分是Encode 部分,此部分将输入图像逐步下采样得到高层的语义信息.右半 ...

  7. 图像目标分割_3 SegNet + U-Net

    6.3.1 SegNet背景 SegNet的主要动机是场景理解的应用. 难点:因此它在设计的时候考虑了要在预测期间保证内存和计算时间上的效率.分割的任务其实应用非常地广,需要理解各个像素之间的关系,比 ...

  8. Unet实现细胞分割

    目的:实现细胞分割 数据集:isbi挑战赛的数据,只有30张512x512的image和label 思路: 读取数据,将数据转换成 30x512x512x1格式: 由于数据太少,所以进行数据增强:(注 ...

  9. 【细胞分割】基于阙值+边缘+形态学+种子点图像分割matlab源码含 GUI

    一.简介 数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来.数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算. 开运算就是先腐蚀再膨胀, ...

  10. 图像语义分割网络FCN(32s、16s、8s)原理及MindSpore实现

    一.FCN网络结构 全卷积网络(Fully Convolutional Networks),是较早用于图像语义分割的神经网络.根据名称可知,FCN主要网络结构全部由卷积层组成,在图像领域,卷积是一种非 ...

最新文章

  1. Swift与LLVM-Clang原理与示例
  2. 漫话:如何给女朋友解释什么是 Git 和 GitHub?
  3. 精通C++之前,你必须知道的几件事!
  4. 模拟进程创建、终止、阻塞、唤醒原语_操作系统基础8-进程及进程控制
  5. BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)
  6. Bootstrap 弹出提示插件Popover 的选项
  7. oracle 中的参数 optimizer_mod的各个参数的意义
  8. python 使用ElementTree解析xml
  9. 【信息系统项目管理师】第8章-项目质量管理 知识点详细整理
  10. Spring Security 之多AuthenticationProvider认证模式实现
  11. Flash制作空战游戏
  12. vscode推荐编程字体
  13. 《自拍教程20》ffmpeg 音视频图像转码工具
  14. Win10系统启动Markdown Pad2 报‘Awesomium.Windows.Controls.WebControl’
  15. 盗火:硅谷、海豹突击队和疯狂科学家如何变革我们的工作和生活
  16. php的rps,如何理解RPS的本质
  17. 区块链系统开发-区块链交易系统开发-核心技术
  18. C语言中pow()指数函数的使用问题简述
  19. 记一次rk平台热点打开流程追踪记录
  20. linux cp 性能,linux性能监控以及优化之CPU

热门文章

  1. 要点回顾|2020PGConf.Asia大会精彩落幕,一文带您要点回顾
  2. (原创)通过DrawingCache截取View图片
  3. 电路基础知识之什么是共模电感/共模信号/差分信号?
  4. 什么是openshift
  5. css实现文字或者div盒子水平垂直居中的方法
  6. 网站制作中关于版权声明的写法
  7. Cadence教程4——环形振荡器
  8. mysql慢日志查询的阈值_mysql慢日志查询
  9. ZeroBrane Studio远程调试Cocos2d-x的Lua脚本
  10. 微信小程序 瀑布流布局 终极解决方案