Created
April 30, 2019 16:16
-
-
Save fk128/d11c70e6809ce59d049d877c755e9f7b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import argparse | |
import glob | |
import re | |
import time | |
MIN = -1024 | |
MAX = 3072 | |
def main(): | |
itksnap_path = 'itksnap' | |
images_dir = 'images/native' | |
labelmaps_dir = 'labelmaps/native' | |
ext = '.nii.gz' | |
template = open('workspace_template.itksnap', 'r').read() | |
parser = argparse.ArgumentParser(description='output image list') | |
parser.add_argument('-i','--image', default=-1, type=int) | |
parser.add_argument('-o','--offset', default=0, type=int) | |
parser.add_argument('-p','--path', default='.', type=str) | |
parser.add_argument('--min', default=-200, type=int) | |
parser.add_argument('--mid', default=None, type=int) | |
parser.add_argument('--max', default=400, type=int) | |
args = parser.parse_args() | |
images_dir = os.path.join(args.path, images_dir) | |
labelmaps_dir = os.path.join(args.path, labelmaps_dir) | |
print(images_dir) | |
image_list_pre = glob.glob(os.path.join(images_dir,'*' + ext)) | |
print('found {} images'.format(len(image_list_pre))) | |
labelmap_list_pre = glob.glob(os.path.join(labelmaps_dir,'*' + ext)) | |
print('found {} segmentations'.format(len(labelmap_list_pre))) | |
if len(image_list_pre) == 0: | |
print('Could not find images at directory') | |
exit(0) | |
if len(labelmap_list_pre) == 0: | |
print('Could not find segmentations at directory') | |
exit(0) | |
image_list = [] | |
labelmap_list = [] | |
names = [] | |
for image_path in image_list_pre: | |
name = image_path.split('/')[-1].replace(ext, '') | |
print(name) | |
labelmap_path = glob.glob(os.path.join(labelmaps_dir, name + '*' + ext)) | |
if len(labelmap_path) == 1: | |
image_list.append(image_path) | |
labelmap_list.append(labelmap_path[0]) | |
names.append(name) | |
else: | |
print('Could not match image with segmentation: ', name) | |
if len(names) == 0: | |
print('Could not load images') | |
exit(1) | |
if args.image == -1: | |
idxs = list(range(args.offset, len(image_list))) | |
else: | |
idxs = [args.image] | |
for idx in idxs: | |
print(idx, names[idx]) | |
minv = (args.min - MIN)/(MAX - MIN) | |
maxv = (args.max - MIN)/(MAX - MIN) | |
if not args.mid: | |
mid = 0.5*(maxv + minv) | |
substitutions = {'min': str(minv), 'mid':str(mid), 'max': str(maxv), 'save_path': args.path, 'image_path': image_list[idx], 'segmentation_path': labelmap_list[idx]} | |
pattern = re.compile(r'%([^%]+)%') | |
xmlstring = re.sub(pattern, lambda m: substitutions[m.group(1)], template) | |
with open('workspace_temp.itksnap', 'w') as f: | |
f.write(xmlstring) | |
os.system(' '.join([itksnap_path,'-w', 'workspace_temp.itksnap'])) | |
time.sleep(0.1) | |
# os.system(' '.join([itksnap_path,'-g' , image_list[idx], '-s', labelmap_list[idx]])) | |
if __name__ == "__main__": | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8" ?> | |
<!--ITK-SNAP (itksnap.org) Project File | |
This file can be moved/copied along with the images that it references | |
as long as the relative location of the images to the project file is | |
the same. Do not modify the SaveLocation entry, or this will not work. | |
--> | |
<!DOCTYPE registry [ | |
<!ELEMENT registry (entry*,folder*)> | |
<!ELEMENT folder (entry*,folder*)> | |
<!ELEMENT entry EMPTY> | |
<!ATTLIST folder key CDATA #REQUIRED> | |
<!ATTLIST entry key CDATA #REQUIRED> | |
<!ATTLIST entry value CDATA #REQUIRED> | |
]> | |
<registry> | |
<entry key="SaveLocation" value="%save_path%" /> | |
<entry key="Version" value="20170401" /> | |
<folder key="Annotations" > | |
<entry key="Format" value="ITK-SNAP Annotation File" /> | |
<entry key="FormatDate" value="20150624" /> | |
</folder> | |
<folder key="Layers" > | |
<folder key="Layer[000]" > | |
<entry key="AbsolutePath" value="%image_path%" /> | |
<entry key="Role" value="MainRole" /> | |
<folder key="LayerMetaData" > | |
<entry key="Alpha" value="255" /> | |
<entry key="CustomNickName" value="" /> | |
<entry key="Sticky" value="0" /> | |
<folder key="DisplayMapping" > | |
<folder key="ColorMap" > | |
<entry key="Preset" value="Grayscale" /> | |
</folder> | |
<folder key="Curve" > | |
<entry key="NumberOfControlPoints" value="3" /> | |
<folder key="ControlPoint[0]" > | |
<entry key="tValue" value="%min%" /> | |
<entry key="xValue" value="0" /> | |
</folder> | |
<folder key="ControlPoint[1]" > | |
<entry key="tValue" value="%mid%" /> | |
<entry key="xValue" value="0.5" /> | |
</folder> | |
<folder key="ControlPoint[2]" > | |
<entry key="tValue" value="%max%" /> | |
<entry key="xValue" value="1" /> | |
</folder> | |
</folder> | |
</folder> | |
</folder> | |
<folder key="ProjectMetaData" > | |
<entry key="GaussianBlurScale" value="1" /> | |
<entry key="RemappingExponent" value="3" /> | |
<entry key="RemappingSteepness" value="0.04" /> | |
<folder key="IOHistory" > | |
<folder key="LabelImage" > | |
<entry key="ArraySize" value="1" /> | |
<entry key="Element[0]" value="%segmentation_path%" /> | |
</folder> | |
</folder> | |
<folder key="IRIS" > | |
<entry key="SliceViewLayerLayout" value="Stacked" /> | |
<folder key="DisplayMapping" > | |
<folder key="ColorMap" > | |
<entry key="Preset" value="Grayscale" /> | |
</folder> | |
<folder key="Curve" > | |
<entry key="NumberOfControlPoints" value="3" /> | |
<folder key="ControlPoint[0]" > | |
<entry key="tValue" value="0" /> | |
<entry key="xValue" value="0" /> | |
</folder> | |
<folder key="ControlPoint[1]" > | |
<entry key="tValue" value="0.5" /> | |
<entry key="xValue" value="0.5" /> | |
</folder> | |
<folder key="ControlPoint[2]" > | |
<entry key="tValue" value="1" /> | |
<entry key="xValue" value="1" /> | |
</folder> | |
</folder> | |
</folder> | |
<folder key="LabelState" > | |
<entry key="CoverageMode" value="OverAll" /> | |
<entry key="DrawingLabel" value="1" /> | |
<entry key="OverwriteLabel" value="0" /> | |
<entry key="PolygonInvert" value="0" /> | |
<entry key="SegmentationAlpha" value="0.5" /> | |
</folder> | |
<folder key="LabelTable" > | |
<entry key="NumberOfElements" value="6" /> | |
<folder key="Element[0]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="255 0 0" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="1" /> | |
<entry key="Label" value="Label 1" /> | |
</folder> | |
<folder key="Element[1]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="0 255 0" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="2" /> | |
<entry key="Label" value="Label 2" /> | |
</folder> | |
<folder key="Element[2]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="0 0 255" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="3" /> | |
<entry key="Label" value="Label 3" /> | |
</folder> | |
<folder key="Element[3]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="255 255 0" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="4" /> | |
<entry key="Label" value="Label 4" /> | |
</folder> | |
<folder key="Element[4]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="0 255 255" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="5" /> | |
<entry key="Label" value="Label 5" /> | |
</folder> | |
<folder key="Element[5]" > | |
<entry key="Alpha" value="255" /> | |
<entry key="Color" value="255 0 255" /> | |
<entry key="Flags" value="1 1" /> | |
<entry key="Index" value="6" /> | |
<entry key="Label" value="Label 6" /> | |
</folder> | |
</folder> | |
<folder key="MeshOptions" > | |
<entry key="DecimateFeatureAngle" value="45" /> | |
<entry key="DecimateMaximumError" value="0.002" /> | |
<entry key="DecimatePreserveTopology" value="1" /> | |
<entry key="DecimateTargetReduction" value="0.95" /> | |
<entry key="GaussianError" value="0.03" /> | |
<entry key="GaussianStandardDeviation" value="0.8" /> | |
<entry key="MeshSmoothingBoundarySmoothing" value="0" /> | |
<entry key="MeshSmoothingConvergence" value="0" /> | |
<entry key="MeshSmoothingFeatureAngle" value="45" /> | |
<entry key="MeshSmoothingFeatureEdgeSmoothing" value="0" /> | |
<entry key="MeshSmoothingIterations" value="20" /> | |
<entry key="MeshSmoothingRelaxationFactor" value="0.01" /> | |
<entry key="UseDecimation" value="0" /> | |
<entry key="UseGaussianSmoothing" value="1" /> | |
<entry key="UseMeshSmoothing" value="0" /> | |
</folder> | |
</folder> | |
<folder key="SNAP" > | |
<folder key="SnakeParameters" > | |
<entry key="AdvectionSpeedExponent" value="0" /> | |
<entry key="AdvectionWeight" value="0" /> | |
<entry key="AutomaticTimeStep" value="1" /> | |
<entry key="Clamp" value="1" /> | |
<entry key="CurvatureSpeedExponent" value="-1" /> | |
<entry key="CurvatureWeight" value="0.2" /> | |
<entry key="Ground" value="5" /> | |
<entry key="LaplacianSpeedExponent" value="0" /> | |
<entry key="LaplacianWeight" value="0" /> | |
<entry key="PropagationSpeedExponent" value="1" /> | |
<entry key="PropagationWeight" value="1" /> | |
<entry key="SnakeType" value="RegionCompetition" /> | |
<entry key="SolverAlgorithm" value="ParallelSparseField" /> | |
<entry key="TimeStepFactor" value="1" /> | |
</folder> | |
</folder> | |
</folder> | |
</folder> | |
<folder key="Layer[001]" > | |
<entry key="AbsolutePath" value="%segmentation_path%" /> | |
<entry key="Role" value="SegmentationRole" /> | |
<folder key="LayerMetaData" > | |
<entry key="Alpha" value="0" /> | |
<entry key="CustomNickName" value="" /> | |
<entry key="Sticky" value="1" /> | |
</folder> | |
</folder> | |
</folder> | |
</registry> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment