廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. 代码运行脑图
  2. 2. 每一步的运行过程说明
    1. 2.1. 对灰度和二值图像做插值(该步可以跳过)
    2. 2.2. 开始训练
    3. 2.3. 计算图谱
    4. 2.4. 通过图谱对原始灰度图像进行分割

代码运行脑图


代码运行脑图

每一步的运行过程说明

对灰度和二值图像做插值(该步可以跳过)

  • 插值是为了防止在训练的过程出现错误,所以相对灰度和二值图像做插值运算,插值代码在UpsampleVolume_char-labelUpsampleVolume_short-img文件夹中。
  • -label作用二值图像,-img作用于灰度图像,使用前需要先ccmakemake一下进行配置和编译,然后将生成的main可执行文件拷贝到需要插值的文件夹中,执行upsample脚本文件就可以进行插值运算来,如果脚本文件不能执行需要先给执行权限,upsample脚本文件内容如下:

    #!/bin/bash
    mkdir upsample_label
    for ((a=1; a <= 40; a++))
    do
        ./main label-$a-flip-spleen-roi.nrrd upsample_label/label-$a-flip-spleen-roi-2.nrrd 1 1 2
    done
    
  • 该脚本是作用于二值图像的例子,灰度图像也要重复上述过程。
    ### 掩码运算

  • 掩码的代码在MASKImage文件夹中,同样使用前需要先ccmakemake一下进行配置和编译,然后执行mask-spleen脚本文件,注意脚本中文件的路径,mask-spleen脚本文件内容如下:

    #!/bin/bash
    for ((a=1; a <= 40; a++))
    do
        ./main spleen-roi/upsample_img/img-$a-flip-spleen-roi-2.nrrd 
        spleen-label-roi/upsample_label/label-$a-flip-spleen-roi-2.nrrd mask_result-2/img-$a-flip-spleen-masked.nrrd
    done
    
  • 如图:

掩码

开始训练

  • 训练的代码在atlas_*_UAB文件夹中,先在此文件夹中建build文件夹,并在build中进行配置和编译。
  • 执行mkdir_file脚本,在build中生成必要的文件夹,将elastixparameters_BSpline.txtparameters_Affine.txttransformix这4个文件拷贝到build中,这个很重要!!!
  • 将掩码后的nrrd文件拷贝到training文件夹中,规范命名,将手动挑选的初始模板与第0组交换。
  • 执行编译后生成的asm的文件,如图:
    开始训练
  • 如果运行出错,需要重新下载elastixtransformix文件,下载方式如下:

    sudo apt-get install elastix
    
  • 然后将/etc/bin中的elastixtransformix文件替换掉原来的elastixtransformix文件,重新执行asm文件。

  • 如果数据很多的话,训练过程需要很久,一、两天也有可能,慢慢等吧。

计算图谱

  • 在计算图谱之前需要将最后一次迭代矩阵作用于最初的灰度和二值图像,建两个文件夹‘img_txt’、label_txt分别处理灰度和二值图像。
  • 将最后一次训练迭代的矩阵,即最后一次迭代产生的txt文件拷贝到‘img_txt’、label_txt文件中。
  • 执行mkdir_file脚本,生成必要的文件夹,用g++编译.cpp文件,interpolate0to3.cpp作用于img_txt中的txt,avgTranform.cpp作用于label_txt中的txt.如图:

  • 将最初的灰度和二值图像(nrrd)分别拷贝到‘img_txt’、label_txt文件中,注意命名方式和将手动挑选的初始模板与第0组交换。
  • 执行update脚本,将txt作用到nrrd上,结果保存在exampleoutput中,如图:
  • 将处理后的nrrd求平均,得到最终的图谱:avg.nrrd。需要先ccmakemake一下进行配置和编译求平均的代码,得到一个可执行文件main.
  • 执行main,传的参数为数据集的个数,如图:

通过图谱对原始灰度图像进行分割

  • 训练的代码在MAS_*_UAB_FFD文件夹中,先在此文件夹中建build文件夹,并在build中进行配置和编译。
  • 执行mkdir_file脚本,在build中生成必要的文件夹,将elastixparameters_BSpline.txtparameters_Affine.txttransformix这4个文件拷贝到build中,这个很重要!!!
  • 将图谱和要分割的原始灰度图像拷贝到training文件夹,灰度图谱命名:avg.nrrd,二值图谱命名:avg_mask.nrrd,原始灰度图像命名:liver-0.nrrd.
  • 在MAS文件夹中建一个文件夹用来保存分割后的结果,命名为:0.注:有多少组原始灰度图像,就需要有多少个保存结果的文件,命名方式依次递增。
  • 执行asm文件进行分割,如图:
  • 最后分割结果保存在0文件夹中,如图:

科学上网(翻墙)教程!

更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本计算机类经典书籍;
3.回复【开发工具】:获取几大主流编程语言的开发工具~
4.回复【内推】:可帮你内推到大厂工作。
文章目录
  1. 1. 代码运行脑图
  2. 2. 每一步的运行过程说明
    1. 2.1. 对灰度和二值图像做插值(该步可以跳过)
    2. 2.2. 开始训练
    3. 2.3. 计算图谱
    4. 2.4. 通过图谱对原始灰度图像进行分割