今天对医学图像的处理需要用到Linux下的dcm2nii和nifti2dicom,这两个是开源的软件,专门用于处理医学图像格式,前一个时将dicom格式的文件转换为nii格式,后一个是将nii格式转换为dicom格式。
这两个软件安装好了之后,都可以在命令行进行执行,很方便。但是为了实验需要,要在Java中调用Linux命令来进行转格式。先尝试写一个she'll脚本,运行这个脚本的时候就可以完成格式转换。
she'll的编写: 以test.sh为例
1、touch test 创建一个文件test
2、vim test 开始便捷test这个文件
#!/bin/bash
#Transform type of nii to dicom,then find the filename.nii.gz image's name , rename ,unzip it to filename.nii
#20170225
dcm2nii -a y ......nii2dcm/N2D_0001.dcm
name=`find -name *.gz`
echo "\nfilename: $name"
arr=$(echo $name|tr "/" "\n")
for x in ${arr[@]}; do
echo $x
done
cd nii2dcm
echo "Step into folder!"
name1=`find -name *.gz`
gunzip $name1
echo "Finsh Unzip"
name2=`find -name *.nii`
cp $name2 "a.nii"
echo "Finsh Rename!"
rm $name2
echo "Remove Orignal file"
pwd
echo "Finsh Transform!"
#!/bin/bash 声明这个script使用的she'll名称
下面的几个#号后面的是被屏蔽的注释,即不会被执行的。
第二句是调用的dcm2nii这个命令,
第三句比较关键,
name=`find -name *.gz`
因为文件较多,可以通过后缀来找到自己需要的。注意,等号后面的不是引号,是tab上面的那个键。也可以用另一种写法
name=$(find -name *.gz)
这两种方法均可以找到后缀为gz的文件。
第四句输出变量的值:
echo "\nfilename: $name"
$是获取name的值。
第五句,使用正则表达式:
arr=$(echo $name|tr "/" "\n")
因为上面的name的值包含路径信息,里面肯定有许多“/”,所以采用正则表达式来将路径信息分开。
第六句输出字符串中的值:
for x in ${arr[@]}; do
echo $x
done
OK,下面的句子基本都是上面的重复。有不对的地方还请批评指正。
另外:
获得文件的名字和后缀也可以这样:
- file=”thisfile.txt”
- echo “filename: ${file%.*}”
- echo “extension: ${file##*.}”
http://blog.csdn.net/rainharder/article/details/6030255