什么网站免费建设,商丘网红有哪几个,唐山网站关键词优化,网站访问大小 计算流量医学图像的新型数据增强技术 CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想
论文链接#xff1a;https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf
大多数用于医学分割的数据增强技术最初是在自然图像上开… 医学图像的新型数据增强技术 CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想
论文链接https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf
大多数用于医学分割的数据增强技术最初是在自然图像上开发的没有考虑到医学图像整体布局标准固定的特点。
基于医学图像的特点作者开发了切割-拼接数据增强CS-DA方法这是一种用于医学图像分割的新型数据增强技术。
CS-DA通过将从不同原始医学图像中切割的不同位置分量拼接成新图像来增强数据集。
CS-DA的思想很简单
将原始医学图像以相同方式切割成多个组件然后从不同的原始图像中切割出不同位置的组件将它们拼接在一起形成新的图像。
假设有五张原始医学图像每张图像都代表不同的医学情境如X光片或MRI图像。
每张原始图像都被切割成四个相同大小的组件就像将图像分成四个拼图块一样。
现在我们可以创建新的图像通过从这些原始图像中选择不同位置的组件并将它们拼接在一起。
假设我们从第一张原始图像中选择了第一个组件从第二张原始图像中选择了第二个组件依此类推直到从第五张原始图像中选择了第五个组件。
这样我们就创建了一张新的图像它的组成部分来自不同原始图像的不同位置。
这个新图像会保持与原始图像相同的整体布局和外观因为每个组件都是从医学图像中切割出的并且它们有相似的对象或背景。
与传统的数据增强技术如Cla-DA不同CS-DA不需要对原始图像进行复杂的数学函数处理只需将组件按矩阵格式拼接起来。
而且CS-DA不会引入任何噪音或虚假信息到新图像中因为所有信息都来自于原始图像的合法组件。
更重要的是Cla-DA技术通过随机改变原始图像的信息来生成新图像这会引入虚假信息到新图像中。
相比之下CS-DA不会向原始图像引入任何噪音或虚假信息。
CS-DA创建的新图像中的所有信息都来自原始图像。
CScutting-splicing 切割-拼接
整体布局的一致性导致了不同医学图像中相同位置区域的互换性。
可以通过使用一个医学图像中的区域来替换另一个医学图像中相同位置的区域来创建新的医学图像。
新的医学图像具有与原始医学图像相同的整体布局并且新医学图像中的对象完整。
在分割任务中新的医学图像可以与原始医学图像混合在一起用于训练分割模型。 自然图像和医学图像之间的关键差异 自然图像和医学图像之间的关键差异这些差异在以下六个方面得到反映摄像机方向、对象姿势、对象位置、对象完整性、对象比例和对象类别。 摄像机方向 在自然场景中对摄像机的方向没有具体的要求可以从任何方向拍摄对象。例如如图1所示摄像机可以位于熊的对面或熊的下方。然而在临床医学中扫描仪或其他图像获取设备的方向是固定的。例如肺部X光图像都是在后前位进行扫描的。 对象姿势 自然场景中的对象在拍摄过程中可以处于任何姿势。例如在图1中熊可以玩球或游泳。而在扫描过程中患者必须保持特定的姿势。对于无法自控的年幼儿童放射科医生甚至会使用辅助设备或镇静剂来固定他们的身体。因此扫描的器官在医学图像上也保持特定的形状。 对象位置 在自然场景中摄影师会根据自己的布局思想来安排对象在自然图像中的位置。自然图像的布局设计没有固定的模式因此对象的位置总是随机的。在临床医学中放射科医生会调整扫描仪以确保器官位于图像的中心或特定位置。 对象完整性 自然场景复杂多变有时在对象和摄像机之间会有遮挡物阻止对象完全显示在自然图像中。例如图1中的熊的部分身体被池塘中的水阻挡。医学图像在更清洁的场景中获取。不允许在患者和扫描仪之间存在异常的遮挡物因此可以保证对象的完整性。 对象比例 自然图像中不记录像素大小信息因此无法通过自然图像中的对象区域来计算对象的实际大小。相反在医学图像中比例是基本信息通常在文件头中提供像素间距和切片厚度的信息这可以帮助我们将不同图像中的对象标准化到一个标准空间中。 对象类别 在自然图像的分割任务中对象的种类太多无法精细定义。因此对象被分配为粗略的类别。例如图1中的熊是一个粗略的类别可以被细化为棕熊或北极熊等。相反人体器官已经被明确定义医学图像中的每个分割区域都有明确的类别。
在上述六个方面自然图像具有很多可能性。
这些方面的不确定性使得自然图像变化多样。
因此包含相同类型对象的自然图像之间存在巨大差异。
另一方面医学图像在这六个方面受到标准扫描设备、经过良好训练的放射科医生以及严格遵守扫描规范的患者的限制。
因此在特定的分割任务中医学图像的整体布局是标准和固定的。
这一特点使得医学图像之间的整体布局保持一致。 CS-DA 步骤 当涉及到2D图像时通常有两个维度可以用于切割例如横向和纵向。
在图2a中可以将2D视网膜血管图像切割成两个、三个和四个组件具体取决于切割线的位置和数量。这些切割线将图像分割成不同的部分。
而在3D图像中通常有三个维度可以用于切割例如长度、宽度和高度。
可以将3D脑图像切割成两个、三个、四个和八个组件具体取决于切割线的位置和数量。这些切割线将3D图像分割成不同的体积或部分以便进行进一步的分析或处理。 基于医学图像的区域互换性本研究提出了CS-DA技术包括两个步骤切割图像成组件以及将组件拼接成新图像。 1) 切割图像成组件
在这一步骤中将原始图像切割成多个组件。每个切割线是垂直于图像的某个维度并穿过整个图像。同一维度中的n条切割线将图像分成(n1)个相等的组件。在2D图像中有两个可以切割的维度而3D图像有三个可以切割的维度。同一数据集中的所有图像都以相同的方式进行切割因此从每个图像中切割出的组件数量是相同的。同样的方式也适用于其分割对象的掩模。
2) 将组件拼接成新图像
这一步可以通过两种方法进行正常拼接NorS和对称拼接SymS。 原始图像的特定位置组件用于填充新图像的相同位置区域NorS 假设我们有两张原始医学图像每张图像都代表同一个器官的不同部分。在NorS方法中我们选择了第一张图像的特定位置的组件并将其用于填充第二张图像的相同位置。例如我们选择了第一张图像中的左侧肺部的组件并将其用于填充第二张图像中的左侧肺部区域。这样我们创建了一个新的医学图像它具有与原始图像相同的整体布局但使用了不同位置的组件。 原始图像的翻转组件用于填充新图像的对称位置区域SymS 假设我们有一张原始医学图像代表了一个具有对称结构的器官如肺部。在SymS方法中我们选择了原始图像中的特定位置的组件并将其翻转后用于填充新图像的对称位置。例如我们选择了原始图像中的左侧肺部的组件并将其翻转后用于填充新图像的右侧肺部区域。由于人体的器官通常具有左右对称性因此这种翻转操作是可行的从而保持了图像的整体布局和对称性。 上图展示了由CS-DA创建的一些自然图像和医学图像。
自然图像整体布局的多样性使新图像异常。
新自然图像中对象的完整性被破坏。
相比之下新医学图像看起来正常。
每个新医学图像都具有完整的对象。
这个过程允许利用医学图像的互换性来增加数据集的多样性从而提高分割模型的性能。 确定增强后的数据数量 假设我们有一个原始数据集其中包含两个不同的医学图像
图像 A 和图像 B。
每个原始图像都可以被切割成两个组件
左组件-L和右组件-R。 非对称情况使用NorS方法 原始数据集中有两个图像每个图像被切割成两个组件。因此每个原始数据集中有 2 * 2 4 个组件。使用NorS方法我们可以创建新图像其中组件可以来自不同的原始图像。例如我们可以将左组件-L从图像 A 和右组件-R从图像 B 组合在一起形成新图像 A-LB-R。这个过程可以生成 4 个不同的新图像A-LB-R、A-LA-R、B-LB-R 和 B-LA-R。因此增强后的数据集样本大小是 4。 对称情况使用SymS方法 同样原始数据集中有两个图像每个图像被切割成两个组件总共有 2 * 2 4 个组件。使用SymS方法我们可以创建新图像其中左组件可以是原始图像的左组件或原始图像的翻转右组件。这个过程可以生成更多的新图像因为对称性允许更多的组合。例如我们可以创建新图像 B-LA-R其中左组件来自图像 B 的左组件右组件来自图像 A 的右组件。SymS方法可以生成更多的新图像选择增强后的数据集样本大小是 NorS 方法的四倍即 4 * 4 16。
总结
确定增强后的数据集样本大小的方法 原始数据集大小 根据原始数据集中包含的图像数量来确定。 组件数量 根据每个原始图像可以切割成多少个组件来计算。 拼接方法 根据使用的拼接方法来调整样本大小。 非对称情况 如果使用NorS方法增强后的数据集样本大小等于原始数据集大小乘以组件数量。 对称情况 如果使用SymS方法增强后的数据集样本大小是NorS方法的四倍即原始数据集大小乘以组件数量乘以4。 代码复现
import cv2
import numpy as np# 定义NorS方法
def cs_da_nors(original_image, num_components):height, width, _ original_image.shapecomponent_width width // num_componentsnew_image np.zeros_like(original_image)for i in range(num_components):start_x i * component_widthend_x (i 1) * component_widthcomponent original_image[:, start_x:end_x, :]new_image[:, start_x:end_x, :] componentreturn new_image# 定义SymS方法
def cs_da_syms(original_image, num_components):height, width, _ original_image.shapecomponent_width width // num_componentsnew_image np.zeros_like(original_image)for i in range(num_components):start_x i * component_widthend_x (i 1) * component_widthcomponent original_image[:, start_x:end_x, :]if i % 2 1:component cv2.flip(component, 1) # 翻转组件new_image[:, start_x:end_x, :] componentreturn new_image# 使用NorS方法
original_image cv2.imread(original_image.png) # 假设加载原始图像
num_components 4# 保存所有生成图像到文件
for i in range(num_components):augmented_image_nors cs_da_nors(original_image, num_components)cv2.imwrite(faugmented_image_nors_{i}.png, augmented_image_nors)# 使用SymS方法
num_components 4# 保存所有生成图像到文件
for i in range(num_components):augmented_image_syms cs_da_syms(original_image, num_components)cv2.imwrite(faugmented_image_syms_{i}.png, augmented_image_syms)