精华内容
下载资源
问答
  • Matlab—影像分析进阶

    2019-10-01 21:52:40
    上图是一个米的影像,这张图片里有很多的米,现在我们的问题是,这里面有多少米,他们的大小是多少? graythresh() & im2bw() 要回答上述两个问题,首先要做的是对影像进行预处理,第一步就是对图像进行阈值化...

    在这篇文章里面我们要做的事情全部都围绕两个问题,一个图像当中有多少个 xxx,他们的大小是多少,举个例子

    上图是一个米的影像,这张图片里有很多的米,现在我们的问题是,这里面有多少米,他们的大小是多少?

    graythresh() & im2bw()

    要回答上述两个问题,首先要做的是对影像进行预处理,第一步就是对图像进行阈值化处理。所谓阈值化处理就是当灰度值低于一个值(阈值)时,让其成为一个小的值,当灰度值大于一个值(阈值)时,让其成为一个大的值,即实现了阈值分割,这样图像就黑白分明,对比度增大

    所以我们首先要找到阈值,才能进行阈值化处理,matlab 为我们提供了两个函数:

    1. graythresh():使用最大类间方差法找到图片的一个合适阈值,其调用格式为:level = graythresh()
    2. im2bw():使用阈值变换法把灰度图像转换成二值图像,所谓二值图像就是只有0(纯黑)、255(纯白),其调用格式为:bw = im2bw(I,level),其中 I 是原图像对应矩阵,level 是阈值
    I = imread('rice.png');
    level = graythresh(I);
    bw = im2bw(I,level);
    subplot(1,2,1);imshow(I);
    subplot(1,2,2);imshow(bw);
    


    看上面的图,其实还没有达到想要的效果,因为有的米在处理的时候直接消失了,还有的变成了很多小颗粒,这些都会影响我们的结果。究其原因,原图的背景本身就不是很均匀,中间部分比较亮,下半部分比较暗,所以我们要想办法去掉背景(background subtraction)

    background subtraction

    要想去掉背景,首先得把背景分离出来,这里用到一个函数imopen()

    I = imread('rice.png');
    subplot(1,3,1);imshow(I);
    BG = imopen(I,strel('disk',15));
    subplot(1,3,2);imshow(BG);
    I2 = imsubtract(I,BG);
    subplot(1,3,3);imshow(I2);
    


    现在就可以将去掉背景以后的影响在做阈值化处理

    下面我们就是要想办法让计算机去“数”有多少颗米,这说起来可能比较难,但是我们先分析图上,怎么样算是一颗米,不妨看一下 bw 的矩阵

    因为矩阵太大,所以我随便节选了一个部分,经过阈值化处理之后,矩阵内只有 0 和 1,0 表示黑,1 表示白,我们的影像也是这样,米是白的,所以我们可以看到,在矩阵中,连续的一段区域内都是 1,也就表示这是一颗米,当然这个类似于搜索的算法,不需要我们写,matlab 为我们提供了函数bwlabel

    bwlabel()

    调用格式:L = bwlabel(bw,n),返回一个和 bw 大小相同的矩阵 L,包含了标记 bw 中每个连通区域的类别标签,这些标签的值为 1、2…num(连通区域的个数),n 的值为 4 或 8,表示是按 4 连通寻找还是按 8 连通寻找。4 连通是指,如果像素的位置在像素相邻的上、下、左、右,则认为他们是连通的。8 连通是指,如果像素的位置在像素相邻的上、下、左、右、左上角、左下角、右上角、右下角,则认为他们是连通的

    I = imread('rice.png');
    BG = imopen(I,strel('disk',15));
    I2 = imsubtract(I,BG);
    level = graythresh(I2);
    bw = im2bw(I2,level);
    [labeled,num] = bwlabel(bw,8);
    

    计算出来的结果,num 是 99,所以图上一共有 99 颗米

    label2rgb()

    label2rgb()函数是将一个影像转换成rgb彩色

    I = imread('rice.png');
    BG = imopen(I,strel('disk',15));
    I2 = imsubtract(I,BG);
    level = graythresh(I2);
    bw = im2bw(I2,level);
    [labeled,num] = bwlabel(bw,8);
    rgb_label = label2rgb(labeled);
    imshow(rgb_label)
    

    bwselect()

    这个函数能够让用户与影像产生交互

    I = imread('rice.png');
    BG = imopen(I,strel('disk',15));
    I2 = imsubtract(I,BG);
    level = graythresh(I2);
    bw = im2bw(I2,level);
    obj = bwselect(bw);
    imshow(obj)
    

    把鼠标移到图上,随便点击几颗米,然后摁一下鼠标右键,图上就会只剩你点击的几颗米

    展开全文
  • 为研究各种重采样方法的不同特点,采用比较分析法,在充分分析最邻近内插法、双线性内插法和三次卷积法数学原理的基础上,对3种方法的实现效果以及程序耗时进行了分析.结果表明:采用最合适的影像重采样算法进行几何校正...
  • DLTK,即 医学成像的深度学习工具包 ,扩展了 TensorFlow, 使针对生物医学影像的深度学习成为可能。此工具包提供了专用运算与函数、模型实现、教程(如本博客中所用)和典型...什么是生物医学影像分析?为什么需...

    DLTK,即 医学成像的深度学习工具包 ,扩展了 TensorFlow, 使针对生物医学影像的深度学习成为可能。此工具包提供了专用运算与函数、模型实现、教程(如本博客中所用)和典型应用的代码示例。

    网站:https://dltk.github.io;

    来源:https://github.com/DLTK/DLTK;

    概述

    什么是生物医学影像分析?为什么需要这种分析?

    生物医学影像是在不同尺度(即微观、宏观等)下对人体进行的测量。它们具有多种成像模式(如 CT 扫描仪、超声机等)并测量人体的物理特性(如放射强度、对 X 射线的不透明度)。这些影像由临床任务(如诊断)的领域专家(如放射科医师)解释并对医生的决策具有重大影响。

    9fb802d713241e1624e7a6343806885df3c50740

    医学影像示例(从左上方到右下方):多序列脑部 MRI:T1 加权、T1 反转恢复和 T2 FLAIR 通道;全身拼接 MRI;平面心脏超声;胸部 X 光片;心脏电影 MRI

    生物医学影像通常为体积影像 (3D),有时还会加上时间维度 (4D) 和/或多个通道 (4-5D)(如多序列 MR 影像)。生物医学影像中的差异与自然影像(如照片)中的差异完全不同,因为临床方案的目的是对影像的采集方式进行分层(例如,患者平躺、头部保持正直,等等)。在影像分析过程中,我们的目标是发现细微差异(即一些小区域表明发现异常)。

    为什么采用计算机视觉和机器学习?

    长期以来,计算机视觉方法一直用于自动分析生物医学影像。近年来,随着深度学习的出现,许多其他机器学习方法被取代,因为深度学习免去了创建手工工程特征的必要,从过程中消除了一个关键的误差来源。此外,完全采用 GPU 加速的网络可以实现快速推断,让分析的数据量得到前所未有的增加(例如,10⁶ 个受试者影像)。

    我们能否直接使用深度学习库进行生物医学成像?为什么要创建 DLTK?

    之所以要创建 DLTK ,是因为要提供开箱即用并特定于该领域的专业工具。 尽管许多深度学习库向开发者公开了低级运算(如张量乘法等),但许多用于体积影像的较高级别专用运算却并未公开(例如,可区分的 3D 上采样层等),并且由于影像的其他空间维度,我们可能会遇到内存问题(例如,假设影像尺寸为 512x512x256 体素,那么以 float32 格式存储包含 1000 个 CT 影像的数据库的单个副本将需要大约 268 GB)。由于采集的性质不同,一些影像需要特殊的预处理(例如,强度归一化、偏置场校正、去噪、空间归一化/配准等)。

    文件格式、头和读取影像

    虽然许多成像模式供应商都按照 DICOM 标准格式制作影像并在一系列 2D 切片中保存卷,许多分析库还是依赖于更适合计算和与医学影像连接的格式。我们使用的是 NifTI (或 .nii 格式),这种格式最初开发用于脑部成像,但广泛用于 DLTK 和本教程中的大多数其他体积影像。这种格式和其他格式保存的内容是重建影像容器并将其在物理空间中定位的必要信息。

    为此,它需要专用头信息,我们将对用于深度学习的一些属性进行介绍:

    尺寸和大小存储有关如何重建影像的信息(例如,使用大小向量将体积分解为三维)

    数据类型

    体素间距(也是体素的物理尺寸,通常以毫米为单位)

    物理坐标系原点

    方向

    为什么这些属性很重要?网络将在体素空间中进行训练,这意味着我们将创建形状和尺寸为 [batch_size, dx, dy, dz, channels/features] 的张量并将其提供给网络。网络将在该体素空间中进行训练并假设所有影像(包括未见过的测试影像)在该空间中归一化或者可能有需要泛化的问题。在该体素空间中,特征提取器(如卷积层)将假设体素尺寸各向同性(即,在每个维度中均相同)并且所有影像以相同的方式定向。

    然而,由于大多数影像描述的都是物理空间,我们需要从该物理空间转换为常见的体素空间:

    如果所有影像均以相同的方式定向(有时我们需要进行配准以在空间内归一化影像:请参见 MIRTK),我们可以通过以下公式计算从物理空间到体素空间的缩放转换:

    phys_coords = origin + voxel_spacing * voxel_coord

    所有上述信息均为 .nii 头文件中存储的向量。

    读取 .nii 影像:可通过一些库读取 .nii 文件并访问和解析头信息以获得 numpy 阵列格式的重建影像容器。我们选择的是 SimpleITK,这是 ITK 库的一种 python 包装器,可用于导入额外的影像过滤器以进行预处理和其他任务。

    数据 I/O 注意事项

    根据训练数据库的大小,可通过几种不同方法将 .nii 影像数据提供给网络图。每种方法在速度方面都有特定的权衡,并且在训练期间可能成为瓶颈。我们将介绍并解释以下三个选项:

    在内存和馈送字典中:

    我们可以创建一个指向网络图的 tf.placeholder 并在训练期间通过 feed_dict 提供。我们从磁盘读取所有 .nii 文件,在 python 中处理文件(参见 load_data())并将所有训练示例存储在内存中,通过以下方式提供:

    TLDR:此直接法通常速度最快且最容易实现,因为它避免了从磁盘连续读取数据,但需要在内存中保留整个训练示例(和验证示例)数据库,这对于较大的数据库或影像文件并不可行。

    使用 TFRecords 数据库:

    对于有关体积影像的大多数深度学习问题,训练示例数据库太大而无法存入内存。 TFRecords 格式允许序列化训练示例并将其存储在磁盘上,支持快速写访问(即并行数据读取):

    此格式可以直接与 TensorFlow 连接并且可以直接集成到 tf.graph 中的训练循环中:

    TLDR: TFRecords 可快速访问磁盘文件,但需要为整个训练数据库另外存储一个副本。如果我们要使用几 TB 大小的数据库,这种方法可能会让人望而却步。

    使用原生 python 生成器:

    最后,我们可以使用 python 生成器创建一个 read_fn() 以直接加载影像数据…

    并使用 tf.data.Dataset.from_generator() 将示例排队:

    TLDR: 这种方法避免了额外创建影像数据库副本,但速度要比 TFRecords慢得多,因为生成器不能并行读取和映射函数。

    速度基准测试以及选择方法

    我们运行了上述三种方法向 TensorFlow 读取 .nii 文件,并比较了加载和提供固定大小的示例数据库所需的时间。所有代码和结果都可以在上文找到。

    显而易见,最快的方法是通过占位符从内存中提供,时间为 5.6 秒,其次是 TFRecords ,时间为 31.1 秒,最后是使用 python 生成器的未优化磁盘读取,时间为 123.5 秒。然而,只要训练期间的前向/后向传递是计算瓶颈,数据 I/O 的速度就可以忽略不计。

    数据归一化

    与自然影像一样,我们也可以对生物医学影像数据进行归一化,但方法可能略有不同。归一化的目的是消除数据中的一些已知差异(例如,受试者姿势或影像对比度不同等),从而简化对我们感兴趣的细微差异的检测(例如,存在病变)。本文将介绍最常见的归一化形式:

    体素强度归一化:

    这种形式高度依赖于采集数据所用的成像模式。典型的零均值单位方差归一化是定性影像的标准(例如,加权脑部 MR 影像,其中对比度高度依赖于采集参数,通常由专家设置)。如果我们采用这种统计方法,我们将使用完整单一卷的统计数据,而不是整个数据库。

    与此相反,定量成像测量物理量(例如,CT 成像中的放射强度,其中不同扫描仪的强度类似)并且受益于削波和/或重新缩放,如简单范围归一化(例如 [-1,1])。

    6f0dd5137ae41d46befd0a09b040eb8f8786c57e

    强度归一化方法示例

    空间归一化:

    通过使用影像方向归一化,模型无需学习所有可能的方向,从而大大减少了所需的训练影像的数量(请参见头属性的重要性,了解影像的方向)。此外,我们还考虑了体素间距,即使采集自同一扫描仪,影像之间也可能存在差异。可通过重新采样为各向同性分辨率来实现这一点:

    如果需要进一步归一化,我们可以使用医学影像配准包(例如 MIRTK,等等)将影像配准到相同的空间中,使影像之间的体素位置彼此对应。分析结构性脑部 MR 影像(例如 T1 加权 MR 影像)的典型步骤是按参考标准配准训练数据库中的所有影像,例如平均图集(如 MNI 305 图集)。根据配准方法的自由度,也可以针对尺寸(仿射配准)或形状(可变形配准)归一化。这两种变体很少使用,因为它们去除了影像中的一些信息(即形状信息或尺寸信息),而这些信息可能对分析有着重要意义(例如,心脏较大可能预示有心脏病)。

    数据增强

    通常情况下,可用的数据量有限,并且未涵盖某些差异。一些例子如下所示:

    存在各种正常形状的软组织器官

    形状和位置存在显著差异的病变,如癌变

    可能有很多视图的手动超声影像

    为了正确地泛化到未见过的测试用例,我们通过模拟待增强数据中的差异来增强训练影像。与归一化方法类似,我们对强度和空间增强加以区分:

    强度增强示例:

    向训练影像添加噪声以泛化为噪声影像

    添加随机偏移或对比度以处理影像之间的差异

    空间增强示例:

    在需要对称性的方向上翻转影像张量(例如,在扫描脑部时左/右翻转)

    随机变形(例如,用于模仿器官形状的差异)

    沿轴旋转(例如,用于模拟超声视角差异)

    在块上进行随机裁剪和训练

    a499effb303ac99f3934ec4a6a0eec3e6d00aa78

    强度和空间增强技术示例

    关于增强和数据 I/O 的重要说明: 根据所需或有用的增强,某些操作仅在 python 中可用(例如,随机变形),也就是说,如果采用使用原始 TensorFlow (即 TFRecords 或 tf.placeholder)的读取方法,它们需要预先计算并存储到磁盘中,因此大大增加了训练数据库的大小。

    类平衡

    基于医学影像进行监督式学习期间,必须由领域专家解释(如手动分割或疾病类别)。通常,影像级(如疾病类别)或体素级(即分割)标签的比率不能相同,这意味着在训练期间网络不会从每个类看到相同数量的示例。如果类比率基本相似(例如,对于二元分类情况,比率为 30/70),则对准确性没有太大影响。然而,由于大多数损失是整个批次的平均成本,因此网络将首先学会正确预测最常见的类(例如,背景或正常情况,通常有更多可用的示例)。

    如果训练期间类不平衡,将对罕见现象(如影像分割中的小病变)产生较大影响,并在很大程度上影响测试的准确性。

    为了避免这种情况,可通过两种典型方法来解决数据集中的类不平衡问题:

    通过采样实现类平衡:我们此时的目标是更正采样过程中已见过示例的频率。可通过以下方式来完成:

    a) 从每个类中抽取相等的量
    b) 对出现过多的类进行欠采样或
    c) 对频率较低的类进行过采样。

    在 DLTK中,我们提供了针对方式 a 的实现,可点击此处获取。我们对影像卷中的随机位置进行采样,并考虑一个提取的示例(如果包含我们要寻找的类)。

    注:此处 链接

    https://github.com/DLTK/DLTK/blob/blog/dltk/io/augmentation.py#L120

    通过损失函数实现类平衡:与典型的体素平均损失(如分类交叉熵、L2 等)相反,我们可以 a) 使用本质上平衡的损失函数(如平滑的 Dice 损失,即所有类的平均 Dice 系数)或 b) 按类频率将每个预测的损失重新加权(例如,中值频率重新加权交叉熵)。

    应用亮点示例

    通过本博文中提供的所有基础知识,我们现在可以使用 TensorFlow着手构建用于医学影像深度学习的完整应用。我们已经使用深度神经网络实现了几个典型应用,接下来将对其中一些进行介绍,让您了解现在可以尝试解决哪些问题。

    注:这些示例应用学习了一些有意义的内容,但它们是为了演示而构建,而不是高性能的实现。

    示例数据集

    对于以下所有示例,我们均提供下载和预处理脚本。对于大多数情况(包括上面的演示),我们使用的是 IXI 大脑数据库。对于影像分割,我们下载了 MRBrainS13 挑战数据库,您需要注册才能下载。

    多通道脑部 MR 影像的影像分割

    689dc1cf06e403a1cffdf15b7b65466bec75d23f

    多序列影像输入、目标标签和预测的 Tensorboard 可视化

    此影像分割应用基于小型 (N=5) MRBrainS 挑战数据集根据多序列 MR 影像(T1 加权、T1 反转恢复和 T2 FLAIR)学习预测脑组织和白质病变。它使用以残差单位作为特征提取器的 3D U-Net 型网络,并在 TensorBoard中跟踪每个标签的 Dice 系数精度。

    有关代码和说明,请点击此处

    注:此处链接

    https://github.com/DLTK/DLTK/tree/master/examples/applications/MRBrainS13_tissue_segmentation

    T1 加权脑部 MR 影像的年龄回归和性别分类

    fbf11c561c11748110760c7d8f2fb6493ed392c9

    用于回归和分类的 T1 加权脑部 MR 影像输入示例

    采用可扩展 3D ResNet 架构的两个类似应用基于 IXI 数据库中的 T1 加权脑部 MR 图像学习预测受试者的年龄(回归)或受试者的性别(分类)。这两个应用的主要区别在于损失函数:尽管我们训练回归网络将年龄预测为具有 L2 损失的连续变量(预测年龄与实际年龄之间的均方差),但我们使用分类交叉熵损失来预测性别类别。

    有关这些应用的代码和说明,请点击分类回归。

    注:分类链接https://github.com/DLTK/DLTK/tree/master/examples/applications/IXI_HH_sex_classification_resnet

    回归链接

    https://github.com/DLTK/DLTK/tree/master/examples/applications/IXI_HH_age_regression_resnet

    3T 多通道脑部 MR 影像的表示学习

    4b6a36344f04cc51ae51737e4fb38bd8130fbb8d

    使用深度卷积自动编码器网络测试影像和重建

    此处我们演示了深度卷积自动编码器架构(一种强大的表示学习工具)的使用方法:网络将多序列 MR 影像作为输入,旨在对其进行重建。借此在其潜在变量中压缩整个训练数据库的信息。训练后的权重也可用于转移学习或信息压缩。请注意,重建的影像非常平滑:这可能是由于此应用使用 L2 损失函数或网络太小而无法正确编码详细信息。

    有关代码和说明,请点击此处

    注:此处链接

    https://github.com/DLTK/DLTK/tree/master/examples/applications/IXI_HH_representation_learning_cae

    T1w 脑部 MR 影像的简单影像超分辨率

    45ffcb48254fbcc71a20eab6ce117055561c3f4b

    影像超分辨率:原始目标影像;下采样输入影像;线性上采样影像;预测超分辨率;

    单影像超分辨率旨在学习如何基于低分辨率输入上采样和重建高分辨率影像。这一简单实现创建了低分辨率版本的影像,超分辨率网络学习将影像上采样为其原始分辨率(此处上采样因子为 [4,4,4])。此外,我们还计算线性采样版本以显示与重建影像的差异。


    原文发布时间为:2018-08-14

    本文作者:伦敦帝国学院 Martin Rajchl、S. Ira Ktena 和 Nick Pawlowski

    本文来自云栖社区合作伙伴“磐创AI”,了解相关信息可以关注“磐创AI”。

    展开全文
  • 方法论-5WHY分析法(找出根因)

    千次阅读 2020-11-28 22:33:35
    文章 Copy from 轻松搞定根因分析 – “5WHY”分析法其实很简单。 一、“5WHY”分析概述   所谓“5WHY”分析法,又称“5问法”,就是连续反复使用5次“为什么”方式自问,以打破砂锅问到底方式寻找问题的根本原因...

    文章 Copy from 轻松搞定根因分析 – “5WHY”分析法其实很简单

    一、“5WHY”分析概述

      所谓“5WHY”分析法,又称“5问法”,就是连续反复使用5次“为什么”方式自问,以打破砂锅问到底方式寻找问题的根本原因的方法。“5WHY”不限定必须或只做5次为什么的提问,以找到问题根因为准,也许是3次,也许是10几次都有可能。一般经验而言,反复提出5次为什么基本就可以寻找到问题的根因。下面通过两个案例,初步了解5WHY分析法。

    案例一:大野耐一的5Why分析
      有一次,大野耐一先生见到生产线上的机器总是停转,虽然修过多次但仍不见好转,便上前询问  现场的工作人员。
      (1-Why)问:“为什么机器停了?”答:“因为超过了负荷,保险丝就断了。”
      (2-Why)问:“为什么超负荷呢?”答:“因为轴承的润滑不够。”
      (3-Why)问:“为什么润滑不够?”答:“因为润滑泵吸不上油来。”
      (4-Why)问:“为什么吸不上油来?”答:“因为油泵轴磨损、松动了。”
      (5-Why)问:“为什么磨损了呢?”答:“因为没有安装过滤器,混进了铁屑等杂质。”
      经过连续五次不停地问“为什么”,找到问题的真正原因(润滑油里面混进了杂质)和真正的解决方案(在油泵轴上安装过滤器)。由现象推其本质,找到永久性解决问题的方案,这就是5-Why。

    案例二:华盛顿杰弗逊纪念馆的5Why分析
      上世纪80年代,美国政府发现华盛顿的杰弗逊纪念馆受酸雨影响损坏严重,于是请了咨询公司来调查。下面是专家顾问公司与大楼管理人员的一段对话:
      问:为什么杰弗逊纪念馆受酸雨影响比别的建筑物更严重?
      答:因为清洁工经常使用清洗剂进行全面清洗。
      问:为什么要经常清洗?
      答:因为有许多鸟在此拉屎。
      问:为什么会有许多鸟在此拉屎?
      答:因为这里非常适宜虫子繁殖,这些虫子是鸟的美餐。
      问:为什么这里非常适宜虫子繁殖?
      答:因为里面的人常年把窗帘关上,阳光照射不到内,阳台和窗台上的尘埃形成了适宜虫子繁殖的环境。
      拉开窗帘,杰弗逊纪念馆的问题就这么轻易解决了。

    小结:
      5-Why分析并不像表面看起来那么简单,提问者不仅要问5个“为什么”,还需要准确把握问题的核心,提出正确的问题。比如:针对第一个回答-超过了负荷,保险丝断了,如果问“为什么不选用更好的保险丝?”,那么这个问题就变成了关于零部件的购买和使用问题了;针对案例一的第二个回答-轴承的润滑不够,如果问“为什么只是轴承部分润滑不够呢?”,那么这个问题又演变成了轴承部分的设计和维护问题了;又或者问“为什么要采用润滑油来润滑呢?”那么这个问题又变成了润滑方式的重新定义了。

    二、理解“5WHY分析法”的过程和含义

    在这里插入图片描述

      “5WHY”分析法是根据事实分析找到问题根源,给出治本对策的一个过程。“为什么”的追问的越深入,发掘的原因就越逼近真实根本的原因。

      整体的“5WHY”的基本思考方法如下:
    在这里插入图片描述在这里插入图片描述

      最近发现大家知道使用5why分析法进行根因分析,但是经常出现找到的原因并非根因,那么相应的制定的再发防止对策也是无效的。究其原因就是虽然知道“5WHY”的方法但是却不会运用或者运用的方法不正确,导致不能够找到问题真正的根因。那么该如何做呢?接下来介绍一下具体的分析过程注意事项。

    三、规范的分析过程

    在这里插入图片描述

    一般而言,“5WHY”从三个层面来实施:

    1. 为什么会发生?从“制造”的角度。
    2. 为什么没有发现?从“检验”的角度。
    3. 为什么没有从系统上预防事故?从“体系”或“流程”的角度。

      每个层面连续5次或N次的询问,得出最终结论。只有以上三个层面的问题都探寻出来,才能发现根本问题,并寻求解决。那么如何做才能确保根因分析的正确和成功呢?

    四、要确保立场和视角的正确

       站在组织级视角来寻求改善组织体系/流程和系统性问题。这是最基本的立场。通常情况下,很多人站在个人的立场和视角进行问题分析,往往只能找到比较表层的原因,不能找到管理层面,体系架构以及组织级层面的问题。

      确保根因分析成功的3个关键视点:

    1. [为什么]要从个人转向组织/体系/系统层面。

    2. [为什么]要从主观意识转向具体行动。

      通过问“为什么?”要采取这样的行动,这样才可以从人的主管意识中分离出来。例如,在A先生泄漏机密信息的情况下,如果我们追溯问到“为什么A先生泄露了信息?”,这样就是站在A先生的主观意识角度来分析问题,如果换个角度问“A先生泄漏了什么信息?”,那么这样看看待问题的角度就指向了组织体系或者管理系统。这个关键点:不是[为什么会什么?]而是[你做什么?]。这个角度,大家可以体会一下。

    1. [为什么]的主语设定成“我们”。

      例如,在A先生发生了信息泄露的情况下,如果追溯的问题是“为什么A先生泄露了信息?”那么这个还是从A先生的角度来分析问题,得到的原因也肯定是A先生个人的主观错误原因。假如我们追溯问“为什么我们能让A先生把信息泄漏出去呢?”,那么我们就将问题观点角度转向了体系结构及组织系统。
    在这里插入图片描述

    五、“5WHY”分析确保成功的手法及注意事项

    1)整理问题点,并根据事实进行分析。

    • 正确的把握现象是非常重要。
    • 分析质量取决于对深究分析之前的当前情况的把握程度。
    • 没有通过确认现场就判断出问题的原因是站不住脚的,是没有道理的。
    • 想象要以能够可见、简单易懂的形式记录保留下来。(图文影像最好)

    2)找出所有的要因,事先不要考虑是否真的针对这些要因采取对策!

    • 有很多原因是不是显而易见的,要将这些要因都可见化的描述出来。

    3)采用复眼分析,也就是说相关的人员都要参与进来。

    • 不要仅仅根据个人假设或猜测来决定!
    • 如果是通过某个人主观性先入为主的来判断分析,那么将对策偏离了方向也不会被发现。
    • 问题发生后要尽早的让当事人参与进来进行分析。

    4)不要试图进行“责任转嫁”,通过原因分析将责任转移到外部环境和己方以外的其他方面上是比较严重的问题。

    • 应该考虑不受外部环境影响的工作机制!但是,如果外部环境真的是“根因”的话,那么就要分析改进它。责任转嫁的思维的结局总是别人不好。

    5)最初的“为什么1”,要从问题现象最根本的原因开始分析。

    • 『为什么1』会发生?一定要从问题的现象给出根本的原因,否则会影响『为什么2』及以后的分析,因此这一步非常重要。

    6)对于“为什么1”,要将“发生要因”和“流出要因”两个方面进行分析。

    • “引起问题现象发生的直接原因”和“没有发现错误导致问题流出的直接原因”都分别记录下来。

    7)“现象”的句子以简短扼要的“〇〇〇做了〇〇〇”的形式记录下来。

    • 比较重要的是如果有主人公的话,那么要明确是『谁』。

    8)准确地掌握现象,不要粗略的表述,建议采用5W1H方法明确的表述

    • 如何捕捉现象(如何写)非常重要,5W1H方法描述。词语含义很重要,不要有模糊含义的词语。

    9)根因分析完成后,一定要从最后一个“为什么”反向的追溯到“问题的现象”,确认反向逻辑在理论上也是正确的。

    • 原因分析时的逻辑是“为什么发生了〇〇〇?因为〇〇〇”。而反向验证的逻辑是“因为〇〇〇〇,所以〇〇〇”。
      在这里插入图片描述

    10)不要遗漏并行关系的要因。

    • “存在单一的线性的原因引起问题的发生”几乎很少或者是不可能的。相反的,往往是“多个原因相互共同作用”才引起问题的发生。要对问题发生的“必要条件”和“充分条件”进行检查是否遗漏并推进分析。

    11)要持续的追问“为什么”,直到出现能够制定预防复发措施的原因为止。

    • 最后一个原因必须是确保可靠和有效的能够被解决的因素。

    12)只写出被认为与正常情况不一致(异常)的客观差异事实。

    • 例如:“因为非常的忙”这样的描述不是异常描述,如是“工作负荷达到150%以上的情况已经持续一周时间了”这样的描述,就是一个基于和正常情况进行比较得出的明确的客观的异常情况。

    13)避免追究面向人的心理方面的原因。

    • 人心里方面的因素是不容易被管理和制定相应的管理制度的。避免追求心理方面,才能够将“为什么”指向可用于确保预防复发措施的设备和管理机制等方面的原因。

    14)不要是使用“〇〇〇不好/很坏”或“〇〇〇不充分”这样的句子来描述问题。

    • 要能够明确的将与标准或正常情况进行对比出的异常情况的客观事实描述出来。比如“材料不好”这是一个主管判断不是事实,如果具体地说“材料的耐热温度低”就比较具体和客观了。

    15)在对事物的性质、状态进行分析时,事物比较的对象/基准以及发生频度等情况要明确化并尽可能量化。

    • 事物的大小,长度,高度等要素在分析表述时,要有对比的基准,以及引发问题发生的条件要明确出来。例如“温度比设定的温度高了5度”等。

    16)在分析由于人为错误的原因导致的问题时,不仅仅关注当事者本人的问题,也应将思考方向指向“工作机制/输入信息/周围相关人/管理/监督者”等。

    • 永远不要将注意力放在故障本身上,一定要将注意力放到故障背后的技术和管理问题上去。

    17)通过“现场”、“现物”、“现实”(3现主义)来尽早确认分析出的“根因”是否是真正的原因。

    • 根因的最终确定,往往需要先提出猜想然后验证猜想是否正确。如果能验证“根因”是否正确,那么要尽快的在发生现场或现物中进行确认,通过进行听证、分解调查、测量、再现实验等手段尽快验证。

    18)不仅要考虑发生事件本身的永久性对策,还要考虑到同类型类似的横向问题,扩大视野分析是否存在上层系统和机制的问题,并思考系统性预防措施。

    展开全文
  • 遥感影像数据融合方法的比较分析,康停军,姚静,探讨了遥感影像数据融合中常用的几种方法:高通滤波融合法、Brovery变换融合法、IHS变换、主成份变换,介绍了各种融合方法的公�
  • 对02B卫星影像数据质量及校正方法进行了研究与分析影像特征分析采用统计特征参数,并与分辨率相近的ALOS和SPOT5影像进行比较。影像几何校正采用了基于自动匹配的小样条、RPC及多项式模型3种方法进行校正实验,...
  • title: 基于Eigen的遥感多光谱影像主成分分析 date: 2018-10-03 categories: 遥感图像处理 tags: 主成分分析简介 在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集...

    title: 基于Eigen的遥感多光谱影像主成分分析
    date: 2018-10-03
    categories: 遥感图像处理
    tags:

    主成分分析简介

    在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。

    计算步骤

    输入:n维样本集D=(x(1),x(2),…,x(m)),要降维到的维数n.

    输出:降维后的样本集D′
        1) 对所有的样本进行中心化:
        image
        2) 计算样本的协方差矩阵X*XT

    3) 对矩阵X*XT进行特征值分解

    4)取出最大的n个特征值(从大到小排序)对应的特征向量(w1,w2,…,wn), 将所有的特征向量标准化后,组成特征向量矩阵W。

    5)对样本集中的每一个样本x(i),转化为新的样本z(i)=WT*x(i)
        6) 得到输出样本集D′=(z(1),z(2),…,z(m)) 即前m成分

    博客园有一篇博客详细介绍了PCA 原理

    代码实现

    主要用到了gdal和Eigen库

    gdal用于读写遥感多光谱影像

    Eigen则便于各种矩阵运算

    #include"gdal_priv.h"
    #include"cpl_conv.h" // for CPLMalloc()
    #include<iostream>
    #include<fstream>
    #include<string>
    #include"Eigen/Dense"
    using namespace std;
    using namespace Eigen;
    
    //eigen实现主成分分析
    void featurenormalize(MatrixXd &X)
    {
    	//计算每一维度均值
    	MatrixXd meanval = X.colwise().mean();
    	RowVectorXd meanvecRow = meanval;
    	//样本均值化为0
    	X.rowwise() -= meanvecRow;
    }
    void computeCov(MatrixXd &X, MatrixXd &C)
    {
    	//计算协方差矩阵C = XTX / n-1;
    	C = X.adjoint() * X;
    	C = C.array() / (X.rows() - 1);
    }
    void computeEig(MatrixXd &C, MatrixXd &vec, MatrixXd &val)
    {
    	//计算特征值和特征向量,使用selfadjont按照对阵矩阵的算法去计算,可以让产生的vec和val按照有序排列(默认从大到小)
    	SelfAdjointEigenSolver<MatrixXd> eig(C);
    
    	vec = eig.eigenvectors();
    	val = eig.eigenvalues();
    }
    int computeDim(MatrixXd &val)
    {
        //输出信息量达到95%的前n主成分
    	/*int dim;
    	double sum = 0;
    	for (int i = val.rows() - 1; i >= 0; --i)
    	{
    	sum += val(i, 0);
    	dim = i;
    
    	if (sum / val.sum() >= 0.95)
    	break;
    	}
    	return val.rows() - dim;*/
    	return 7;//这里设置输出7个主成分
    }
    
    void writePcaImg(const char* path, int width, int height, double *pBuff, double *adfGeo, const char *prj, int bandNum, int imageSize, int pcaInd)
    {
    	GDALDriver *pDriver = GetGDALDriverManager()->GetDriverByName("GTiff"); //图像驱动
    	char** ppszOptions = NULL;
    	int depth = 8;//图像位深
    	int dim = 1;//每个图像波段数,这里将每个主成分存储到一个单波段图像
    	GDALDataset* dst = pDriver->Create(path, width, height, dim, GDT_Float64, ppszOptions);//创建图像
    	if (dst == nullptr)
    		printf("Can't Write Image!");
    	dst->SetGeoTransform(adfGeo);//设置坐标
    	dst->SetProjection(prj);//设置投影
    	dst->RasterIO(GF_Write, 0, 0, width, height, &pBuff[(bandNum - pcaInd)*imageSize], width, height,
    		GDT_Float64, dim, nullptr, dim*depth, width*dim*depth, depth);//写入图像
    	GDALClose(dst);
    }
    int main(int argc, char *argv[])
    {	//读取影像
    	char* pszFilename = "D:/gdalData/pca/before.img";
    	char *outPath = "D:/pca_temp/pca";
    	GDALDataset  *poDataset;
    	GDALAllRegister();
    	poDataset = (GDALDataset *)GDALOpen(pszFilename, GA_ReadOnly);
    	if (poDataset == NULL)
    	{
    		printf_s("read failed!\n");
    	}
    	else
    	{
    		printf_s("read successful!\n");
    	}
    	double adfGeoTransform[6];
    	if (poDataset->GetGeoTransform(adfGeoTransform) == CE_Failure)//读取坐标信息
    	{
    		printf("获取参数失败");
    	}
    	const char *prj = poDataset->GetProjectionRef();//读取投影信息
    
    
    	int iWidth = poDataset->GetRasterXSize();//图像宽度
    	int iHeight = poDataset->GetRasterYSize();//图像高度
    	int iBandCount = poDataset->GetRasterCount();//波段数
    	int iImageSize = iWidth * iHeight;//图像像元数
    	
    	double *pBuff1 = new double[iImageSize*iBandCount];//开辟空间存储原始图像
    	
    	poDataset->RasterIO(GF_Read, 0, 0, iWidth, iHeight, pBuff1,
    		iWidth, iHeight, GDT_Float64, iBandCount, 0, 0, 0, 0);//读取原始图像
    	
    	MatrixXd staMat = Map<MatrixXd>(pBuff1, iImageSize, iBandCount);//将图像读入eigen矩阵
    
    
    	MatrixXd X(iImageSize, iBandCount), C(iBandCount, iBandCount);//按波段存储至X矩阵,构建协方差矩阵C
    	MatrixXd vec, val;//构建特征向量、特征值矩阵vec、val
    	X = MatrixXd(staMat);
    	
    	//零均值化
    	featurenormalize(X);
    	
    	//计算协方差
    	computeCov(X, C);
    	
    	//计算特征值和特征向量
    	computeEig(C, vec, val);
    	
    	//计算损失率,确定降低维数
    	int dim = computeDim(val);
    	//计算结果
    	MatrixXd res = X * vec.rightCols(dim);
    
    	//将主成分分量存储至pBuff2
    	double *pBuff2 = new double[iImageSize*iBandCount];
    
    
    	for (int i = 0; i < dim; ++i)
    	{
    		for (int j = 0; j < iImageSize; ++j)
    		{
    			pBuff2[i*iImageSize + j] = res(j, i);
    	
    		}
    	}
    
    
    	//各个主成分写入图像(包含坐标及投影信息)
    	for (int i = 0; i < iBandCount; i++)
    	{
    		char x[]=" ";
    		strcpy(x, outPath);
    		char dstPath[10] = {};
    		sprintf(dstPath, "%d.tif", i + 1);
    		strcat(x, dstPath);
    		writePcaImg(x, iWidth, iHeight, pBuff2, adfGeoTransform, prj, 7, iImageSize, i + 1);
    		cout << "pca " << i + 1 << " complete" << endl;
    			
    	}
    
    	cout << "pca complete!" << endl;
    	cin.get();
    	return 0;
    
    
    }
    
    展开全文
  • 摘 要 : 以福州市南台岛的E T M+ 遥感影像为基础数据,利用ERDAS Imagine8.7 、ENVI 4.0等遥感影像处理软件 , 运用主成分( PCA )、乘积(MLT)Brovey 变换和 H I S 变换融合算法对 E T M+ 遥感影像全色波段( 第 ...
  • 通过结合上一帧的分割结果和当前运动方向(通过光流获得),推断出当前帧的分割的mask, 称为temporal prior, 本质上就是一个attention map, 加在原本encoder-decoder结构中用于指导当前帧的预测。 总结:通过光流...
  • 选取赤峰市区2003、2009、2013和2018年的Landsat TM/OLI遥感影像,利用支持向量机分类提取4个年份的中心城区,结合GIS空间分析方法研究城区扩张强度、速度在时间尺度下的变化趋势。结果表明:2003~2018年间,...
  • X射线影像系统图像噪声分析

    千次阅读 2015-11-23 15:27:12
    X射线影像系统成像的过程是X射线穿过被测物,经过光阴极产生光电子,光电子在微通道板的二次电子倍增的作用下,高速轰击荧光屏,形成图像。根据其过程,它的噪声[2〕主要来源如下:  l)光电阴极发射电子的涨落...
  • 主要运用影像分析法、数理统计法、对比分析法等对6名女子标枪运动员比赛中的最后用力进行分析,重点从肩和盆骨的运动能量角度去分析,得出肩和骨盆在投掷过程中运动能量变化的规律和个体特点,以期对女子标枪运动员...
  • NDVI时间序列谐波分析法(Harmonic Analysis of NDVI Time-Series)(简称Hants )对时间序列数据进行平滑。该方法是一种新的物候分析方法,可用于定量化的监测植被动态变化。其核心算法是傅里叶变换和最小二乘法拟合,...
  • 该公众号将为您奉上Python地学分析、爬虫、数据分析、Web开发、机器学习、深度学习等热门源代码。 本人的GitHub代码资料主页(持续更新中,多给Star,多Fork): https://github.com/xbr2017 CSDN也在同步更新: ...
  • 最佳指数波段组合分析 对于量化等级相同的原始图像数据,其标准差和信息量存在正比关系,而波段间的相关系数则反映不同波段图像数据间信息冗余度的多少。据此原理,美国查维茨(Chavez,1982)提出了最佳指数...
  • 遥感影像校正内容分为系统级以及用户级的,系统级主要解决使用光学透镜中产生的边缘减光现象、光电转换的系统产生的误差、条纹、斑点的校正以及灰度一致化的校正,相关具体知识如表一归纳所示: 表一:系统辐射误差...
  • ArcGIS中的影像分类

    万次阅读 2014-09-18 10:52:17
    影像分类的目的就为了将图像中的像元划分成不同的类别,过程就是根据像元在不同波段的波普亮度、空间结构特征或者其他信息,按照某种规则或算法实现分类。遥感图像分类处理就是是为了提取遥感图像中的目标信息,遥感...
  • 研究首先分析了传统去条带噪声方法的弊端,根据条带噪声在MODIS影像中的分布规律,以及如何准确判断条带噪声所在的行,然后应用插值去除了MODIS波段5和波段30影像的条带噪声,取得了满意的效果,
  • 随着摄影测量技术的不断发展,给摄影定位提出了更高的要求。而摄影定位的基础是获取影像的内外方位元素,...鉴于此,文中提出了一种GPS-RTK辅助近景摄影测量光束平差,并通过试验分析,对其精度进行研究,以供参考和借鉴。
  • 原因分析: nan意为:not a number ,影像中出现nan值得情况有好几种,譬如:数字图像处理结果导出到本地时、数据格式问题、还有就是原始数据就他喵的这样,小编飞的无人机数据就是第三种情况。 解决方案: 罢了,我...
  • Arcgis影像合并

    万次阅读 2015-04-27 11:29:38
    在ArcGIS10中,进行影像合并方法有多种,本文以说明以镶嵌为例说明: ArcGIS镶嵌的概念: ArcGIS 提供了两种镶嵌栅格数据的方法,一种是使用镶嵌数据集进行虚拟镶嵌,另一种是永久性地将栅格数据集...
  • 影像组学简述

    万次阅读 多人点赞 2018-10-11 13:28:39
    滑降区域生长、图割、半自动分割算法、基于容量CT的分割,目前并无可用的通用的方法,自己的数据集有自己的方法。 三、图像特征提取与量化(这是我们在特征提取时可采用的方法) 影像组学特征可以分为:形状...
  • 传统的遥感影像是依据地物的波谱信息来进行分类的。这往往会产生“同物异谱, 异物同谱”的问题, 使得分类精度和效果不理想。因此本文采用基于专家知识的决策树 C4.5, 利用地物的波谱信息、归一化植被指数、...
  • 通过量化大尺度组织的拓扑原理,皮层梯度提供了一个分析框架,以研究跨物种的、贯穿整个发育和衰老过程的大脑结构和功能组织,及其在疾病中的干扰。在这里,作者提供了BrainSpace,一个Python/M...
  • 遥感影像处理流程

    千次阅读 2015-11-15 23:23:14
    遥感影像处理流程
  • 影像组学技术方法

    万次阅读 多人点赞 2018-11-21 19:00:59
    影像组学技术方法 来源:放射学实践 作者:史张、刘崎 放射学实践,2018,33(6):633-636 影像组学概念 从影像图像中提取的全部特征就是“影像组学”,而通过特征选择后所挑选出那些具有预测价值特征集合通常被...
  • ArcGIS影像分类

    万次阅读 2013-12-13 17:32:46
    不用遥感软件,ArcGIS也可以进行影像信息的分类了,就是通过ArcGIS10中新增的“影像分类”工具条。...监督分类:又称训练分类,使用人工提取训练样本,利用获得的样本再根据影像的光谱特征对影像进行分类。非监督分
  • 利用浅水地形的SAR影像以及基于...以南沙双子礁海域为例,利用最大相关系数确定出了一幅RADARSAT SAR影像成像时刻的海面风向,通过对结果的比较分析可以看出对于包含浅水地形的SAR影像应用该方法探测海面风向是可行的.
  • 首先,本文提取不同时期影像的多个特征,然后组合成特征向量,通过差值的方式得到两期影像的差值图,并对该差值图进行主成分分析,以第一波段为主要变化实验图,基于ostu自动阈值化,来自动获取变化图,经过实验表明...
  • 要本文利用1995年的地图和2010年5月4号的Landsat 7 TM遥感影像研究太湖区域面积变化状况分别对遥感影像采用单波段阈值法并采用regioncrop函数去噪对地图采用灰度阈值分割法提取太湖区域然后采用差值法和空间分析法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,288
精华内容 3,715
关键字:

影像分析法