|
191 | 191 | "bundle_root = os.path.join(\"/workspace/Code/tutorials/modules/omniverse\", \"vista3d\")\n", |
192 | 192 | "input_dict = {\"image\": \"/workspace/Code/tutorials/modules/totalSegmentator_mergedLabel_samples/imagesTr/s0001.nii.gz\"}\n", |
193 | 193 | "workflow = create_workflow(\n", |
194 | | - " config_file=os.path.join(bundle_root,\"configs/inference.json\"),\n", |
| 194 | + " config_file=os.path.join(bundle_root, \"configs/inference.json\"),\n", |
195 | 195 | " workflow_type=\"inference\",\n", |
196 | 196 | " bundle_root=bundle_root,\n", |
197 | | - " input_dict=input_dict\n", |
| 197 | + " input_dict=input_dict,\n", |
198 | 198 | ")\n", |
199 | 199 | "workflow.run()" |
200 | 200 | ] |
|
277 | 277 | "source": [ |
278 | 278 | "# 17 groupings that cover 101 segments/regions out of 140\n", |
279 | 279 | "labels = {\n", |
280 | | - " \"Liver\": 1,\n", |
281 | | - " \"Spleen\": 3,\n", |
282 | | - " \"Pancreas\": 4,\n", |
283 | | - " \"Heart\": 115,\n", |
284 | | - " \"Body\": 200,\n", |
285 | | - " \"Gallbladder\": 10,\n", |
286 | | - " \"Stomach\": 12,\n", |
287 | | - " \"Small_bowel\": 19,\n", |
288 | | - " \"Colon\": 62,\n", |
289 | | - " \"Kidney\": {\"right_kidney\": 5,\n", |
290 | | - " \"left_kidney\": 14\n", |
291 | | - " },\n", |
292 | | - " \"Veins\": {\"aorta\": 6,\n", |
293 | | - " \"inferior_vena_cava\": 7,\n", |
294 | | - " \"portal_vein_and_splenic_vein\": 17,\n", |
295 | | - " \"left_iliac_artery\": 58,\n", |
296 | | - " \"right_iliac_artery\": 59,\n", |
297 | | - " \"left_iliac_vena\": 60,\n", |
298 | | - " \"right_iliac_vena\": 61,\n", |
299 | | - " \"pulmonary_vein\": 119,\n", |
300 | | - " \"left_subclavian_artery\": 123,\n", |
301 | | - " \"right_subclavian_artery\": 124,\n", |
302 | | - " \"superior_vena_cava\": 125,\n", |
303 | | - " \"brachiocephalic_trunk\": 109,\n", |
304 | | - " \"left_brachiocephalic_vein\": 110,\n", |
305 | | - " \"right_brachiocephalic_vein\": 111,\n", |
306 | | - " \"left_common_carotid_artery\": 112,\n", |
307 | | - " \"right_common_carotid_artery\": 113,\n", |
308 | | - " },\n", |
309 | | - " \"Lungs\": {\"left_lung_upper_lobe\": 28,\n", |
310 | | - " \"left_lung_lower_lobe\": 29,\n", |
311 | | - " \"right_lung_upper_lobe\": 30,\n", |
312 | | - " \"right_lung_middle_lobe\": 31,\n", |
313 | | - " \"right_lung_lower_lobe\": 32\n", |
314 | | - " },\n", |
315 | | - " \"Spine\": {\n", |
316 | | - " # \"vertebrae_L6\": 131,\n", |
317 | | - " \"vertebrae_L5\": 33,\n", |
318 | | - " \"vertebrae_L4\": 34,\n", |
319 | | - " \"vertebrae_L3\": 35,\n", |
320 | | - " \"vertebrae_L2\": 36,\n", |
321 | | - " \"vertebrae_L1\": 37,\n", |
322 | | - " \"vertebrae_T12\": 38,\n", |
323 | | - " \"vertebrae_T11\": 39,\n", |
324 | | - " \"vertebrae_T10\": 40,\n", |
325 | | - " \"vertebrae_T9\": 41,\n", |
326 | | - " \"vertebrae_T8\": 42,\n", |
327 | | - " \"vertebrae_T7\": 43,\n", |
328 | | - " \"vertebrae_T6\": 44,\n", |
329 | | - " \"vertebrae_T5\": 45,\n", |
330 | | - " \"vertebrae_T4\": 46,\n", |
331 | | - " \"vertebrae_T3\": 47,\n", |
332 | | - " \"vertebrae_T2\": 48,\n", |
333 | | - " \"vertebrae_T1\": 49,\n", |
334 | | - " \"vertebrae_C7\": 50,\n", |
335 | | - " \"vertebrae_C6\": 51,\n", |
336 | | - " \"vertebrae_C5\": 52,\n", |
337 | | - " \"vertebrae_C4\": 53,\n", |
338 | | - " \"vertebrae_C3\": 54,\n", |
339 | | - " \"vertebrae_C2\": 55,\n", |
340 | | - " \"vertebrae_C1\": 56,\n", |
341 | | - " \"sacrum\": 97,\n", |
342 | | - " \"vertebrae_S1\": 127,\n", |
343 | | - " },\n", |
344 | | - " \"Ribs\": {\n", |
345 | | - " \"left_rib_1\": 63,\n", |
346 | | - " \"left_rib_2\": 64,\n", |
347 | | - " \"left_rib_3\": 65,\n", |
348 | | - " \"left_rib_4\": 66,\n", |
349 | | - " \"left_rib_5\": 67,\n", |
350 | | - " \"left_rib_6\": 68,\n", |
351 | | - " \"left_rib_7\": 69,\n", |
352 | | - " \"left_rib_8\": 70,\n", |
353 | | - " \"left_rib_9\": 71,\n", |
354 | | - " \"left_rib_10\": 72,\n", |
355 | | - " \"left_rib_11\": 73,\n", |
356 | | - " \"left_rib_12\": 74,\n", |
357 | | - " \"right_rib_1\": 75,\n", |
358 | | - " \"right_rib_2\": 76,\n", |
359 | | - " \"right_rib_3\": 77,\n", |
360 | | - " \"right_rib_4\": 78,\n", |
361 | | - " \"right_rib_5\": 79,\n", |
362 | | - " \"right_rib_6\": 80,\n", |
363 | | - " \"right_rib_7\": 81,\n", |
364 | | - " \"right_rib_8\": 82,\n", |
365 | | - " \"right_rib_9\": 83,\n", |
366 | | - " \"right_rib_10\": 84,\n", |
367 | | - " \"right_rib_11\": 85,\n", |
368 | | - " \"right_rib_12\": 86,\n", |
369 | | - " \"costal_cartilages\": 114,\n", |
370 | | - " \"sternum\": 122,\n", |
371 | | - " },\n", |
372 | | - " \"Shoulders\": {\n", |
373 | | - " \"left_scapula\": 89,\n", |
374 | | - " \"right_scapula\": 90,\n", |
375 | | - " \"left_clavicula\": 91,\n", |
376 | | - " \"right_clavicula\": 92\n", |
377 | | - " },\n", |
378 | | - " \"Hips\": {\n", |
379 | | - " \"left_hip\": 95,\n", |
380 | | - " \"right_hip\": 96\n", |
381 | | - " },\n", |
382 | | - " \"Back_muscles\": {\n", |
383 | | - " \"left_gluteus_maximus\": 98,\n", |
384 | | - " \"right_gluteus_maximus\": 99,\n", |
385 | | - " \"left_gluteus_medius\": 100,\n", |
386 | | - " \"right_gluteus_medius\": 101,\n", |
387 | | - " \"left_gluteus_minimus\": 102,\n", |
388 | | - " \"right_gluteus_minimus\": 103,\n", |
389 | | - " \"left_autochthon\": 104,\n", |
390 | | - " \"right_autochthon\": 105,\n", |
391 | | - " \"left_iliopsoas\": 106,\n", |
392 | | - " \"right_iliopsoas\": 107\n", |
393 | | - " }\n", |
| 280 | + " \"Liver\": 1,\n", |
| 281 | + " \"Spleen\": 3,\n", |
| 282 | + " \"Pancreas\": 4,\n", |
| 283 | + " \"Heart\": 115,\n", |
| 284 | + " \"Body\": 200,\n", |
| 285 | + " \"Gallbladder\": 10,\n", |
| 286 | + " \"Stomach\": 12,\n", |
| 287 | + " \"Small_bowel\": 19,\n", |
| 288 | + " \"Colon\": 62,\n", |
| 289 | + " \"Kidney\": {\"right_kidney\": 5, \"left_kidney\": 14},\n", |
| 290 | + " \"Veins\": {\n", |
| 291 | + " \"aorta\": 6,\n", |
| 292 | + " \"inferior_vena_cava\": 7,\n", |
| 293 | + " \"portal_vein_and_splenic_vein\": 17,\n", |
| 294 | + " \"left_iliac_artery\": 58,\n", |
| 295 | + " \"right_iliac_artery\": 59,\n", |
| 296 | + " \"left_iliac_vena\": 60,\n", |
| 297 | + " \"right_iliac_vena\": 61,\n", |
| 298 | + " \"pulmonary_vein\": 119,\n", |
| 299 | + " \"left_subclavian_artery\": 123,\n", |
| 300 | + " \"right_subclavian_artery\": 124,\n", |
| 301 | + " \"superior_vena_cava\": 125,\n", |
| 302 | + " \"brachiocephalic_trunk\": 109,\n", |
| 303 | + " \"left_brachiocephalic_vein\": 110,\n", |
| 304 | + " \"right_brachiocephalic_vein\": 111,\n", |
| 305 | + " \"left_common_carotid_artery\": 112,\n", |
| 306 | + " \"right_common_carotid_artery\": 113,\n", |
| 307 | + " },\n", |
| 308 | + " \"Lungs\": {\n", |
| 309 | + " \"left_lung_upper_lobe\": 28,\n", |
| 310 | + " \"left_lung_lower_lobe\": 29,\n", |
| 311 | + " \"right_lung_upper_lobe\": 30,\n", |
| 312 | + " \"right_lung_middle_lobe\": 31,\n", |
| 313 | + " \"right_lung_lower_lobe\": 32,\n", |
| 314 | + " },\n", |
| 315 | + " \"Spine\": {\n", |
| 316 | + " # \"vertebrae_L6\": 131,\n", |
| 317 | + " \"vertebrae_L5\": 33,\n", |
| 318 | + " \"vertebrae_L4\": 34,\n", |
| 319 | + " \"vertebrae_L3\": 35,\n", |
| 320 | + " \"vertebrae_L2\": 36,\n", |
| 321 | + " \"vertebrae_L1\": 37,\n", |
| 322 | + " \"vertebrae_T12\": 38,\n", |
| 323 | + " \"vertebrae_T11\": 39,\n", |
| 324 | + " \"vertebrae_T10\": 40,\n", |
| 325 | + " \"vertebrae_T9\": 41,\n", |
| 326 | + " \"vertebrae_T8\": 42,\n", |
| 327 | + " \"vertebrae_T7\": 43,\n", |
| 328 | + " \"vertebrae_T6\": 44,\n", |
| 329 | + " \"vertebrae_T5\": 45,\n", |
| 330 | + " \"vertebrae_T4\": 46,\n", |
| 331 | + " \"vertebrae_T3\": 47,\n", |
| 332 | + " \"vertebrae_T2\": 48,\n", |
| 333 | + " \"vertebrae_T1\": 49,\n", |
| 334 | + " \"vertebrae_C7\": 50,\n", |
| 335 | + " \"vertebrae_C6\": 51,\n", |
| 336 | + " \"vertebrae_C5\": 52,\n", |
| 337 | + " \"vertebrae_C4\": 53,\n", |
| 338 | + " \"vertebrae_C3\": 54,\n", |
| 339 | + " \"vertebrae_C2\": 55,\n", |
| 340 | + " \"vertebrae_C1\": 56,\n", |
| 341 | + " \"sacrum\": 97,\n", |
| 342 | + " \"vertebrae_S1\": 127,\n", |
| 343 | + " },\n", |
| 344 | + " \"Ribs\": {\n", |
| 345 | + " \"left_rib_1\": 63,\n", |
| 346 | + " \"left_rib_2\": 64,\n", |
| 347 | + " \"left_rib_3\": 65,\n", |
| 348 | + " \"left_rib_4\": 66,\n", |
| 349 | + " \"left_rib_5\": 67,\n", |
| 350 | + " \"left_rib_6\": 68,\n", |
| 351 | + " \"left_rib_7\": 69,\n", |
| 352 | + " \"left_rib_8\": 70,\n", |
| 353 | + " \"left_rib_9\": 71,\n", |
| 354 | + " \"left_rib_10\": 72,\n", |
| 355 | + " \"left_rib_11\": 73,\n", |
| 356 | + " \"left_rib_12\": 74,\n", |
| 357 | + " \"right_rib_1\": 75,\n", |
| 358 | + " \"right_rib_2\": 76,\n", |
| 359 | + " \"right_rib_3\": 77,\n", |
| 360 | + " \"right_rib_4\": 78,\n", |
| 361 | + " \"right_rib_5\": 79,\n", |
| 362 | + " \"right_rib_6\": 80,\n", |
| 363 | + " \"right_rib_7\": 81,\n", |
| 364 | + " \"right_rib_8\": 82,\n", |
| 365 | + " \"right_rib_9\": 83,\n", |
| 366 | + " \"right_rib_10\": 84,\n", |
| 367 | + " \"right_rib_11\": 85,\n", |
| 368 | + " \"right_rib_12\": 86,\n", |
| 369 | + " \"costal_cartilages\": 114,\n", |
| 370 | + " \"sternum\": 122,\n", |
| 371 | + " },\n", |
| 372 | + " \"Shoulders\": {\"left_scapula\": 89, \"right_scapula\": 90, \"left_clavicula\": 91, \"right_clavicula\": 92},\n", |
| 373 | + " \"Hips\": {\"left_hip\": 95, \"right_hip\": 96},\n", |
| 374 | + " \"Back_muscles\": {\n", |
| 375 | + " \"left_gluteus_maximus\": 98,\n", |
| 376 | + " \"right_gluteus_maximus\": 99,\n", |
| 377 | + " \"left_gluteus_medius\": 100,\n", |
| 378 | + " \"right_gluteus_medius\": 101,\n", |
| 379 | + " \"left_gluteus_minimus\": 102,\n", |
| 380 | + " \"right_gluteus_minimus\": 103,\n", |
| 381 | + " \"left_autochthon\": 104,\n", |
| 382 | + " \"right_autochthon\": 105,\n", |
| 383 | + " \"left_iliopsoas\": 106,\n", |
| 384 | + " \"right_iliopsoas\": 107,\n", |
| 385 | + " },\n", |
394 | 386 | "}\n", |
395 | 387 | "\n", |
| 388 | + "\n", |
396 | 389 | "def nii_to_obj(input_nii_path, output_nii_path, output_obj_path):\n", |
397 | 390 | " if not os.path.exists(output_nii_path):\n", |
398 | 391 | " os.makedirs(output_nii_path)\n", |
399 | | - " pre_trans = Compose([\n", |
400 | | - " LoadImaged(keys=\"label\", ensure_channel_first=True),\n", |
401 | | - " BorderPadd(keys=\"label\", spatial_border=2),\n", |
402 | | - " SqueezeDimd(keys=\"label\", dim=0),\n", |
403 | | - " ])\n", |
| 392 | + " pre_trans = Compose(\n", |
| 393 | + " [\n", |
| 394 | + " LoadImaged(keys=\"label\", ensure_channel_first=True),\n", |
| 395 | + " BorderPadd(keys=\"label\", spatial_border=2),\n", |
| 396 | + " SqueezeDimd(keys=\"label\", dim=0),\n", |
| 397 | + " ]\n", |
| 398 | + " )\n", |
404 | 399 | " orig_seg = pre_trans({\"label\": input_nii_path})[\"label\"]\n", |
405 | 400 | " all_organ = np.zeros_like(orig_seg, dtype=np.uint8)\n", |
406 | | - " \n", |
| 401 | + "\n", |
407 | 402 | " save_trans = SaveImage(output_ext=\"nii.gz\", output_dtype=np.uint8)\n", |
408 | | - "# save_trans.set_options(write_kwargs = {\"compression\":True})\n", |
| 403 | + " # save_trans.set_options(write_kwargs = {\"compression\":True})\n", |
409 | 404 | " for j, (organ_name, label_val) in enumerate(labels.items(), start=1):\n", |
410 | 405 | " single_organ = np.zeros_like(orig_seg, dtype=np.uint8)\n", |
411 | 406 | " print(f\"Assigning index {j} to label {organ_name}\")\n", |
|
418 | 413 | " single_organ[orig_seg == label_val] = j\n", |
419 | 414 | " organ_filename = os.path.join(output_nii_path, organ_name)\n", |
420 | 415 | " save_trans(single_organ[None], meta_data=orig_seg.meta, filename=organ_filename)\n", |
421 | | - " convert_to_mesh(f\"{organ_filename}.nii.gz\", output_obj_path, f\"{organ_name}.obj\", label_value=j, smoothing_factor=0.5, reduction_ratio=0.0)\n", |
422 | | - "\n", |
| 416 | + " convert_to_mesh(\n", |
| 417 | + " f\"{organ_filename}.nii.gz\",\n", |
| 418 | + " output_obj_path,\n", |
| 419 | + " f\"{organ_name}.obj\",\n", |
| 420 | + " label_value=j,\n", |
| 421 | + " smoothing_factor=0.5,\n", |
| 422 | + " reduction_ratio=0.0,\n", |
| 423 | + " )\n", |
423 | 424 | "\n", |
424 | 425 | " all_organ_filename = os.path.join(output_nii_path, \"all_organs\")\n", |
425 | 426 | " save_trans(all_organ[None], meta_data=orig_seg.meta, filename=all_organ_filename)\n", |
426 | | - " convert_to_mesh(f\"{all_organ_filename}.nii.gz\", output_obj_path, \"all_organs.gltf\", label_value=list(range(1, 18)), smoothing_factor=0.6, reduction_ratio=0.0)\n", |
| 427 | + " convert_to_mesh(\n", |
| 428 | + " f\"{all_organ_filename}.nii.gz\",\n", |
| 429 | + " output_obj_path,\n", |
| 430 | + " \"all_organs.gltf\",\n", |
| 431 | + " label_value=list(range(1, 18)),\n", |
| 432 | + " smoothing_factor=0.6,\n", |
| 433 | + " reduction_ratio=0.0,\n", |
| 434 | + " )\n", |
427 | 435 | " print(f\"Saved whole segmentation {all_organ_filename}\")\n", |
428 | 436 | "\n", |
| 437 | + "\n", |
429 | 438 | "input_nii_path = \"/workspace/Data/maisi_ct_generative/datasets/IntegrationTest-AbdomenCT.nii.gz\"\n", |
430 | 439 | "output_nii_path = \"/workspace/Data/maisi_ct_generative/datasets/monai/nii\"\n", |
431 | 440 | "output_obj_path = \"/workspace/Data/maisi_ct_generative/datasets/monai/obj\"\n", |
|
470 | 479 | "source": [ |
471 | 480 | "# Step 1: Read the mesh\n", |
472 | 481 | "reader = vtk.vtkOBJReader()\n", |
473 | | - "reader.SetFileName(\"/workspace/Data/maisi_ct_generative/datasets/monai/obj/Heart.obj\") # Provide the path to your STL file\n", |
| 482 | + "reader.SetFileName(\n", |
| 483 | + " \"/workspace/Data/maisi_ct_generative/datasets/monai/obj/Heart.obj\"\n", |
| 484 | + ") # Provide the path to your STL file\n", |
474 | 485 | "reader.Update()\n", |
475 | 486 | "\n", |
476 | 487 | "# Step 2: Create a mapper\n", |
|
497 | 508 | "\n", |
498 | 509 | "# Step 6: Use ipyvtklink for notebook rendering\n", |
499 | 510 | "widget = ViewInteractiveWidget(render_window)\n", |
500 | | - "widget\n" |
| 511 | + "widget" |
501 | 512 | ] |
502 | 513 | }, |
503 | 514 | { |
|
0 commit comments