这使用参考图像对图像执行保结构颜色归一化。
itk-spcn的Python项目详细描述
ITK颜色规范化
概述
此Insight Toolkit (ITK)模块使用参考图像对H & E图像执行保留结构的颜色规范化。该模块是C++的,也是打包的。 对于Python。在
H&E(hematoxylin和eosin)是 染色剂用于在组织学图像中给细胞的部分着色,通常用于医学诊断。苏木精是一种化合物 把细胞核染成紫蓝色。细胞外基质是粉红色的。 然而,紫蓝色或粉色的确切颜色可能因图像而异,这可以对图像进行比较 很难。此例程通过使用重新着色一个图像(提供给例程的第一个图像)来解决此问题 参考图像(提供给例程的第二个图像)的配色方案。技术要求 图像至少有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包,并为输入图像设置变量名
Python中的用法
下面的示例转换此输入图像
使用此参考图像的配色方案
生成这个输出图像
ITK的功能接口
您可以使用ITK的功能性的eager接口来选择每个步骤的执行时间,如下所示。这个
input_image
和reference_image
被加工成{reference_image
的配色方案。color_index_suppressed_by_hematoxylin
和
color_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
和{
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
的缓存分析,这
节省大约一半的处理时间。在
- 项目
标签: