SlideIO:一个用于读取医学图像的新Python库2025年1月5日 | 阅读6分钟 引言医学图像——由显微镜、扫描仪和其他设备生成的图像与普通图片不同。它们的大小是关键区别之一。这些图片可能相当大。如今,千兆字节大小的演示并不少见。维度的数量是另一个区别。几种生物图像格式支持三维和四维(体积和时间序列)。除了标准维度外,一些格式还提供扫描仪特定的特性,例如相位索引、旋转(用于从不同角度收集的数据)和焦距。 多千兆像素的图像无法使用标准的压缩技术进行编码。在使用 JPEG 或 PNG 等图像编解码器时,必须将整个图像保存到计算机内存中才能在屏幕上显示,甚至只能读取其中一小部分。生物格式使用缩放金字塔和分块技术来克服这些挑战。它使用的内存和处理能力最少,可以以任何比例读取图像的任何区域。一组不同大小的图像副本称为缩放金字塔。 ![]() Slideio 库的目的是通过利用医学图像的内在结构来尽可能高效地解释它们。Slideio 并不是第一个提供此类功能的库。在我进行图像分析实践的过程中,我广泛使用了各种库。然而,到目前为止,我还没有遇到一个能满足我所有图像分析需求的库。我决定自己做一个,它应该汇集我在这个领域的所有知识。 该库中有一个驱动程序架构。每个驱动程序支持一种或多种图像格式。第一个 slideio 版本提供四种驱动程序
Slideio 库的对象结构很简单 ![]() 图像驱动程序创建 slide 对象。单个图像文件(或文件夹,取决于图像类型)由 slide 对象表示。Slide 对象至少包含一个 Scene 对象,它是一个连续的栅格区域(二维图像、体积、时间序列等)。某些图像格式支持单个场景,例如单个组织扫描。使用某些格式可以在文件中存储多个组织区域。2D 场景的像素尺寸和分辨率均相同。如果场景是一个 3D 体积,那么其中的每个切片都具有相同的尺寸和分辨率。时间序列也一样。 下面的代码片段演示了如何使用“SVS”图像驱动程序打开一个 slide 图像元数据Slideio 库提供了多层图像信息。“raw_metadata”字段显示从图像中提取的未经修改的文本。文本的内容因文件类型而异。对于 Aperio SVS slide,它是从“Image Information”tiff 文件中提取的文本字符串。在这种情况下,Zeiss CZI 文件是一个包含所有文件元数据的 XML 文档。以下代码片段可用于从 Aperio SVS 文件中提取元数据 这是代码示例产生的输出 栅格访问栅格数据访问的主要对象是场景。它暴露以下详细信息
下面的代码片段检索场景名称、矩形和分辨率。 它会产生以下结果 图像高 19445 像素,宽 19919 像素。每个像素在 x 和 y 方向上均为 0.4962 mkm。图像中有三个通道。图像格式决定了生物图像中通道的含义。明场照片的颜色仅限于红色、绿色和蓝色。这些照片有三个 8 位通道。get_chanel_data_type 和 get_channel_name 函数提供对通道属性的访问。 输出 uint8 uint8 uint8 read_block 方法获取连续区域的像素值。当该方法不带参数运行时,将返回原始大小的整个场景。通常,由于尺寸过大,无法以原始比例读取整个图像。在这种情况下,应用程序有三种选择:它可以获取图像的一部分,或者将其缩小到合理的大小。下面是一个代码示例。将整个图像提取出来,并将其放大到 500 像素宽。应注意,当图像高度为零时,表示需要自动计算以保持 x 和 y 轴的比例相同。 ![]() 以下代码片段从图像中读取一个矩形区域,并将其宽度缩小到 500 像素。 ![]() 可以读取单个通道或一组通道 ![]() 通过附加的元组参数 slices 和 frames 可以读取体积和时间序列 代码 输出 (1000, 1000, 27) 代码 安装可以使用 pip 安装 slideio 库 目前仅支持 Windows 和 Linux 构建。 结论Slideio 是一款 Python 工具,用于解释医学图像。它允许读取整个幻灯片和幻灯片的特定区域。可以有效地缩小大型幻灯片。为了加速缩放过程,该模块使用图像的内部缩放金字塔。Slideio 除了 2D 演示文稿外,还可以处理时间序列和 3D 数据集。 该库与包括 opencv 在内的几种知名图像分析包协同工作,并将栅格作为 numpy 数组提供。 目前,它可以读取通用格式、Zeiss CZI 文件以及 Aperio SVS 和 AFI 文件。以下格式的驱动程序将很快提供
|
引言:在本教程中,我们将学习使用 Python 进行文本处理中的扩展缩写。文本预处理是 NLP 的主要步骤之一。清理我们的文本数据,以便将其转换为可分析的、可呈现的形式……
阅读 6 分钟
为给定数组中的每个元素查找更大的元素。在此教程中,我们将编写 Python 程序来为给定数组中的每个元素查找更大的元素。“更大元素”指的是给定元素 x 的第一个元素...
阅读 3 分钟
假设我们有一个字典。另外,我们还有两个词;让这些词是 A 和 B。在这个问题中,我们必须找到从 A 到 B 的最短链(如果存在),并返回这个最短链的长度。...
阅读9分钟
? 在 Python 中,用于处理正则表达式的 re 模块通常与 search() 方法相关联。您将使用正则表达式来搜索字符串中的模式。re.search() 函数会在字符串中搜索任何匹配正则表达式模式的地方。导入 re...
阅读 4 分钟
? Cx_Oracle 是一个强大的包,允许 Python 程序连接到 Oracle 数据库。无论您是开发应用程序还是执行数据库活动,在 Windows 计算机上安装 cx_Oracle 都至关重要。安装过程包括几个基本步骤,包括设置 Python、安装……
阅读 3 分钟
Python 中的 chess-board 包是一个轻量级且高效的库,用于处理棋盘表示和走子逻辑。它通过提供设置和修改棋盘位置、生成合法走子以及跟踪游戏状态的工具,使开发人员能够轻松地以编程方式管理和操作国际象棋游戏。
11 分钟阅读
数字景观的快速发展催生了用于数据提取、检查和 Web 开发的现代设备。无头 Chrome 就是这样一种现代工具,它改变了浏览报告和开发人员自动化工作流程。在本通讯中,我们将深入...
5 分钟阅读
? 简介 在浩瀚的编码世界中,布尔运算对于做出决策和检查对错至关重要。Python 是一种流行且适应性强的编码语言,它具有处理真或假值的不同方法。一个基本操作是获得一个相反的...
阅读 3 分钟
引言 在创新的 Web 开发领域,应用程序之间的互操作至关重要。Representational State Transfer (REST) API 已成为此类通信的主要媒介,HTTP 方法在此信息流中起着重要作用。在这些方法中,PUT 方法被证明是...
阅读 4 分钟
简介:在本教程中,我们将学习 Python 字符串中的 `removeprefix()` 方法。`removeprefix()` 函数删除前缀并返回剩余的字符串。如果未找到默认字符串,则返回原始字符串。它是在 Python 3.9.0 版中引入的。语法:语法是……
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India