这使用参考图像对图像执行保结构颜色归一化。

itk-spcn的Python项目详细描述


ITK颜色规范化

Build, test, package statusPyPI VersionApache 2.0 LicenseDOIBinder

概述

Insight Toolkit (ITK)模块使用参考图像对H & E图像执行保留结构的颜色规范化。该模块是C++的,也是打包的。 对于Python。在

H&E(hematoxylineosin)是 染色剂用于在组织学图像中给细胞的部分着色,通常用于医学诊断。苏木精是一种化合物 把细胞核染成紫蓝色。细胞外基质是粉红色的。 然而,紫蓝色或粉色的确切颜色可能因图像而异,这可以对图像进行比较 很难。此例程通过使用重新着色一个图像(提供给例程的第一个图像)来解决此问题 参考图像(提供给例程的第二个图像)的配色方案。技术要求 图像至少有3种颜色,如红色、绿色和蓝色(RGB)。在

保留结构的颜色规范化是在Vahadane et al., 2016中描述并在Ramakrishnan et al., 2019中修改的技术。其想法是将图像像素的颜色建模为接近纯的颜色 白色,通过光吸收模型以特定颜色的方式降低强度,该模型依赖于 苏木精和伊红的含量。Non-negative matrix factorization用于每个分析图像 同时得出每个像素的苏木精和伊红染色量和图像范围内的有效颜色 每个污点。在

ITK中的实现通过选择初始估计来加速非负矩阵分解 利用模拟Arora et al., 2013中呈现并在Newberg et al., 2018中修改的技术的颜色吸收特性。这种方法为非负矩阵找到了一个很好的解决方案 因式分解首先将其转化为云中一组点的凸壳问题。在

insightsoftwarecomportium/ITKColorNormalization的首席开发人员是Lee Newberg。在

Python安装

{a1}和所有依赖项都可以轻松安装。轮子已经为macOS,Linux, 以及Windows和Python的几个版本,3.5、3.6、3.7和3.8。如果您不希望安装 在当前的Python环境中,您应该首先创建并激活一个Python virtual environment (venv)来工作。然后,从命令行运行以下命令:

pip install itk-spcn

启动python,导入itk包,并为输入图像设置变量名

^{pr2}$

Python中的用法

下面的示例转换此输入图像

Input image to be normalized

使用此参考图像的配色方案

Reference image for normalization

生成这个输出图像

Output of spcn_filter

ITK的功能接口

您可以使用ITK的功能性的eager接口来选择每个步骤的执行时间,如下所示。这个 input_imagereference_image被加工成{},这是{},它与 reference_image的配色方案。color_index_suppressed_by_hematoxylincolor_index_suppressed_by_eosin参数是可选的,如果input_image像素类型是RGB或RGBA。给你 表示苏木精最抑制的颜色通道为0(对于RGB和RGBA像素为红色),并且 曙红最抑制的颜色是1(对于RGB和RGBA像素,这是绿色);这些是RGB和 RGBA像素。在

input_image=itk.imread(input_image_filename)reference_image=itk.imread(reference_image_filename)eager_normalized_image=itk.structure_preserving_color_normalization_filter(input_image,reference_image,color_index_suppressed_by_hematoxylin=0,color_index_suppressed_by_eosin=1)itk.imwrite(eager_normalized_image,output_image_filename)

ITK管道接口

或者,您可以使用ITK管道基础设施,它在调用Update()或{}之前等待 正在执行管道。函数itk.StructurePreservingColorNormalizationFilter.New()使用其参数来 确定过滤器的像素类型;实际图像不在此处使用,而是随 spcn_filter.SetInput(0, input_reader.GetOutput())呼叫。如上所述 SetColorIndexSuppressedByHematoxylin和{}是可选的,如果像素类型是RGB或 RGBA。在

input_reader=itk.ImageFileReader.New(FileName=input_image_filename)reference_reader=itk.ImageFileReader.New(FileName=reference_image_filename)spcn_filter=itk.StructurePreservingColorNormalizationFilter.New(Input=input_reader.GetOutput())spcn_filter.SetColorIndexSuppressedByHematoxylin(0)spcn_filter.SetColorIndexSuppressedByEosin(1)spcn_filter.SetInput(0,input_reader.GetOutput())spcn_filter.SetInput(1,reference_reader.GetOutput())output_writer=itk.ImageFileWriter.New(spcn_filter.GetOutput())output_writer.SetInput(spcn_filter.GetOutput())output_writer.SetFileName(output_image_filename)output_writer.Write()

请注意,如果spcn_filter再次与不同的input_image一起使用,例如来自不同的读取器

spcn_filter.SetInput(0,input_reader2.GetOutput())

但是reference_image是不可更改的ged则过滤器将使用其对reference_image的缓存分析,这 节省大约一半的处理时间。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
添加到Linkedlist后int与Integer的java比较不起作用   服务器启动时来自tomcat的java通知回调   在java中如何将float转换为double?   使用Java数据Bean连接到Siebel时出错   我如何反对像Java这样的强类型语言中的Ducktyping呢?   运行vert的json。x与java安全管理器   java大O表示法解释嵌套while循环   配置My gradle java项目找不到log4j2。json   验证我需要编写一个包含特殊字符和0到9的数字的java字符串来验证密码   java Univocity解析器:从这里调用函数无效:parserSettings。选择字段(*some_function*);   java在MVC上应用TDD   运行时的java按钮开关   Java8:如何流式处理int数组、提取低位字节和创建字节数组   linux无法在从Java启动的子进程中为SIGQUIT设置信号处理程序   Gradle具有真正混合的java和scala源代码