(病理图像质控)分割病理图像(whole slide images,WSI)中包含组织的区域,去掉空白区域
文末有代码链接!!!!!
修改 2023-03-14
偷空写个帖子。
在处理全病理切片(WSI)的时候,经常会碰到一个问题。就是整个WSI很大,其中有很多空白的地方,深度学习或者传统的图像处理都不需要处理的,如何把这些空白区域去掉。
用的最多的是传统的灰度图OTSU分割,简单的说就是:
import cv2
import numpy as npimport skimage
import skimage.morphology
#删除小空洞,可以看我另一片文章。
def remove_small_hole(mask, h_size=10):"""remove the small holeArgs:mask (_type_): a binary mask, can be 0-1 or 0-255h_size (int, optional): min_size of the holeReturns:mask"""value = np.unique(mask)if len(value)>2:return Nonepre_mask_rever = mask<=0pre_mask_rever = skimage.morphology.remove_small_objects(pre_mask_rever, \min_size=h_size)mask[pre_mask_rever<=0] = np.max(mask)return maskgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Remove noise using a Gaussian filter
gray = cv2.GaussianBlur(gray, (35,35), 0)
# Otsu thresholding and mask generation
ret, thresh_otsu = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 删除小的组织区域thresh_otsu = remove_small_hole(thresh_otsu, min_size*4)thresh_otsu = 255-thresh_otsu# 删除小的空白区域thresh_otsu = remove_small_hole(thresh_otsu, min_size)
可以得到类似下列的效果:
但这种方式只能按照灰度值来提取组织区域,无法去除一些污染。比如说下面的:
类似的污染是由于临床医生为了方便查看,用马克笔画上去的。还有很多制片,扫描时导致的污染,在WSI处理的时候都非常普遍,用灰度的阈值很难去除。
那就有第二种方法。这个是来源于 Anant Madabhushi团队开发的工具,叫HistoQC。论文题目如下:
HistoQC: An Open-Source Quality Control Tool for Digital Pathology Slides
github上有开源的代码:
代码
其主要原理是利用图像的一些传统特征,比如说灰度直方图,熵值啥的对像素进行分类,从而判别是组织区域还是污染或者空白,论文中的效果如下:
这个工具在一些质量较好的片子上效果还是很不错的,而且速度还是比较快的。但我在别的肿瘤上用的时候效果就很让我失望,会删掉不少组织区域。
可以看到不少组织区域都被剔除了。
然后最近我用了第三种方法。
我自己挑了不少组织区域,空白和一些污染区域的图像,一共3万个patch左右,训练了一个分类模型。只分两类,一类是背景(包括空白和污染),另一类是组织。用的是resner34网络,训了10个epoches,大概10分钟吧(用的3090,所以比较快),就能得到一个很不错的分割结果。
现在的分割结果是锯齿形边缘,看着不太舒服,我们再结合文章一开始说到的阈值分割,就能得到一个更加好看的分割结果:
制片时的污渍都被很好的剔除了。
我自己的代码链接:Github。
(病理图像质控)分割病理图像(whole slide images,WSI)中包含组织的区域,去掉空白区域相关推荐
- 图像语义分割_图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积...
论文地址 :Rethinking Atrous Convolution for Semantic Image Segmentation 论文代码:Github链接 1. 摘要 文章主要的工作: 使用空 ...
- matlab 图像语义分割,笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)...
图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...
- 图像语义分割python_图像语义分割出的json文件和原图,用plt绘制图像mask
1.弱监督 由于公司最近准备开个新项目,用深度学习训练个能够自动标注的模型,但模型要求的训练集比较麻烦,,要先用ffmpeg从视频中截取一段视频,在用opencv抽帧得到图片,所以本人只能先用语义分割 ...
- 图像语义分割python_图像语义分割 —利用Deeplab v3+训练VOC2012数据集
原标题:图像语义分割 -利用Deeplab v3+训练VOC2012数据集 前言: 配置:windows10 + Tensorflow1.6.0 + Python3.6.4(笔记本无GPU) 源码: ...
- 图像语义分割python_图像语义分割ICNET_飞桨-源于产业实践的开源深度学习平台...
图像语义分割-ICNET 类别 智能视觉(PaddleCV) 应用 自动驾驶 室内导航 医学图像诊断 穿戴设备 虚拟现实与增强现实 无人机 模型概述 ICNet 主要用于图像实时语义分割,能够兼顾速度 ...
- 图像阈值分割matlab,图像阈值分割Matlab版 | 学步园
图像阈值分割是一个非常简单的 而现在遇到的阈值分割却需要完成如下的多个功能: 1.基本的阈值分割: 大于阈值,则认为是目标:小于,则认为是背景 2.像素值较低才被认为是目标,即要把不等号反向 对图像像 ...
- 笔记:基于DCNN的图像语义分割综述
写在前面:一篇魏云超博士的综述论文,完整题目为<基于DCNN的图像语义分割综述>,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感 ...
- 从特斯拉到计算机视觉之「图像语义分割」
说起特斯拉,大家可能立马会想到今年5月份发生在特斯拉Model S自动驾驶上的一宗夺命车祸.初步的调查表明,在强烈的日照条件下,驾驶员和自动驾驶系统都未能注意到牵引式挂车的白色车身,因此未能及时启动刹 ...
- 深度学习-Tensorflow2.2-图像处理{10}-图像语义分割-23
图像语义分割简介 图像语义分割网络结构-FCN 上采样 代码实现 import tensorflow as tf import matplotlib.pyplot as plt %matplotlib ...
最新文章
- 刷新记录,算法开源!字节跳动获人体姿态估计竞赛双冠 | CVPR 2019
- Gtk+2 Hello World:从源码到打包发布
- Tarjan的求双连通分量算法
- 【数据结构与算法】之深入解析“课程表III”的求解思路与算法示例
- 电脑知识:电脑如何连接电视,在电视上显示?
- java犀牛是什么意思_深入浅出Rhino:Java与JS互操作
- 真正的OKR是什么?
- 使用JDBC来连接数据库
- 注解形式控制器配置(3)
- 详细分析GitLab CE 已遭在野利用漏洞 (CVE-2021-22205)
- Codevs 1215 迷宫
- php import mdf,excel表格怎么导入数据库数据格式转换-已有excel表格导入sql server生成*.mdf *.ldf文件......
- setsockopt()改善socket网络程序的健壮性
- 银河麒麟高级服务器操作系统V10下载安装及安装docker
- “二清”是电商行业在支付清算领域中普遍存在的现实状况?
- @Valid注解的使用---SpringMvc中的校验框架@valid和@validation的概念及相关使用
- dann的alpha torch_pytorch BiLSTM+CRF代码详解
- 阿里云服务器+腾讯域名进行域名解析
- 江敏:数据中台驱动下的企业创新升级
- 不限流量 全网CDN图床 图床API_聚合图床