diff --git "a/data/data_processing.ipynb" "b/data/data_processing.ipynb" new file mode 100644--- /dev/null +++ "b/data/data_processing.ipynb" @@ -0,0 +1,2687 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For convinience, I've unified all of the data preprocessing\n", + "notebooks from [ALPNet](https://github.com/cheng-01037/Self-supervised-Fewshot-Medical-Image-Segmentation.git) into a single notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%reset\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import numpy as np\n", + "import os\n", + "import glob\n", + "import SimpleITK as sitk\n", + "import sys\n", + "\n", + "sys.path.insert(0, '../')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Create dirs for the SABS and CHAOS datasets\n", + "os.makedirs('./SABS', exist_ok=True)\n", + "os.makedirs('./CHAOST2', exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def copy_spacing_ori(src, dst):\n", + " dst.SetSpacing(src.GetSpacing())\n", + " dst.SetOrigin(src.GetOrigin())\n", + " dst.SetDirection(src.GetDirection())\n", + " return dst\n", + "\n", + "# helper functions copy pasted\n", + "def resample_by_res(mov_img_obj, new_spacing, interpolator = sitk.sitkLinear, logging = True):\n", + " resample = sitk.ResampleImageFilter()\n", + " resample.SetInterpolator(interpolator)\n", + " resample.SetOutputDirection(mov_img_obj.GetDirection())\n", + " resample.SetOutputOrigin(mov_img_obj.GetOrigin())\n", + " mov_spacing = mov_img_obj.GetSpacing()\n", + "\n", + " resample.SetOutputSpacing(new_spacing)\n", + " RES_COE = np.array(mov_spacing) * 1.0 / np.array(new_spacing)\n", + " new_size = np.array(mov_img_obj.GetSize()) * RES_COE \n", + "\n", + " resample.SetSize( [int(sz+1) for sz in new_size] )\n", + " if logging:\n", + " print(\"Spacing: {} -> {}\".format(mov_spacing, new_spacing))\n", + " print(\"Size {} -> {}\".format( mov_img_obj.GetSize(), new_size ))\n", + "\n", + " return resample.Execute(mov_img_obj)\n", + "\n", + "def resample_lb_by_res(mov_lb_obj, new_spacing, interpolator = sitk.sitkLinear, ref_img = None, logging = True):\n", + " src_mat = sitk.GetArrayFromImage(mov_lb_obj)\n", + " lbvs = np.unique(src_mat)\n", + " if logging:\n", + " print(\"Label values: {}\".format(lbvs))\n", + " for idx, lbv in enumerate(lbvs):\n", + " _src_curr_mat = np.float32(src_mat == lbv) \n", + " _src_curr_obj = sitk.GetImageFromArray(_src_curr_mat)\n", + " _src_curr_obj.CopyInformation(mov_lb_obj)\n", + " _tar_curr_obj = resample_by_res( _src_curr_obj, new_spacing, interpolator, logging )\n", + " _tar_curr_mat = np.rint(sitk.GetArrayFromImage(_tar_curr_obj)) * lbv\n", + " if idx == 0:\n", + " out_vol = _tar_curr_mat\n", + " else:\n", + " out_vol[_tar_curr_mat == lbv] = lbv\n", + " out_obj = sitk.GetImageFromArray(out_vol)\n", + " out_obj.SetSpacing( _tar_curr_obj.GetSpacing() )\n", + " if ref_img != None:\n", + " out_obj.CopyInformation(ref_img)\n", + " return out_obj\n", + " \n", + "## Then crop ROI\n", + "def get_label_center(label):\n", + " nnz = np.sum(label > 1e-5)\n", + " return np.int32(np.rint(np.sum(np.nonzero(label), axis = 1) * 1.0 / nnz))\n", + "\n", + "def image_crop(ori_vol, crop_size, referece_ctr_idx, padval = 0., only_2d = True):\n", + " \"\"\" crop a 3d matrix given the index of the new volume on the original volume\n", + " Args:\n", + " refernce_ctr_idx: the center of the new volume on the original volume (in indices)\n", + " only_2d: only do cropping on first two dimensions\n", + " \"\"\"\n", + " _expand_cropsize = [x + 1 for x in crop_size] # to deal with boundary case\n", + " if only_2d:\n", + " assert len(crop_size) == 2, \"Actual len {}\".format(len(crop_size))\n", + " assert len(referece_ctr_idx) == 2, \"Actual len {}\".format(len(referece_ctr_idx))\n", + " _expand_cropsize.append(ori_vol.shape[-1])\n", + " \n", + " image_patch = np.ones(tuple(_expand_cropsize)) * padval\n", + "\n", + " half_size = tuple( [int(x * 1.0 / 2) for x in _expand_cropsize] )\n", + " _min_idx = [0,0,0]\n", + " _max_idx = list(ori_vol.shape)\n", + "\n", + " # bias of actual cropped size to the beginning and the end of this volume\n", + " _bias_start = [0,0,0]\n", + " _bias_end = [0,0,0]\n", + "\n", + " for dim,hsize in enumerate(half_size):\n", + " if dim == 2 and only_2d:\n", + " break\n", + "\n", + " _bias_start[dim] = np.min([hsize, referece_ctr_idx[dim]])\n", + " _bias_end[dim] = np.min([hsize, ori_vol.shape[dim] - referece_ctr_idx[dim]])\n", + "\n", + " _min_idx[dim] = referece_ctr_idx[dim] - _bias_start[dim]\n", + " _max_idx[dim] = referece_ctr_idx[dim] + _bias_end[dim]\n", + " \n", + " if only_2d:\n", + " image_patch[ half_size[0] - _bias_start[0]: half_size[0] +_bias_end[0], \\\n", + " half_size[1] - _bias_start[1]: half_size[1] +_bias_end[1], ... ] = \\\n", + " ori_vol[ referece_ctr_idx[0] - _bias_start[0]: referece_ctr_idx[0] +_bias_end[0], \\\n", + " referece_ctr_idx[1] - _bias_start[1]: referece_ctr_idx[1] +_bias_end[1], ... ]\n", + "\n", + " image_patch = image_patch[ 0: crop_size[0], 0: crop_size[1], : ]\n", + " # then goes back to original volume\n", + " else:\n", + " image_patch[ half_size[0] - _bias_start[0]: half_size[0] +_bias_end[0], \\\n", + " half_size[1] - _bias_start[1]: half_size[1] +_bias_end[1], \\\n", + " half_size[2] - _bias_start[2]: half_size[2] +_bias_end[2] ] = \\\n", + " ori_vol[ referece_ctr_idx[0] - _bias_start[0]: referece_ctr_idx[0] +_bias_end[0], \\\n", + " referece_ctr_idx[1] - _bias_start[1]: referece_ctr_idx[1] +_bias_end[1], \\\n", + " referece_ctr_idx[2] - _bias_start[2]: referece_ctr_idx[2] +_bias_end[2] ]\n", + "\n", + " image_patch = image_patch[ 0: crop_size[0], 0: crop_size[1], 0: crop_size[2] ]\n", + " return image_patch\n", + "\n", + "s2n = sitk.GetArrayFromImage\n", + "\n", + "\n", + "def resample_imgs(imgs, segs, pids, scan_dir, BD_BIAS, SPA_FAC, required_res=512):\n", + " spa_fac = SPA_FAC\n", + " for img_fid, seg_fid, pid in zip(imgs, segs, pids):\n", + "\n", + " # lb_n = nio.read_nii_bysitk(seg_fid)\n", + "\n", + " img_obj = sitk.ReadImage( img_fid )\n", + " seg_obj = sitk.ReadImage( seg_fid )\n", + " print(img_fid, seg_fid)\n", + " ## image\n", + " array = sitk.GetArrayFromImage(img_obj)\n", + " H = W = array.shape[-1]\n", + " if SPA_FAC is None:\n", + " spa_fac = (H - 2 * BD_BIAS) / required_res\n", + " print(array.shape, f\"label shape {sitk.GetArrayFromImage(seg_obj).shape}\")\n", + " # cropping\n", + " array = array[:, BD_BIAS: -BD_BIAS, BD_BIAS: -BD_BIAS]\n", + " cropped_img_o = sitk.GetImageFromArray(array)\n", + " cropped_img_o = copy_spacing_ori(img_obj, cropped_img_o)\n", + "\n", + " # resampling\n", + " img_spa_ori = img_obj.GetSpacing()\n", + " res_img_o = resample_by_res(cropped_img_o, [img_spa_ori[0] * spa_fac, img_spa_ori[1] * spa_fac, img_spa_ori[-1]], interpolator = sitk.sitkLinear,\n", + " logging = True)\n", + "\n", + " ## label\n", + " lb_arr = sitk.GetArrayFromImage(seg_obj)\n", + " # cropping\n", + " lb_arr = lb_arr[:,BD_BIAS: -BD_BIAS, BD_BIAS: -BD_BIAS]\n", + " cropped_lb_o = sitk.GetImageFromArray(lb_arr)\n", + " cropped_lb_o = copy_spacing_ori(seg_obj, cropped_lb_o)\n", + "\n", + " lb_spa_ori = seg_obj.GetSpacing()\n", + "\n", + " # resampling\n", + " res_lb_o = resample_lb_by_res(cropped_lb_o, [lb_spa_ori[0] * spa_fac, lb_spa_ori[1] * spa_fac, lb_spa_ori[-1] ], interpolator = sitk.sitkLinear,\n", + " ref_img = res_img_o, logging = True)\n", + "\n", + " \n", + " out_img_fid = os.path.join( scan_dir, f'image_{pid}.nii.gz' )\n", + " out_lb_fid = os.path.join( scan_dir, f'label_{pid}.nii.gz' ) \n", + " \n", + " # then save\n", + " sitk.WriteImage(res_img_o, out_img_fid, True) \n", + " sitk.WriteImage(res_lb_o, out_lb_fid, True) \n", + " print(f\"{out_img_fid} has been saved, shape: {res_img_o.GetSize()}\")\n", + " print(f\"{out_lb_fid} has been saved\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intensitiy Normalization for CT Images" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# set up directories for images\n", + "IMG_FOLDER=\"./miccai2015/RawData/Training/img\"\n", + "SEG_FOLDER=\"./miccai2015/RawData/Training/label\"\n", + "OUT_FOLDER=\"./SABS/tmp_normalized/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + } + ], + "source": [ + "imgs = sorted(glob.glob(IMG_FOLDER + \"/*.nii.gz\"))\n", + "segs = sorted(glob.glob(SEG_FOLDER + \"/*.nii.gz\"))\n", + "pids = [pid.split(\"img\")[-1].split(\".\")[0] for pid in imgs]\n", + "print(sorted(pids))\n", + "assert len(imgs) == len(segs)\n", + "for img, seg in zip(imgs, segs):\n", + " print(img, seg)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(147, 512, 512) label shape (147, 512, 512)\n", + "./SABS/tmp_normalized/image_0.nii.gz has been save\n", + "./SABS/tmp_normalized/label_0.nii.gz has been save\n", + "(139, 512, 512) label shape (139, 512, 512)\n", + "./SABS/tmp_normalized/image_1.nii.gz has been save\n", + "./SABS/tmp_normalized/label_1.nii.gz has been save\n", + "(198, 512, 512) label shape (198, 512, 512)\n", + "./SABS/tmp_normalized/image_2.nii.gz has been save\n", + "./SABS/tmp_normalized/label_2.nii.gz has been save\n", + "(140, 512, 512) label shape (140, 512, 512)\n", + "./SABS/tmp_normalized/image_3.nii.gz has been save\n", + "./SABS/tmp_normalized/label_3.nii.gz has been save\n", + "(117, 512, 512) label shape (117, 512, 512)\n", + "./SABS/tmp_normalized/image_4.nii.gz has been save\n", + "./SABS/tmp_normalized/label_4.nii.gz has been save\n", + "(131, 512, 512) label shape (131, 512, 512)\n", + "./SABS/tmp_normalized/image_5.nii.gz has been save\n", + "./SABS/tmp_normalized/label_5.nii.gz has been save\n", + "(163, 512, 512) label shape (163, 512, 512)\n", + "./SABS/tmp_normalized/image_6.nii.gz has been save\n", + "./SABS/tmp_normalized/label_6.nii.gz has been save\n", + "(148, 512, 512) label shape (148, 512, 512)\n", + "./SABS/tmp_normalized/image_7.nii.gz has been save\n", + "./SABS/tmp_normalized/label_7.nii.gz has been save\n", + "(149, 512, 512) label shape (149, 512, 512)\n", + "./SABS/tmp_normalized/image_8.nii.gz has been save\n", + "./SABS/tmp_normalized/label_8.nii.gz has been save\n", + "(148, 512, 512) label shape (148, 512, 512)\n", + "./SABS/tmp_normalized/image_9.nii.gz has been save\n", + "./SABS/tmp_normalized/label_9.nii.gz has been save\n", + "(143, 512, 512) label shape (143, 512, 512)\n", + "./SABS/tmp_normalized/image_10.nii.gz has been save\n", + "./SABS/tmp_normalized/label_10.nii.gz has been save\n", + "(89, 512, 512) label shape (89, 512, 512)\n", + "./SABS/tmp_normalized/image_11.nii.gz has been save\n", + "./SABS/tmp_normalized/label_11.nii.gz has been save\n", + "(96, 512, 512) label shape (96, 512, 512)\n", + "./SABS/tmp_normalized/image_12.nii.gz has been save\n", + "./SABS/tmp_normalized/label_12.nii.gz has been save\n", + "(124, 512, 512) label shape (124, 512, 512)\n", + "./SABS/tmp_normalized/image_13.nii.gz has been save\n", + "./SABS/tmp_normalized/label_13.nii.gz has been save\n", + "(85, 512, 512) label shape (85, 512, 512)\n", + "./SABS/tmp_normalized/image_14.nii.gz has been save\n", + "./SABS/tmp_normalized/label_14.nii.gz has been save\n", + "(131, 512, 512) label shape (131, 512, 512)\n", + "./SABS/tmp_normalized/image_15.nii.gz has been save\n", + "./SABS/tmp_normalized/label_15.nii.gz has been save\n", + "(88, 512, 512) label shape (88, 512, 512)\n", + "./SABS/tmp_normalized/image_16.nii.gz has been save\n", + "./SABS/tmp_normalized/label_16.nii.gz has been save\n", + "(89, 512, 512) label shape (89, 512, 512)\n", + "./SABS/tmp_normalized/image_17.nii.gz has been save\n", + "./SABS/tmp_normalized/label_17.nii.gz has been save\n", + "(100, 512, 512) label shape (100, 512, 512)\n", + "./SABS/tmp_normalized/image_18.nii.gz has been save\n", + "./SABS/tmp_normalized/label_18.nii.gz has been save\n", + "(153, 512, 512) label shape (153, 512, 512)\n", + "./SABS/tmp_normalized/image_19.nii.gz has been save\n", + "./SABS/tmp_normalized/label_19.nii.gz has been save\n", + "(93, 512, 512) label shape (93, 512, 512)\n", + "./SABS/tmp_normalized/image_20.nii.gz has been save\n", + "./SABS/tmp_normalized/label_20.nii.gz has been save\n", + "(144, 512, 512) label shape (144, 512, 512)\n", + "./SABS/tmp_normalized/image_21.nii.gz has been save\n", + "./SABS/tmp_normalized/label_21.nii.gz has been save\n", + "(104, 512, 512) label shape (104, 512, 512)\n", + "./SABS/tmp_normalized/image_22.nii.gz has been save\n", + "./SABS/tmp_normalized/label_22.nii.gz has been save\n", + "(98, 512, 512) label shape (98, 512, 512)\n", + "./SABS/tmp_normalized/image_23.nii.gz has been save\n", + "./SABS/tmp_normalized/label_23.nii.gz has been save\n", + "(94, 512, 512) label shape (94, 512, 512)\n", + "./SABS/tmp_normalized/image_24.nii.gz has been save\n", + "./SABS/tmp_normalized/label_24.nii.gz has been save\n", + "(184, 512, 512) label shape (184, 512, 512)\n", + "./SABS/tmp_normalized/image_25.nii.gz has been save\n", + "./SABS/tmp_normalized/label_25.nii.gz has been save\n", + "(99, 512, 512) label shape (99, 512, 512)\n", + "./SABS/tmp_normalized/image_26.nii.gz has been save\n", + "./SABS/tmp_normalized/label_26.nii.gz has been save\n", + "(100, 512, 512) label shape (100, 512, 512)\n", + "./SABS/tmp_normalized/image_27.nii.gz has been save\n", + "./SABS/tmp_normalized/label_27.nii.gz has been save\n", + "(90, 512, 512) label shape (90, 512, 512)\n", + "./SABS/tmp_normalized/image_28.nii.gz has been save\n", + "./SABS/tmp_normalized/label_28.nii.gz has been save\n", + "(195, 512, 512) label shape (195, 512, 512)\n", + "./SABS/tmp_normalized/image_29.nii.gz has been save\n", + "./SABS/tmp_normalized/label_29.nii.gz has been save\n" + ] + } + ], + "source": [ + "import copy\n", + "scan_dir = OUT_FOLDER\n", + "LIR = -125\n", + "HIR = 275\n", + "os.makedirs(scan_dir, exist_ok = True)\n", + "\n", + "reindex = 0\n", + "for img_fid, seg_fid, pid in zip(imgs, segs, pids):\n", + "\n", + " img_obj = sitk.ReadImage( img_fid )\n", + " seg_obj = sitk.ReadImage( seg_fid )\n", + "\n", + " array = sitk.GetArrayFromImage(img_obj)\n", + " print(array.shape, f\"label shape {sitk.GetArrayFromImage(seg_obj).shape}\")\n", + " array[array > HIR] = HIR\n", + " array[array < LIR] = LIR\n", + " \n", + " array = (array - array.min()) / (array.max() - array.min()) * 255.0\n", + " \n", + " # then normalize this\n", + " \n", + " wined_img = sitk.GetImageFromArray(array)\n", + " wined_img = copy_spacing_ori(img_obj, wined_img)\n", + " \n", + " out_img_fid = os.path.join( scan_dir, f'image_{str(reindex)}.nii.gz' )\n", + " out_lb_fid = os.path.join( scan_dir, f'label_{str(reindex)}.nii.gz' ) \n", + " \n", + " # then save\n", + " sitk.WriteImage(wined_img, out_img_fid, True) \n", + " sitk.WriteImage(seg_obj, out_lb_fid, True) \n", + " print(\"{} has been save\".format(out_img_fid))\n", + " print(\"{} has been save\".format(out_lb_fid))\n", + " reindex += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Overview\n", + "\n", + "This is the second step of preprocessing\n", + "\n", + "Cut out irrelevant empty boundary and resample to 512x512 in axial plane.\n", + "\n", + "Input: intensity-normalized images\n", + "\n", + "Output: spacially resampled images" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['0', '1', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '4', '5', '6', '7', '8', '9']\n", + "./SABS/tmp_normalized/image_0.nii.gz ./SABS/tmp_normalized/label_0.nii.gz\n", + "./SABS/tmp_normalized/image_1.nii.gz ./SABS/tmp_normalized/label_1.nii.gz\n", + "./SABS/tmp_normalized/image_10.nii.gz ./SABS/tmp_normalized/label_10.nii.gz\n", + "./SABS/tmp_normalized/image_11.nii.gz ./SABS/tmp_normalized/label_11.nii.gz\n", + "./SABS/tmp_normalized/image_12.nii.gz ./SABS/tmp_normalized/label_12.nii.gz\n", + "./SABS/tmp_normalized/image_13.nii.gz ./SABS/tmp_normalized/label_13.nii.gz\n", + "./SABS/tmp_normalized/image_14.nii.gz ./SABS/tmp_normalized/label_14.nii.gz\n", + "./SABS/tmp_normalized/image_15.nii.gz ./SABS/tmp_normalized/label_15.nii.gz\n", + "./SABS/tmp_normalized/image_16.nii.gz ./SABS/tmp_normalized/label_16.nii.gz\n", + "./SABS/tmp_normalized/image_17.nii.gz ./SABS/tmp_normalized/label_17.nii.gz\n", + "./SABS/tmp_normalized/image_18.nii.gz ./SABS/tmp_normalized/label_18.nii.gz\n", + "./SABS/tmp_normalized/image_19.nii.gz ./SABS/tmp_normalized/label_19.nii.gz\n", + "./SABS/tmp_normalized/image_2.nii.gz ./SABS/tmp_normalized/label_2.nii.gz\n", + "./SABS/tmp_normalized/image_20.nii.gz ./SABS/tmp_normalized/label_20.nii.gz\n", + "./SABS/tmp_normalized/image_21.nii.gz ./SABS/tmp_normalized/label_21.nii.gz\n", + "./SABS/tmp_normalized/image_22.nii.gz ./SABS/tmp_normalized/label_22.nii.gz\n", + "./SABS/tmp_normalized/image_23.nii.gz ./SABS/tmp_normalized/label_23.nii.gz\n", + "./SABS/tmp_normalized/image_24.nii.gz ./SABS/tmp_normalized/label_24.nii.gz\n", + "./SABS/tmp_normalized/image_25.nii.gz ./SABS/tmp_normalized/label_25.nii.gz\n", + "./SABS/tmp_normalized/image_26.nii.gz ./SABS/tmp_normalized/label_26.nii.gz\n", + "./SABS/tmp_normalized/image_27.nii.gz ./SABS/tmp_normalized/label_27.nii.gz\n", + "./SABS/tmp_normalized/image_28.nii.gz ./SABS/tmp_normalized/label_28.nii.gz\n", + "./SABS/tmp_normalized/image_29.nii.gz ./SABS/tmp_normalized/label_29.nii.gz\n", + "./SABS/tmp_normalized/image_3.nii.gz ./SABS/tmp_normalized/label_3.nii.gz\n", + "./SABS/tmp_normalized/image_4.nii.gz ./SABS/tmp_normalized/label_4.nii.gz\n", + "./SABS/tmp_normalized/image_5.nii.gz ./SABS/tmp_normalized/label_5.nii.gz\n", + "./SABS/tmp_normalized/image_6.nii.gz ./SABS/tmp_normalized/label_6.nii.gz\n", + "./SABS/tmp_normalized/image_7.nii.gz ./SABS/tmp_normalized/label_7.nii.gz\n", + "./SABS/tmp_normalized/image_8.nii.gz ./SABS/tmp_normalized/label_8.nii.gz\n", + "./SABS/tmp_normalized/image_9.nii.gz ./SABS/tmp_normalized/label_9.nii.gz\n" + ] + } + ], + "source": [ + "IMG_FOLDER = \"./SABS/tmp_normalized\"\n", + "\n", + "SEG_FOLDER = IMG_FOLDER\n", + "imgs = glob.glob(IMG_FOLDER + \"/image_*.nii.gz\")\n", + "imgs = sorted([ fid for fid in sorted(imgs) ])\n", + "segs = sorted([ fid for fid in glob.glob(SEG_FOLDER + \"/label_*.nii.gz\")])\n", + "\n", + "pids = [pid.split(\"_\")[-1].split(\".\")[0] for pid in imgs]\n", + "print(pids)\n", + "for img, seg in zip(imgs, segs):\n", + " print(img, seg)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "./SABS/tmp_normalized/image_0.nii.gz ./SABS/tmp_normalized/label_0.nii.gz\n", + "(147, 512, 512) label shape (147, 512, 512)\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "Spacing: (0.66796875, 0.66796875, 3.0) -> [0.66796875, 0.66796875, 3.0]\n", + "Size (448, 448, 147) -> [448. 448. 147.]\n", + "./SABS/sabs_CT_normalized/image_0.nii.gz has been saved, shape: (449, 449, 148)\n", + "./SABS/sabs_CT_normalized/label_0.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_1.nii.gz ./SABS/tmp_normalized/label_1.nii.gz\n", + "(139, 512, 512) label shape (139, 512, 512)\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "Spacing: (0.720703125, 0.720703125, 3.0) -> [0.720703125, 0.720703125, 3.0]\n", + "Size (448, 448, 139) -> [448. 448. 139.]\n", + "./SABS/sabs_CT_normalized/image_1.nii.gz has been saved, shape: (449, 449, 140)\n", + "./SABS/sabs_CT_normalized/label_1.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_10.nii.gz ./SABS/tmp_normalized/label_10.nii.gz\n", + "(143, 512, 512) label shape (143, 512, 512)\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "Spacing: (0.68359375, 0.68359375, 3.0) -> [0.68359375, 0.68359375, 3.0]\n", + "Size (448, 448, 143) -> [448. 448. 143.]\n", + "./SABS/sabs_CT_normalized/image_10.nii.gz has been saved, shape: (449, 449, 144)\n", + "./SABS/sabs_CT_normalized/label_10.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_11.nii.gz ./SABS/tmp_normalized/label_11.nii.gz\n", + "(89, 512, 512) label shape (89, 512, 512)\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.7675780057907104, 0.7675780057907104, 5.0) -> [0.7675780057907104, 0.7675780057907104, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "./SABS/sabs_CT_normalized/image_11.nii.gz has been saved, shape: (449, 449, 90)\n", + "./SABS/sabs_CT_normalized/label_11.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_12.nii.gz ./SABS/tmp_normalized/label_12.nii.gz\n", + "(96, 512, 512) label shape (96, 512, 512)\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Label values: [ 0 1 2 3 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "Spacing: (0.70703125, 0.70703125, 5.0) -> [0.70703125, 0.70703125, 5.0]\n", + "Size (448, 448, 96) -> [448. 448. 96.]\n", + "./SABS/sabs_CT_normalized/image_12.nii.gz has been saved, shape: (449, 449, 97)\n", + "./SABS/sabs_CT_normalized/label_12.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_13.nii.gz ./SABS/tmp_normalized/label_13.nii.gz\n", + "(124, 512, 512) label shape (124, 512, 512)\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "Spacing: (0.685546875, 0.685546875, 3.0) -> [0.685546875, 0.685546875, 3.0]\n", + "Size (448, 448, 124) -> [448. 448. 124.]\n", + "./SABS/sabs_CT_normalized/image_13.nii.gz has been saved, shape: (449, 449, 125)\n", + "./SABS/sabs_CT_normalized/label_13.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_14.nii.gz ./SABS/tmp_normalized/label_14.nii.gz\n", + "(85, 512, 512) label shape (85, 512, 512)\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "Spacing: (0.83203125, 0.83203125, 5.0) -> [0.83203125, 0.83203125, 5.0]\n", + "Size (448, 448, 85) -> [448. 448. 85.]\n", + "./SABS/sabs_CT_normalized/image_14.nii.gz has been saved, shape: (449, 449, 86)\n", + "./SABS/sabs_CT_normalized/label_14.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_15.nii.gz ./SABS/tmp_normalized/label_15.nii.gz\n", + "(131, 512, 512) label shape (131, 512, 512)\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.7792969942092896, 0.7792969942092896, 5.0) -> [0.7792969942092896, 0.7792969942092896, 5.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "./SABS/sabs_CT_normalized/image_15.nii.gz has been saved, shape: (449, 449, 132)\n", + "./SABS/sabs_CT_normalized/label_15.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_16.nii.gz ./SABS/tmp_normalized/label_16.nii.gz\n", + "(88, 512, 512) label shape (88, 512, 512)\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "Spacing: (0.7753909826278687, 0.7753909826278687, 5.0) -> [0.7753909826278687, 0.7753909826278687, 5.0]\n", + "Size (448, 448, 88) -> [448. 448. 88.]\n", + "./SABS/sabs_CT_normalized/image_16.nii.gz has been saved, shape: (449, 449, 89)\n", + "./SABS/sabs_CT_normalized/label_16.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_17.nii.gz ./SABS/tmp_normalized/label_17.nii.gz\n", + "(89, 512, 512) label shape (89, 512, 512)\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "Spacing: (0.796875, 0.796875, 5.0) -> [0.796875, 0.796875, 5.0]\n", + "Size (448, 448, 89) -> [448. 448. 89.]\n", + "./SABS/sabs_CT_normalized/image_17.nii.gz has been saved, shape: (449, 449, 90)\n", + "./SABS/sabs_CT_normalized/label_17.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_18.nii.gz ./SABS/tmp_normalized/label_18.nii.gz\n", + "(100, 512, 512) label shape (100, 512, 512)\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.875, 0.875, 3.0) -> [0.875, 0.875, 3.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "./SABS/sabs_CT_normalized/image_18.nii.gz has been saved, shape: (449, 449, 101)\n", + "./SABS/sabs_CT_normalized/label_18.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_19.nii.gz ./SABS/tmp_normalized/label_19.nii.gz\n", + "(153, 512, 512) label shape (153, 512, 512)\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 153) -> [448. 448. 153.]\n", + "./SABS/sabs_CT_normalized/image_19.nii.gz has been saved, shape: (449, 449, 154)\n", + "./SABS/sabs_CT_normalized/label_19.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_2.nii.gz ./SABS/tmp_normalized/label_2.nii.gz\n", + "(198, 512, 512) label shape (198, 512, 512)\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "Spacing: (0.8984375, 0.8984375, 3.0) -> [0.8984375, 0.8984375, 3.0]\n", + "Size (448, 448, 198) -> [448. 448. 198.]\n", + "./SABS/sabs_CT_normalized/image_2.nii.gz has been saved, shape: (449, 449, 199)\n", + "./SABS/sabs_CT_normalized/label_2.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_20.nii.gz ./SABS/tmp_normalized/label_20.nii.gz\n", + "(93, 512, 512) label shape (93, 512, 512)\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "Spacing: (0.837890625, 0.837890625, 3.0) -> [0.837890625, 0.837890625, 3.0]\n", + "Size (448, 448, 93) -> [448. 448. 93.]\n", + "./SABS/sabs_CT_normalized/image_20.nii.gz has been saved, shape: (449, 449, 94)\n", + "./SABS/sabs_CT_normalized/label_20.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_21.nii.gz ./SABS/tmp_normalized/label_21.nii.gz\n", + "(144, 512, 512) label shape (144, 512, 512)\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "Spacing: (0.740234375, 0.740234375, 3.0) -> [0.740234375, 0.740234375, 3.0]\n", + "Size (448, 448, 144) -> [448. 448. 144.]\n", + "./SABS/sabs_CT_normalized/image_21.nii.gz has been saved, shape: (449, 449, 145)\n", + "./SABS/sabs_CT_normalized/label_21.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_22.nii.gz ./SABS/tmp_normalized/label_22.nii.gz\n", + "(104, 512, 512) label shape (104, 512, 512)\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "Spacing: (0.8144530057907104, 0.8144530057907104, 5.0) -> [0.8144530057907104, 0.8144530057907104, 5.0]\n", + "Size (448, 448, 104) -> [448. 448. 104.]\n", + "./SABS/sabs_CT_normalized/image_22.nii.gz has been saved, shape: (449, 449, 105)\n", + "./SABS/sabs_CT_normalized/label_22.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_23.nii.gz ./SABS/tmp_normalized/label_23.nii.gz\n", + "(98, 512, 512) label shape (98, 512, 512)\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "Spacing: (0.671875, 0.671875, 5.0) -> [0.671875, 0.671875, 5.0]\n", + "Size (448, 448, 98) -> [448. 448. 98.]\n", + "./SABS/sabs_CT_normalized/image_23.nii.gz has been saved, shape: (449, 449, 99)\n", + "./SABS/sabs_CT_normalized/label_23.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_24.nii.gz ./SABS/tmp_normalized/label_24.nii.gz\n", + "(94, 512, 512) label shape (94, 512, 512)\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Label values: [ 0 1 2 3 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "Spacing: (0.9199219942092896, 0.9199219942092896, 5.0) -> [0.9199219942092896, 0.9199219942092896, 5.0]\n", + "Size (448, 448, 94) -> [448. 448. 94.]\n", + "./SABS/sabs_CT_normalized/image_24.nii.gz has been saved, shape: (449, 449, 95)\n", + "./SABS/sabs_CT_normalized/label_24.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_25.nii.gz ./SABS/tmp_normalized/label_25.nii.gz\n", + "(184, 512, 512) label shape (184, 512, 512)\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "Spacing: (0.74609375, 0.74609375, 3.0) -> [0.74609375, 0.74609375, 3.0]\n", + "Size (448, 448, 184) -> [448. 448. 184.]\n", + "./SABS/sabs_CT_normalized/image_25.nii.gz has been saved, shape: (449, 449, 185)\n", + "./SABS/sabs_CT_normalized/label_25.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_26.nii.gz ./SABS/tmp_normalized/label_26.nii.gz\n", + "(99, 512, 512) label shape (99, 512, 512)\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "Spacing: (0.703125, 0.703125, 5.0) -> [0.703125, 0.703125, 5.0]\n", + "Size (448, 448, 99) -> [448. 448. 99.]\n", + "./SABS/sabs_CT_normalized/image_26.nii.gz has been saved, shape: (449, 449, 100)\n", + "./SABS/sabs_CT_normalized/label_26.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_27.nii.gz ./SABS/tmp_normalized/label_27.nii.gz\n", + "(100, 512, 512) label shape (100, 512, 512)\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 5.0) -> [0.9765620231628418, 0.9765620231628418, 5.0]\n", + "Size (448, 448, 100) -> [448. 448. 100.]\n", + "./SABS/sabs_CT_normalized/image_27.nii.gz has been saved, shape: (449, 449, 101)\n", + "./SABS/sabs_CT_normalized/label_27.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_28.nii.gz ./SABS/tmp_normalized/label_28.nii.gz\n", + "(90, 512, 512) label shape (90, 512, 512)\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "Spacing: (0.9760000109672546, 0.9760000109672546, 5.0) -> [0.9760000109672546, 0.9760000109672546, 5.0]\n", + "Size (448, 448, 90) -> [448. 448. 90.]\n", + "./SABS/sabs_CT_normalized/image_28.nii.gz has been saved, shape: (449, 449, 91)\n", + "./SABS/sabs_CT_normalized/label_28.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_29.nii.gz ./SABS/tmp_normalized/label_29.nii.gz\n", + "(195, 512, 512) label shape (195, 512, 512)\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "Spacing: (0.7421875, 0.7421875, 3.0) -> [0.7421875, 0.7421875, 3.0]\n", + "Size (448, 448, 195) -> [448. 448. 195.]\n", + "./SABS/sabs_CT_normalized/image_29.nii.gz has been saved, shape: (449, 449, 196)\n", + "./SABS/sabs_CT_normalized/label_29.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_3.nii.gz ./SABS/tmp_normalized/label_3.nii.gz\n", + "(140, 512, 512) label shape (140, 512, 512)\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "Spacing: (0.59375, 0.59375, 3.0) -> [0.59375, 0.59375, 3.0]\n", + "Size (448, 448, 140) -> [448. 448. 140.]\n", + "./SABS/sabs_CT_normalized/image_3.nii.gz has been saved, shape: (449, 449, 141)\n", + "./SABS/sabs_CT_normalized/label_3.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_4.nii.gz ./SABS/tmp_normalized/label_4.nii.gz\n", + "(117, 512, 512) label shape (117, 512, 512)\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "Spacing: (0.90625, 0.90625, 3.0) -> [0.90625, 0.90625, 3.0]\n", + "Size (448, 448, 117) -> [448. 448. 117.]\n", + "./SABS/sabs_CT_normalized/image_4.nii.gz has been saved, shape: (449, 449, 118)\n", + "./SABS/sabs_CT_normalized/label_4.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_5.nii.gz ./SABS/tmp_normalized/label_5.nii.gz\n", + "(131, 512, 512) label shape (131, 512, 512)\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "Spacing: (0.701171875, 0.701171875, 3.0) -> [0.701171875, 0.701171875, 3.0]\n", + "Size (448, 448, 131) -> [448. 448. 131.]\n", + "./SABS/sabs_CT_normalized/image_5.nii.gz has been saved, shape: (449, 449, 132)\n", + "./SABS/sabs_CT_normalized/label_5.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_6.nii.gz ./SABS/tmp_normalized/label_6.nii.gz\n", + "(163, 512, 512) label shape (163, 512, 512)\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "Spacing: (0.748046875, 0.748046875, 3.0) -> [0.748046875, 0.748046875, 3.0]\n", + "Size (448, 448, 163) -> [448. 448. 163.]\n", + "./SABS/sabs_CT_normalized/image_6.nii.gz has been saved, shape: (449, 449, 164)\n", + "./SABS/sabs_CT_normalized/label_6.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_7.nii.gz ./SABS/tmp_normalized/label_7.nii.gz\n", + "(148, 512, 512) label shape (148, 512, 512)\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.728515625, 0.728515625, 3.0) -> [0.728515625, 0.728515625, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "./SABS/sabs_CT_normalized/image_7.nii.gz has been saved, shape: (449, 449, 149)\n", + "./SABS/sabs_CT_normalized/label_7.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_8.nii.gz ./SABS/tmp_normalized/label_8.nii.gz\n", + "(149, 512, 512) label shape (149, 512, 512)\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "Spacing: (0.9765620231628418, 0.9765620231628418, 2.5) -> [0.9765620231628418, 0.9765620231628418, 2.5]\n", + "Size (448, 448, 149) -> [448. 448. 149.]\n", + "./SABS/sabs_CT_normalized/image_8.nii.gz has been saved, shape: (449, 449, 150)\n", + "./SABS/sabs_CT_normalized/label_8.nii.gz has been saved\n", + "./SABS/tmp_normalized/image_9.nii.gz ./SABS/tmp_normalized/label_9.nii.gz\n", + "(148, 512, 512) label shape (148, 512, 512)\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Label values: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "Spacing: (0.78125, 0.78125, 3.0) -> [0.78125, 0.78125, 3.0]\n", + "Size (448, 448, 148) -> [448. 448. 148.]\n", + "./SABS/sabs_CT_normalized/image_9.nii.gz has been saved, shape: (449, 449, 149)\n", + "./SABS/sabs_CT_normalized/label_9.nii.gz has been saved\n" + ] + } + ], + "source": [ + "import copy\n", + "OUT_FOLDER = \"./SABS/sabs_CT_normalized\"\n", + "BD_BIAS = 32 # cut irrelavent empty boundary to make roi stands out\n", + "\n", + "# SPA_FAC = (512 - 2 * BD_BIAS) / 512 # spacing factor\n", + "for res in (256, 672):\n", + " if res == 672:\n", + " OUT_FOLDER += \"_672\"\n", + " scan_dir = OUT_FOLDER\n", + " os.makedirs(OUT_FOLDER, exist_ok = True)\n", + "\n", + " resample_imgs(imgs, segs, pids, scan_dir, BD_BIAS, SPA_FAC=None, required_res=res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Synapse Classmap Generation" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pid 0 finished!\n", + "pid 1 finished!\n", + "pid 2 finished!\n", + "pid 3 finished!\n", + "pid 4 finished!\n", + "pid 5 finished!\n", + "pid 6 finished!\n", + "pid 7 finished!\n", + "pid 8 finished!\n", + "pid 9 finished!\n", + "pid 10 finished!\n", + "pid 11 finished!\n", + "pid 12 finished!\n", + "pid 13 finished!\n", + "pid 14 finished!\n", + "pid 15 finished!\n", + "pid 16 finished!\n", + "pid 17 finished!\n", + "pid 18 finished!\n", + "pid 19 finished!\n", + "pid 20 finished!\n", + "pid 21 finished!\n", + "pid 22 finished!\n", + "pid 23 finished!\n", + "pid 24 finished!\n", + "pid 25 finished!\n", + "pid 26 finished!\n", + "pid 27 finished!\n", + "pid 28 finished!\n", + "pid 29 finished!\n", + "pid 30 finished!\n", + "pid 31 finished!\n", + "pid 32 finished!\n", + "pid 33 finished!\n", + "pid 34 finished!\n", + "pid 35 finished!\n", + "pid 36 finished!\n", + "pid 37 finished!\n" + ] + } + ], + "source": [ + "import json\n", + "# import niftiio as nio\n", + "import SimpleITK as sitk\n", + "\n", + "# normalization: cut top 2% of histogram, then doing volume-wise normalization\n", + "IMG_BNAMES = (\"./SABS/sabs_CT_normalized/image_*.nii.gz\", \"./SABS/sabs_CT_normalized_672/image_*.nii.gz\")\n", + "SEG_NAMES = (\"./SABS/sabs_CT_normalized/label_*.nii.gz\", \"./SABS/sabs_CT_normalized_672/label_*.nii.gz\")\n", + "for IMG_BNAME, SEG_BNAME in zip(IMG_BNAMES, SEG_NAMES):\n", + " imgs = glob.glob(IMG_BNAME)\n", + " segs = glob.glob(SEG_BNAME)\n", + " imgs = [ fid for fid in sorted(imgs, key = lambda x: int(x.split(\"_\")[-1].split(\".nii.gz\")[0]) ) ]\n", + " segs = [ fid for fid in sorted(segs, key = lambda x: int(x.split(\"_\")[-1].split(\".nii.gz\")[0]) ) ]\n", + " for img, seg in zip(imgs, segs):\n", + " print(img, seg)\n", + "\n", + " classmap = {}\n", + " LABEL_NAME = [\"BGD\", \"SPLEEN\", \"KID_R\", \"KID_l\", \"GALLBLADDER\", \"ESOPHAGUS\", \"LIVER\", \"STOMACH\", \"AORTA\", \"IVC\", \"PS_VEIN\", \"PANCREAS\", \"AG_R\", \"AG_L\"] \n", + "\n", + " MIN_TP=1 # minimum number of true positive pixels in a slice\n", + "\n", + " fid = os.path.dirname(IMG_BNAME) + f'/classmap_{MIN_TP}.json'\n", + " for _lb in LABEL_NAME:\n", + " classmap[_lb] = {}\n", + " for pid in range(len(segs)):\n", + " classmap[_lb][str(pid)] = []\n", + "\n", + " for pid, seg in enumerate(segs):\n", + " # lb_vol = nio.read_nii_bysitk(seg)\n", + " lb_vol = sitk.GetArrayFromImage(sitk.ReadImage(seg))\n", + " n_slice = lb_vol.shape[0]\n", + " for slc in range(n_slice):\n", + " for cls in range(len(LABEL_NAME)):\n", + " if cls in lb_vol[slc, ...]:\n", + " if np.sum( lb_vol[slc, ...] == cls) >= MIN_TP:\n", + " classmap[LABEL_NAME[cls]][str(pid)].append(slc)\n", + " print(f'pid {str(pid)} finished!')\n", + " \n", + " with open(fid, 'w') as fopen:\n", + " json.dump(classmap, fopen)\n", + " fopen.close() \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MRI Image Normalization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## PLEASE RUN dcm_img_to_nii.sh to convert dicom to nii.gz\n", + "! ./dcm_img_to_nii.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [316. 316. 35.99999911]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_1.nii.gz has been saved\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 36) -> [348. 348. 35.99999911]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_10.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_13.nii.gz has been saved\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_15.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_19.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_2.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 26) -> [348. 348. 30.38961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_20.nii.gz has been saved\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 31) -> [340. 340. 32.20779221]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_21.nii.gz has been saved\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 33) -> [356. 356. 37.28571347]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_22.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 30) -> [348. 348. 35.06493506]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_3.nii.gz has been saved\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [332. 332. 33.8961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_31.nii.gz has been saved\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 39) -> [372. 372. 45.58441558]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_32.nii.gz has been saved\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 29) -> [356. 356. 33.8961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_33.nii.gz has been saved\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [356. 356. 34.28571503]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_34.nii.gz has been saved\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 38) -> [332. 332. 44.41558442]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_36.nii.gz has been saved\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 32) -> [300. 300. 37.4025974]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_37.nii.gz has been saved\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (320, 320, 34) -> [348. 348. 39.74025974]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_38.nii.gz has been saved\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 26) -> [324. 324. 30.38961039]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_39.nii.gz has been saved\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [1.25, 1.25, 7.7]\n", + "Size (256, 256, 30) -> [340. 340. 35.06493506]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_5.nii.gz has been saved\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [1.25, 1.25, 7.7]\n", + "Size (288, 288, 32) -> [324. 324. 33.24675325]\n", + "./CHAOST2/chaos_MR_T2_normalized/image_8.nii.gz has been saved\n" + ] + } + ], + "source": [ + "import copy\n", + "\n", + "IMG_FOLDER = \"./CHAOST2/niis/T2SPIR\" #, path of nii-like images from step 1\n", + "OUT_FOLDER=\"./CHAOST2/chaos_MR_T2_normalized/\" # output directory\n", + "\n", + "imgs = glob.glob(IMG_FOLDER + f'/image_*.nii.gz')\n", + "imgs = [ fid for fid in sorted(imgs) ]\n", + "segs = [ fid for fid in sorted(glob.glob(IMG_FOLDER + f'/label_*.nii.gz')) ]\n", + "\n", + "pids = [pid.split(\"_\")[-1].split(\".\")[0] for pid in imgs]\n", + "for img, seg in zip(imgs, segs):\n", + " print(img, seg)\n", + "\n", + "os.makedirs(OUT_FOLDER, exist_ok = True)\n", + " \n", + "HIST_CUT_TOP = 0.5 # cut top 0.5% of intensity historgam to alleviate off-resonance effect\n", + "\n", + "NEW_SPA = [1.25, 1.25, 7.70] # unified voxel spacing\n", + "\n", + "for img_fid, seg_fid, pid in zip(imgs, segs, pids):\n", + "\n", + " resample_flg = True\n", + "\n", + " img_obj = sitk.ReadImage( img_fid )\n", + " seg_obj = sitk.ReadImage( seg_fid )\n", + "\n", + " array = sitk.GetArrayFromImage(img_obj)\n", + "\n", + " # cut histogram\n", + " hir = float(np.percentile(array, 100.0 - HIST_CUT_TOP))\n", + " array[array > hir] = hir\n", + "\n", + " his_img_o = sitk.GetImageFromArray(array)\n", + " his_img_o = copy_spacing_ori(img_obj, his_img_o)\n", + "\n", + " # resampling\n", + " img_spa_ori = img_obj.GetSpacing()\n", + " res_img_o = resample_by_res(his_img_o, [NEW_SPA[0], NEW_SPA[1], NEW_SPA[2]],\n", + " interpolator = sitk.sitkLinear, logging = True)\n", + " ## label\n", + " lb_arr = sitk.GetArrayFromImage(seg_obj)\n", + "\n", + " # resampling\n", + " res_lb_o = resample_lb_by_res(seg_obj, [NEW_SPA[0], NEW_SPA[1], NEW_SPA[2] ], interpolator = sitk.sitkLinear,\n", + " ref_img = None, logging = True)\n", + "\n", + " # crop out rois\n", + " res_img_a = s2n(res_img_o)\n", + "\n", + " crop_img_a = image_crop(res_img_a.transpose(1,2,0), [256, 256],\n", + " referece_ctr_idx = [res_img_a.shape[1] // 2, res_img_a.shape[2] //2],\n", + " padval = res_img_a.min(), only_2d = True).transpose(2,0,1)\n", + "\n", + " out_img_obj = copy_spacing_ori(res_img_o, sitk.GetImageFromArray(crop_img_a))\n", + "\n", + " res_lb_a = s2n(res_lb_o)\n", + "\n", + " crop_lb_a = image_crop(res_lb_a.transpose(1,2,0), [256, 256],\n", + " referece_ctr_idx = [res_lb_a.shape[1] // 2, res_lb_a.shape[2] //2],\n", + " padval = 0, only_2d = True).transpose(2,0,1)\n", + "\n", + " out_lb_obj = copy_spacing_ori(res_img_o, sitk.GetImageFromArray(crop_lb_a))\n", + "\n", + "\n", + " out_img_fid = os.path.join( OUT_FOLDER, f'image_{pid}.nii.gz' )\n", + " out_lb_fid = os.path.join( OUT_FOLDER, f'label_{pid}.nii.gz' ) \n", + "\n", + " # then save pre-processed images\n", + " sitk.WriteImage(out_img_obj, out_img_fid, True) \n", + " sitk.WriteImage(out_lb_obj, out_lb_fid, True) \n", + " print(\"{} has been saved\".format(out_img_fid))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MRI Resampling and ROI" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "./CHAOST2/niis/T2SPIR/image_1.nii.gz ./CHAOST2/niis/T2SPIR/label_1.nii.gz\n", + "(36, 256, 256) label shape (36, 256, 256)\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.54296875, 1.54296875, 7.699999809265137) -> [0.5832054501488095, 0.5832054501488095, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "./SABS/sabs_CT_normalized/image_1.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_1.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_10.nii.gz ./CHAOST2/niis/T2SPIR/label_10.nii.gz\n", + "(36, 256, 256) label shape (36, 256, 256)\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "Spacing: (1.69921875, 1.69921875, 7.699999809265137) -> [0.6422642299107143, 0.6422642299107143, 7.699999809265137]\n", + "Size (254, 254, 36) -> [672. 672. 36.]\n", + "./SABS/sabs_CT_normalized/image_10.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_10.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_13.nii.gz ./CHAOST2/niis/T2SPIR/label_13.nii.gz\n", + "(30, 320, 320) label shape (30, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "./SABS/sabs_CT_normalized/image_13.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_13.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_15.nii.gz ./CHAOST2/niis/T2SPIR/label_15.nii.gz\n", + "(26, 256, 256) label shape (26, 256, 256)\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "./SABS/sabs_CT_normalized/image_15.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_15.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_19.nii.gz ./CHAOST2/niis/T2SPIR/label_19.nii.gz\n", + "(30, 320, 320) label shape (30, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "./SABS/sabs_CT_normalized/image_19.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_19.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_2.nii.gz ./CHAOST2/niis/T2SPIR/label_2.nii.gz\n", + "(26, 320, 320) label shape (26, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "./SABS/sabs_CT_normalized/image_2.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_2.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_20.nii.gz ./CHAOST2/niis/T2SPIR/label_20.nii.gz\n", + "(26, 320, 320) label shape (26, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 26) -> [672. 672. 26.]\n", + "./SABS/sabs_CT_normalized/image_20.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_20.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_21.nii.gz ./CHAOST2/niis/T2SPIR/label_21.nii.gz\n", + "(31, 256, 256) label shape (31, 256, 256)\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "Spacing: (1.66015625, 1.66015625, 8.0) -> [0.627499534970238, 0.627499534970238, 8.0]\n", + "Size (254, 254, 31) -> [672. 672. 31.]\n", + "./SABS/sabs_CT_normalized/image_21.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_21.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_22.nii.gz ./CHAOST2/niis/T2SPIR/label_22.nii.gz\n", + "(33, 256, 256) label shape (33, 256, 256)\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "Spacing: (1.73828125, 1.73828125, 8.699999809265137) -> [0.6570289248511905, 0.6570289248511905, 8.699999809265137]\n", + "Size (254, 254, 33) -> [672. 672. 33.]\n", + "./SABS/sabs_CT_normalized/image_22.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_22.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_3.nii.gz ./CHAOST2/niis/T2SPIR/label_3.nii.gz\n", + "(30, 320, 320) label shape (30, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 30) -> [672. 672. 30.]\n", + "./SABS/sabs_CT_normalized/image_3.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_3.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_31.nii.gz ./CHAOST2/niis/T2SPIR/label_31.nii.gz\n", + "(29, 256, 256) label shape (29, 256, 256)\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "./SABS/sabs_CT_normalized/image_31.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_31.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_32.nii.gz ./CHAOST2/niis/T2SPIR/label_32.nii.gz\n", + "(39, 256, 256) label shape (39, 256, 256)\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "Spacing: (1.81640625, 1.81640625, 9.0) -> [0.6865583147321428, 0.6865583147321428, 9.0]\n", + "Size (254, 254, 39) -> [672. 672. 39.]\n", + "./SABS/sabs_CT_normalized/image_32.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_32.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_33.nii.gz ./CHAOST2/niis/T2SPIR/label_33.nii.gz\n", + "(29, 256, 256) label shape (29, 256, 256)\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "Spacing: (1.73828125, 1.73828125, 9.0) -> [0.6570289248511905, 0.6570289248511905, 9.0]\n", + "Size (254, 254, 29) -> [672. 672. 29.]\n", + "./SABS/sabs_CT_normalized/image_33.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_33.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_34.nii.gz ./CHAOST2/niis/T2SPIR/label_34.nii.gz\n", + "(30, 256, 256) label shape (30, 256, 256)\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.73828125, 1.73828125, 8.800000190734863) -> [0.6570289248511905, 0.6570289248511905, 8.800000190734863]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "./SABS/sabs_CT_normalized/image_34.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_34.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_36.nii.gz ./CHAOST2/niis/T2SPIR/label_36.nii.gz\n", + "(38, 256, 256) label shape (38, 256, 256)\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "Spacing: (1.62109375, 1.62109375, 9.0) -> [0.6127348400297619, 0.6127348400297619, 9.0]\n", + "Size (254, 254, 38) -> [672. 672. 38.]\n", + "./SABS/sabs_CT_normalized/image_36.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_36.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_37.nii.gz ./CHAOST2/niis/T2SPIR/label_37.nii.gz\n", + "(32, 256, 256) label shape (32, 256, 256)\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "Spacing: (1.46484375, 1.46484375, 9.0) -> [0.5536760602678571, 0.5536760602678571, 9.0]\n", + "Size (254, 254, 32) -> [672. 672. 32.]\n", + "./SABS/sabs_CT_normalized/image_37.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_37.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_38.nii.gz ./CHAOST2/niis/T2SPIR/label_38.nii.gz\n", + "(34, 320, 320) label shape (34, 320, 320)\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "Spacing: (1.359375, 1.359375, 9.0) -> [0.6432756696428571, 0.6432756696428571, 9.0]\n", + "Size (318, 318, 34) -> [672. 672. 34.]\n", + "./SABS/sabs_CT_normalized/image_38.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_38.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_39.nii.gz ./CHAOST2/niis/T2SPIR/label_39.nii.gz\n", + "(26, 256, 256) label shape (26, 256, 256)\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "Spacing: (1.58203125, 1.58203125, 9.0) -> [0.5979701450892857, 0.5979701450892857, 9.0]\n", + "Size (254, 254, 26) -> [672. 672. 26.]\n", + "./SABS/sabs_CT_normalized/image_39.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_39.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_5.nii.gz ./CHAOST2/niis/T2SPIR/label_5.nii.gz\n", + "(30, 256, 256) label shape (30, 256, 256)\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "Spacing: (1.66015625, 1.66015625, 9.0) -> [0.627499534970238, 0.627499534970238, 9.0]\n", + "Size (254, 254, 30) -> [672. 672. 30.]\n", + "./SABS/sabs_CT_normalized/image_5.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_5.nii.gz has been saved\n", + "./CHAOST2/niis/T2SPIR/image_8.nii.gz ./CHAOST2/niis/T2SPIR/label_8.nii.gz\n", + "(32, 288, 288) label shape (32, 288, 288)\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "Label values: [0 1 2 3 4]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "Spacing: (1.40625, 1.40625, 8.0) -> [0.5984933035714286, 0.5984933035714286, 8.0]\n", + "Size (286, 286, 32) -> [672. 672. 32.]\n", + "./SABS/sabs_CT_normalized/image_8.nii.gz has been saved\n", + "./SABS/sabs_CT_normalized/label_8.nii.gz has been saved\n" + ] + } + ], + "source": [ + "# SPA_FAC = (256 - 2 * BD_BIAS) / 512 # spacing factor\n", + "BD_BIAS = 1\n", + "scan_dir = OUT_FOLDER\n", + "for res in (256, 672):\n", + " if res == 672:\n", + " scan_dir += \"_672\"\n", + " resample_imgs(imgs, segs, pids, scan_dir,\n", + " BD_BIAS, SPA_FAC=None, required_res=res)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MRI Classmap Generation" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pid 1 finished!\n", + "pid 2 finished!\n", + "pid 3 finished!\n", + "pid 5 finished!\n", + "pid 8 finished!\n", + "pid 10 finished!\n", + "pid 13 finished!\n", + "pid 15 finished!\n", + "pid 19 finished!\n", + "pid 20 finished!\n", + "pid 21 finished!\n", + "pid 22 finished!\n", + "pid 31 finished!\n", + "pid 32 finished!\n", + "pid 33 finished!\n", + "pid 34 finished!\n", + "pid 36 finished!\n", + "pid 37 finished!\n", + "pid 38 finished!\n", + "pid 39 finished!\n" + ] + } + ], + "source": [ + "IMG_BNAMES = (\"./CHAOST2/chaos_MR_T2_normalized/image_*.nii.gz\", \"./CHAOST2/chaos_MR_T2_normalized_672/image_*.nii.gz\")\n", + "SEG_NAMES = (\"./CHAOST2/chaos_MR_T2_normalized/label_*.nii.gz\", \"./CHAOST2/chaos_MR_T2_normalized_672/label_*.nii.gz\")\n", + "\n", + "for IMG_BNAME, SEG_BNAME in zip(IMG_BNAMES, SEG_NAMES):\n", + " imgs = glob.glob(IMG_BNAME)\n", + " segs = glob.glob(SEG_BNAME)\n", + " imgs = [ fid for fid in sorted(imgs, key = lambda x: int(x.split(\"_\")[-1].split(\".nii.gz\")[0]) ) ]\n", + " segs = [ fid for fid in sorted(segs, key = lambda x: int(x.split(\"_\")[-1].split(\".nii.gz\")[0]) ) ]\n", + "\n", + "\n", + " classmap = {}\n", + " LABEL_NAME = [\"BG\", \"LIVER\", \"RK\", \"LK\", \"SPLEEN\"] \n", + "\n", + " MIN_TP = 1 # minimum number of positive label pixels to be recorded. Use >100 when training with manual annotations for more stable training\n", + "\n", + " fid = os.path.join(OUT_FOLDER,f'.classmap_{MIN_TP}.json') # name of the output file. \n", + " for _lb in LABEL_NAME:\n", + " classmap[_lb] = {}\n", + " for _sid in segs:\n", + " pid = _sid.split(\"_\")[-1].split(\".nii.gz\")[0]\n", + " classmap[_lb][pid] = []\n", + "\n", + " for seg in segs:\n", + " pid = seg.split(\"_\")[-1].split(\".nii.gz\")[0]\n", + " lb_vol = sitk.GetArrayFromImage(sitk.ReadImage(seg))\n", + " n_slice = lb_vol.shape[0]\n", + " for slc in range(n_slice):\n", + " for cls in range(len(LABEL_NAME)):\n", + " if cls in lb_vol[slc, ...]:\n", + " if np.sum( lb_vol[slc, ...]) >= MIN_TP:\n", + " classmap[LABEL_NAME[cls]][str(pid)].append(slc)\n", + " print(f'pid {str(pid)} finished!')\n", + " \n", + " with open(fid, 'w') as fopen:\n", + " json.dump(classmap, fopen)\n", + " fopen.close() \n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Psuedo label generation for Encoder Finetuning" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import copy\n", + "import skimage\n", + "\n", + "from skimage.segmentation import slic\n", + "from skimage.segmentation import mark_boundaries\n", + "from skimage.util import img_as_float\n", + "from skimage.measure import label \n", + "import scipy.ndimage.morphology as snm\n", + "from skimage import io\n", + "import argparse\n", + "\n", + "\n", + "to01 = lambda x: (x - x.min()) / (x.max() - x.min())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Summary\n", + "\n", + "a. Generate a mask of the patient to avoid pseudolabels of empty regions in the background\n", + "\n", + "b. Generate superpixels as pseudolabels\n", + "\n", + "Configurations of pseudlabels\n", + "\n", + "default setting of minimum superpixel sizes\n", + "`segs = seg_func(img[ii, ...], min_size = 400, sigma = 1)`\n", + "\n", + "you can also try other configs\n", + "`segs = seg_func(img[ii, ...], min_size = 100, sigma = 0.8)`" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "MODE = 'MIDDLE' # minimum size of pesudolabels. 'MIDDLE' is the default setting\n", + "\n", + "# wrapper for process 3d image in 2d\n", + "def superpix_vol(img, method = 'fezlen', **kwargs):\n", + " \"\"\"\n", + " loop through the entire volume\n", + " assuming image with axis z, x, y\n", + " \"\"\"\n", + " if method =='fezlen':\n", + " seg_func = skimage.segmentation.felzenszwalb\n", + " else:\n", + " raise NotImplementedError\n", + " \n", + " out_vol = np.zeros(img.shape)\n", + " for ii in range(img.shape[0]):\n", + " if MODE == 'MIDDLE':\n", + " segs = seg_func(img[ii, ...], min_size = 400, sigma = 1)\n", + " else:\n", + " raise NotImplementedError\n", + " out_vol[ii, ...] = segs\n", + " \n", + " return out_vol\n", + "\n", + "# thresholding the intensity values to get a binary mask of the patient\n", + "def fg_mask2d(img_2d, thresh): # change this by your need\n", + " mask_map = np.float32(img_2d > thresh)\n", + " \n", + " def getLargestCC(segmentation): # largest connected components\n", + " labels = label(segmentation)\n", + " assert( labels.max() != 0 ) # assume at least 1 CC\n", + " largestCC = labels == np.argmax(np.bincount(labels.flat)[1:])+1\n", + " return largestCC\n", + " if mask_map.max() < 0.999:\n", + " return mask_map\n", + " else:\n", + " post_mask = getLargestCC(mask_map)\n", + " fill_mask = snm.binary_fill_holes(post_mask)\n", + " return fill_mask\n", + "\n", + "# remove superpixels within the empty regions\n", + "def superpix_masking(raw_seg2d, mask2d):\n", + " raw_seg2d = np.int32(raw_seg2d)\n", + " lbvs = np.unique(raw_seg2d)\n", + " max_lb = lbvs.max()\n", + " raw_seg2d[raw_seg2d == 0] = max_lb + 1\n", + " lbvs = list(lbvs)\n", + " lbvs.append( max_lb )\n", + " raw_seg2d = raw_seg2d * mask2d\n", + " lb_new = 1\n", + " out_seg2d = np.zeros(raw_seg2d.shape)\n", + " for lbv in lbvs:\n", + " if lbv == 0:\n", + " continue\n", + " else:\n", + " out_seg2d[raw_seg2d == lbv] = lb_new\n", + " lb_new += 1\n", + " \n", + " return out_seg2d\n", + " \n", + "def superpix_wrapper(img, verbose = False, fg_thresh = 1e-4):\n", + " raw_seg = superpix_vol(img)\n", + " fg_mask_vol = np.zeros(raw_seg.shape)\n", + " processed_seg_vol = np.zeros(raw_seg.shape)\n", + " for ii in range(raw_seg.shape[0]):\n", + " if verbose:\n", + " print(\"doing {} slice\".format(ii))\n", + " _fgm = fg_mask2d(img[ii, ...], fg_thresh )\n", + " _out_seg = superpix_masking(raw_seg[ii, ...], _fgm)\n", + " fg_mask_vol[ii] = _fgm\n", + " processed_seg_vol[ii] = _out_seg\n", + " return fg_mask_vol, processed_seg_vol\n", + " \n", + "# copy spacing and orientation info between sitk objects\n", + "def copy_info(src, dst):\n", + " dst.SetSpacing(src.GetSpacing())\n", + " dst.SetOrigin(src.GetOrigin())\n", + " dst.SetDirection(src.GetDirection())\n", + " # dst.CopyInfomation(src)\n", + " return dst\n", + "\n", + "\n", + "def strip_(img, lb):\n", + " img = np.int32(img)\n", + " if isinstance(lb, float):\n", + " lb = int(lb)\n", + " return np.float32(img == lb) * float(lb)\n", + " elif isinstance(lb, list):\n", + " out = np.zeros(img.shape)\n", + " for _lb in lb:\n", + " out += np.float32(img == int(_lb)) * float(_lb)\n", + " \n", + " return out\n", + " else:\n", + " raise Exception" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "DATASET_CONFIG = {'SABS':{\n", + " 'img_bname': f'./SABS/sabs_CT_normalized/image_*.nii.gz',\n", + " 'out_dir': './SABS/sabs_CT_normalized',\n", + " 'fg_thresh': 1e-4\n", + " },\n", + " 'CHAOST2':{\n", + " 'img_bname': f'./CHAOST2/chaos_MR_T2_normalized/image_*.nii.gz',\n", + " 'out_dir': './CHAOST2/chaos_MR_T2_normalized',\n", + " 'fg_thresh': 1e-4 + 50\n", + " },\n", + " 'SABS_672':{\n", + " 'img_bname': f'./SABS/sabs_CT_normalized_672/image_*.nii.gz',\n", + " 'out_dir': './SABS/sabs_CT_normalized_672',\n", + " 'fg_thresh': 1e-4\n", + " },\n", + " 'CHAOST2_672':{\n", + " 'img_bname': f'./CHAOST2/chaos_MR_T2_normalized_672/image_*.nii.gz',\n", + " 'out_dir': './CHAOST2/chaos_MR_T2_normalized_672',\n", + " 'fg_thresh': 1e-4 + 50\n", + " }\n", + "}\n", + "\n", + "for DOMAIN in DATASET_CONFIG.keys():\n", + " img_bname = DATASET_CONFIG[DOMAIN]['img_bname']\n", + " imgs = glob.glob(img_bname)\n", + " out_dir = DATASET_CONFIG[DOMAIN]['out_dir']\n", + "\n", + " imgs = sorted(imgs, key = lambda x: int(x.split('_')[-1].split('.nii.gz')[0]) )\n", + " print(imgs)\n", + "\n", + " # Generate pseudolabels for every image and save them\n", + " for img_fid in imgs:\n", + " # img_fid = imgs[0]\n", + "\n", + " idx = os.path.basename(img_fid).split(\"_\")[-1].split(\".nii.gz\")[0]\n", + " im_obj = sitk.ReadImage(img_fid)\n", + "\n", + " out_fg, out_seg = superpix_wrapper(sitk.GetArrayFromImage(im_obj), fg_thresh = DATASET_CONFIG[DOMAIN]['fg_thresh'] )\n", + " out_fg_o = sitk.GetImageFromArray(out_fg ) \n", + " out_seg_o = sitk.GetImageFromArray(out_seg )\n", + "\n", + " out_fg_o = copy_info(im_obj, out_fg_o)\n", + " out_seg_o = copy_info(im_obj, out_seg_o)\n", + " seg_fid = os.path.join(out_dir, f'superpix-{MODE}_{idx}.nii.gz')\n", + " msk_fid = os.path.join(out_dir, f'fgmask_{idx}.nii.gz')\n", + " sitk.WriteImage(out_fg_o, msk_fid)\n", + " sitk.WriteImage(out_seg_o, seg_fid)\n", + " print(f'image with id {idx} has finished')\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "lev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}