Commit f879b8b886f8f5ed5bd62b27e70c64b5901795cf
1 parent
107e6ffc
Exists in
master
and in
5 other branches
ENH: Added conversion between DICOM and Python encoding
Showing
3 changed files
with
118 additions
and
101 deletions
Show diff stats
invesalius/constants.py
... | ... | @@ -441,7 +441,8 @@ VTK_WARNING = 0 |
441 | 441 | |
442 | 442 | [ID_DICOM_IMPORT, ID_PROJECT_OPEN, ID_PROJECT_SAVE_AS, ID_PROJECT_SAVE, |
443 | 443 | ID_PROJECT_CLOSE, ID_PROJECT_INFO, ID_SAVE_SCREENSHOT, ID_DICOM_LOAD_NET, |
444 | -ID_PRINT_SCREENSHOT, ID_EXIT, ID_IMPORT_OTHERS_FILES, ID_ANALYZE_IMPORT, ID_PREFERENCES] = [wx.NewId() for number in range(13)] | |
444 | +ID_PRINT_SCREENSHOT, ID_EXIT, ID_IMPORT_OTHERS_FILES, ID_ANALYZE_IMPORT, ID_PREFERENCES, | |
445 | +ID_DICOM_NETWORK] = [wx.NewId() for number in range(14)] | |
445 | 446 | |
446 | 447 | |
447 | 448 | [ID_EDIT_UNDO, ID_EDIT_REDO, ID_EDIT_LIST] =\ |
... | ... | @@ -509,3 +510,22 @@ STYLE_LEVEL = {SLICE_STATE_EDITOR: 1, |
509 | 510 | RENDERING = 0 |
510 | 511 | SURFACE_INTERPOLATION = 1 |
511 | 512 | LANGUAGE = 2 |
513 | + | |
514 | + | |
515 | +#Correlaction extracted from pyDicom | |
516 | +DICOM_ENCODING_TO_PYTHON = { | |
517 | + 'None':'iso8859', | |
518 | + None:'iso8859', | |
519 | + '': 'iso8859', | |
520 | + 'ISO_IR 6': 'iso8859', | |
521 | + 'ISO_IR 100': 'latin_1', | |
522 | + 'ISO 2022 IR 87': 'iso2022_jp', | |
523 | + 'ISO 2022 IR 13': 'iso2022_jp', | |
524 | + 'ISO 2022 IR 149': 'euc_kr', | |
525 | + 'ISO_IR 192': 'UTF8', | |
526 | + 'GB18030': 'GB18030', | |
527 | + 'ISO_IR 126': 'iso_ir_126', | |
528 | + 'ISO_IR 127': 'iso_ir_127', | |
529 | + 'ISO_IR 138': 'iso_ir_138', | |
530 | + 'ISO_IR 144': 'iso_ir_144', | |
531 | + } | ... | ... |
invesalius/reader/dicom.py
... | ... | @@ -22,7 +22,7 @@ import time |
22 | 22 | #import vtkgdcm |
23 | 23 | import sys |
24 | 24 | import utils |
25 | - | |
25 | +import constants as const | |
26 | 26 | # In DICOM file format, if multiple values are present for the |
27 | 27 | # "Window Center" (Level) and "Window Width", both attributes |
28 | 28 | # shall have the same number of values and shall be considered as |
... | ... | @@ -204,7 +204,7 @@ class Parser(): |
204 | 204 | to the number of columns on the image. |
205 | 205 | Return "" if not defined. |
206 | 206 | """ |
207 | - data = self.data_image[0x028][0x011] | |
207 | + data = self.data_image[str(0x028)][str(0x011)] | |
208 | 208 | if (data): |
209 | 209 | return int(str(data)) |
210 | 210 | return "" |
... | ... | @@ -216,7 +216,7 @@ class Parser(): |
216 | 216 | to the number of rows on the image. |
217 | 217 | Return "" if not defined. |
218 | 218 | """ |
219 | - data = self.data_image[0x028][0x010] | |
219 | + data = self.data_image[str(0x028)][str(0x010)] | |
220 | 220 | if (data): |
221 | 221 | return int(str(data)) |
222 | 222 | return "" |
... | ... | @@ -303,7 +303,7 @@ class Parser(): |
303 | 303 | """ |
304 | 304 | # TODO: internationalize data |
305 | 305 | try: |
306 | - date = self.data_image[0x0008][0x0022] | |
306 | + date = self.data_image[str(0x0008)][str(0x0022)] | |
307 | 307 | except(KeyError): |
308 | 308 | return "" |
309 | 309 | |
... | ... | @@ -318,7 +318,7 @@ class Parser(): |
318 | 318 | |
319 | 319 | DICOM standard tag (0x0020, 0x0012) was used. |
320 | 320 | """ |
321 | - data = self.data_image[0x0020][0x0012] | |
321 | + data = self.data_image[str(0x0020)][str(0x0012)] | |
322 | 322 | if (data): |
323 | 323 | return int(str(data)) |
324 | 324 | return "" |
... | ... | @@ -329,7 +329,8 @@ class Parser(): |
329 | 329 | |
330 | 330 | DICOM standard tag (0x0008, 0x0050) was used. |
331 | 331 | """ |
332 | - data = self.data_image[0x008][0x050] | |
332 | + #data = self.data_image[0x008][0x050] | |
333 | + return "" | |
333 | 334 | if (data): |
334 | 335 | try: |
335 | 336 | value = int(str(data)) |
... | ... | @@ -346,7 +347,7 @@ class Parser(): |
346 | 347 | |
347 | 348 | DICOM standard tag (0x0008,0x0032) was used. |
348 | 349 | """ |
349 | - data = self.data_image[0x008][0x032] | |
350 | + data = self.data_image[str(0x008)][str(0x032)] | |
350 | 351 | if (data) and (data != ''): |
351 | 352 | return self.__format_time(str(data)) |
352 | 353 | return "" |
... | ... | @@ -381,7 +382,7 @@ class Parser(): |
381 | 382 | DICOM standard tag (0x0028,0x1050) was used. |
382 | 383 | """ |
383 | 384 | try: |
384 | - data = self.data_image[0x028][0x1050] | |
385 | + data = self.data_image[str(0x028)][str(0x1050)] | |
385 | 386 | except(KeyError): |
386 | 387 | return "300" |
387 | 388 | if (data): |
... | ... | @@ -413,7 +414,7 @@ class Parser(): |
413 | 414 | DICOM standard tag (0x0028,0x1051) was used. |
414 | 415 | """ |
415 | 416 | try: |
416 | - data = self.data_image[0x028][0x1051] | |
417 | + data = self.data_image[str(0x028)][str(0x1051)] | |
417 | 418 | except(KeyError): |
418 | 419 | return "2000" |
419 | 420 | |
... | ... | @@ -442,7 +443,7 @@ class Parser(): |
442 | 443 | DICOM standard tag (0x0020, 0x0032) was used. |
443 | 444 | """ |
444 | 445 | try: |
445 | - data = self.data_image[0x020][0x032] | |
446 | + data = self.data_image[str(0x020)][str(0x032)] | |
446 | 447 | except(KeyError): |
447 | 448 | return "" |
448 | 449 | if (data): |
... | ... | @@ -457,7 +458,7 @@ class Parser(): |
457 | 458 | |
458 | 459 | DICOM standard tag (0x0020, 0x0032) was used. |
459 | 460 | """ |
460 | - data = self.data_image[0x020][0x1041] | |
461 | + data = self.data_image[str(0x020)][str(0x1041)] | |
461 | 462 | if (data): |
462 | 463 | return eval(data) |
463 | 464 | return "" |
... | ... | @@ -470,7 +471,7 @@ class Parser(): |
470 | 471 | DICOM standard tag (0x7fe0, 0x0010) was used. |
471 | 472 | """ |
472 | 473 | try: |
473 | - data = self.data_image[0x7fe0][0x0010] | |
474 | + data = self.data_image[str(0x7fe0)][str(0x0010)] | |
474 | 475 | except(KeyError): |
475 | 476 | return "" |
476 | 477 | |
... | ... | @@ -488,7 +489,7 @@ class Parser(): |
488 | 489 | DICOM standard tag (0x0020, 0x0011) was used. |
489 | 490 | """ |
490 | 491 | try: |
491 | - data = self.data_image[0x020][0x011] | |
492 | + data = self.data_image[str(0x020)][str(0x011)] | |
492 | 493 | except(KeyError): |
493 | 494 | return "" |
494 | 495 | |
... | ... | @@ -508,7 +509,7 @@ class Parser(): |
508 | 509 | DICOM standard tag (0x0028, 0x0030) was used. |
509 | 510 | """ |
510 | 511 | try: |
511 | - data = self.data_image[0x0028][0x0030] | |
512 | + data = self.data_image[str(0x0028)][str(0x0030)] | |
512 | 513 | except(KeyError): |
513 | 514 | return "" |
514 | 515 | if (data): |
... | ... | @@ -523,7 +524,7 @@ class Parser(): |
523 | 524 | DICOM standard tag (0x0010, 0x1030) was used. |
524 | 525 | """ |
525 | 526 | try: |
526 | - data = self.data_image[0x0010][0x1030] | |
527 | + data = self.data_image[str(0x0010)][str(0x1030)] | |
527 | 528 | except(KeyError): |
528 | 529 | return "" |
529 | 530 | |
... | ... | @@ -539,7 +540,7 @@ class Parser(): |
539 | 540 | DICOM standard tag (0x0010, 0x1030) was used. |
540 | 541 | """ |
541 | 542 | try: |
542 | - data = self.data_image[0x010][0x1020] | |
543 | + data = self.data_image[str(0x010)][str(0x1020)] | |
543 | 544 | except(KeyError): |
544 | 545 | return "" |
545 | 546 | |
... | ... | @@ -554,7 +555,7 @@ class Parser(): |
554 | 555 | DICOM standard tag (0x0010, 0x1040) was used. |
555 | 556 | """ |
556 | 557 | try: |
557 | - data = self.data_image[0x010][0x1040] | |
558 | + data = self.data_image[str(0x010)][str(0x1040)] | |
558 | 559 | except(KeyError): |
559 | 560 | return "" |
560 | 561 | if (data): |
... | ... | @@ -569,7 +570,7 @@ class Parser(): |
569 | 570 | DICOM standard tag (0x0010, 0x1080) was used. |
570 | 571 | """ |
571 | 572 | try: |
572 | - data = self.data_image[0x010][0x1080] | |
573 | + data = self.data_image[str(0x010)][str(0x1080)] | |
573 | 574 | except(KeyError): |
574 | 575 | return "" |
575 | 576 | if (data): |
... | ... | @@ -586,7 +587,7 @@ class Parser(): |
586 | 587 | DICOM standard tag (0x0010, 0x1081) was used. |
587 | 588 | """ |
588 | 589 | try: |
589 | - data = self.data_image[0x010][0x1081] | |
590 | + data = self.data_image[str(0x010)][str(0x1081)] | |
590 | 591 | except(KeyError): |
591 | 592 | return "" |
592 | 593 | if (data): |
... | ... | @@ -602,7 +603,7 @@ class Parser(): |
602 | 603 | DICOM standard tag (0x0010, 0x2150) was used. |
603 | 604 | """ |
604 | 605 | try: |
605 | - data = self.data_image[0x0010][0x2150] | |
606 | + data = self.data_image[str(0x0010)][str(0x2150)] | |
606 | 607 | except(KeyError): |
607 | 608 | return "" |
608 | 609 | |
... | ... | @@ -619,7 +620,7 @@ class Parser(): |
619 | 620 | DICOM standard tag (0x0010, 0x2152) was used. |
620 | 621 | """ |
621 | 622 | try: |
622 | - data = self.data_image[0x0010][0x2152] | |
623 | + data = self.data_image[str(0x0010)][str(0x2152)] | |
623 | 624 | except(KeyError): |
624 | 625 | return "" |
625 | 626 | |
... | ... | @@ -635,7 +636,7 @@ class Parser(): |
635 | 636 | DICOM standard tag (0x0010, 0x2154) was used. |
636 | 637 | """ |
637 | 638 | try: |
638 | - data = self.data_image[0x0010][0x2154] | |
639 | + data = self.data_image[str(0x0010)][str(0x2154)] | |
639 | 640 | except(KeyError): |
640 | 641 | return "" |
641 | 642 | |
... | ... | @@ -652,7 +653,7 @@ class Parser(): |
652 | 653 | DICOM standard tag (0x0010, 0x2297) was used. |
653 | 654 | """ |
654 | 655 | try: |
655 | - data = self.data_image[0x0010][0x2297] | |
656 | + data = self.data_image[str(0x0010)][str(0x2297)] | |
656 | 657 | except(KeyError): |
657 | 658 | return "" |
658 | 659 | |
... | ... | @@ -669,7 +670,7 @@ class Parser(): |
669 | 670 | DICOM standard tag (0x0010, 0x2298) was used. |
670 | 671 | """ |
671 | 672 | try: |
672 | - data = self.data_image[0x0010][0x2298] | |
673 | + data = self.data_image[str(0x0010)][str(0x2298)] | |
673 | 674 | except(KeyError): |
674 | 675 | return "" |
675 | 676 | |
... | ... | @@ -686,7 +687,7 @@ class Parser(): |
686 | 687 | DICOM standard tag (0x0010, 0x2299) was used. |
687 | 688 | """ |
688 | 689 | try: |
689 | - data = self.data_image[0x0010][0x2299] | |
690 | + data = self.data_image[str(0x0010)][str(0x2299)] | |
690 | 691 | except(KeyError): |
691 | 692 | return "" |
692 | 693 | |
... | ... | @@ -703,7 +704,7 @@ class Parser(): |
703 | 704 | DICOM standard tag (0x0010, 0x2000) was used. |
704 | 705 | """ |
705 | 706 | try: |
706 | - data = self.data_image[0x0010][0x2000] | |
707 | + data = self.data_image[str(0x0010)][str(0x2000)] | |
707 | 708 | except(KeyError): |
708 | 709 | return "" |
709 | 710 | |
... | ... | @@ -720,7 +721,7 @@ class Parser(): |
720 | 721 | DICOM standard tag (0x0008, 0x2110) was used. |
721 | 722 | """ |
722 | 723 | try: |
723 | - data = self.data_image[0x0008][0x2110] | |
724 | + data = self.data_image[str(0x0008)][str(0x2110)] | |
724 | 725 | except(KeyError): |
725 | 726 | return "" |
726 | 727 | |
... | ... | @@ -738,7 +739,7 @@ class Parser(): |
738 | 739 | DICOM standard tag (0x0008, 0x0090) was used. |
739 | 740 | """ |
740 | 741 | try: |
741 | - data = self.data_image[0x0008][0x0090] | |
742 | + data = self.data_image[str(0x0008)][str(0x0090)] | |
742 | 743 | except(KeyError): |
743 | 744 | return "" |
744 | 745 | |
... | ... | @@ -757,7 +758,7 @@ class Parser(): |
757 | 758 | DICOM standard tag (0x0008, 0x0092) was used. |
758 | 759 | """ |
759 | 760 | try: |
760 | - data = self.data_image[0x0008][0x0092] | |
761 | + data = self.data_image[str(0x0008)][str(0x0092)] | |
761 | 762 | except(KeyError): |
762 | 763 | return "" |
763 | 764 | |
... | ... | @@ -773,7 +774,7 @@ class Parser(): |
773 | 774 | DICOM standard tag (0x0008, 0x0094) was used. |
774 | 775 | """ |
775 | 776 | try: |
776 | - data = self.data_image[0x0008][0x0094] | |
777 | + data = self.data_image[str(0x0008)][str(0x0094)] | |
777 | 778 | except(KeyError): |
778 | 779 | return "" |
779 | 780 | |
... | ... | @@ -789,7 +790,7 @@ class Parser(): |
789 | 790 | DICOM standard tag (0x0018, 0x1030) was used. |
790 | 791 | """ |
791 | 792 | try: |
792 | - data = self.data_image[0x0018][0x1030] | |
793 | + data = self.data_image[str(0x0018)][str(0x1030)] | |
793 | 794 | except(KeyError): |
794 | 795 | return None |
795 | 796 | |
... | ... | @@ -807,7 +808,7 @@ class Parser(): |
807 | 808 | Critical DICOM tag (0x0008, 0x0008). Cannot be editted. |
808 | 809 | """ |
809 | 810 | try: |
810 | - data = self.data_image[0x008][0x008] | |
811 | + data = self.data_image[str(0x008)][str(0x008)] | |
811 | 812 | except(IndexError): |
812 | 813 | return [] |
813 | 814 | |
... | ... | @@ -827,7 +828,7 @@ class Parser(): |
827 | 828 | Critical DICOM tag (0x0008, 0x0016). Cannot be edited. |
828 | 829 | """ |
829 | 830 | try: |
830 | - data = self.data_image[0x0008][0x0016] | |
831 | + data = self.data_image[str(0x0008)][str(0x0016)] | |
831 | 832 | except(KeyError): |
832 | 833 | return "" |
833 | 834 | |
... | ... | @@ -844,7 +845,7 @@ class Parser(): |
844 | 845 | Critical DICOM tag (0x0008, 0x0018). Cannot be edited. |
845 | 846 | """ |
846 | 847 | try: |
847 | - data = self.data_image[0x0008][0x0018] | |
848 | + data = self.data_image[str(0x0008)][str(0x0018)] | |
848 | 849 | except(KeyError): |
849 | 850 | return "" |
850 | 851 | |
... | ... | @@ -861,7 +862,7 @@ class Parser(): |
861 | 862 | Critical DICOM Tag (0x0020,0x000D). Cannot be edited. |
862 | 863 | """ |
863 | 864 | try: |
864 | - data = self.data_image[0x0020][0x000D] | |
865 | + data = self.data_image[str(0x0020)][str(0x000D)] | |
865 | 866 | except(KeyError): |
866 | 867 | return "" |
867 | 868 | |
... | ... | @@ -881,7 +882,7 @@ class Parser(): |
881 | 882 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
882 | 883 | """ |
883 | 884 | try: |
884 | - data = self.data_image[0x0020][0x0037] | |
885 | + data = self.data_image[str(0x0020)][str(0x0037)] | |
885 | 886 | except(KeyError): |
886 | 887 | return [1.0, 0.0, 0.0, 0.0, 1.0, 0.0] |
887 | 888 | |
... | ... | @@ -899,7 +900,7 @@ class Parser(): |
899 | 900 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
900 | 901 | """ |
901 | 902 | try: |
902 | - data = self.data_image[0x0020][0x0037] | |
903 | + data = self.data_image[str(0x0020)][str(0x0037)] | |
903 | 904 | except(KeyError): |
904 | 905 | return [0.0, 1.0, 0.0] |
905 | 906 | |
... | ... | @@ -917,7 +918,7 @@ class Parser(): |
917 | 918 | Critical DICOM tag (0x0020,0x0037). Cannot be edited. |
918 | 919 | """ |
919 | 920 | try: |
920 | - data = self.data_image[0x0020][0x0037] | |
921 | + data = self.data_image[str(0x0020)][str(0x0037)] | |
921 | 922 | except(KeyError): |
922 | 923 | return [1.0, 0.0, 0.0] |
923 | 924 | |
... | ... | @@ -933,7 +934,7 @@ class Parser(): |
933 | 934 | Critical DICOM tag (0x0020,0x0052). Cannot be edited. |
934 | 935 | """ |
935 | 936 | try: |
936 | - data = self.data_image[0x0020][0x0052] | |
937 | + data = self.data_image[str(0x0020)][str(0x0052)] | |
937 | 938 | except(KeyError): |
938 | 939 | return "" |
939 | 940 | |
... | ... | @@ -1013,7 +1014,7 @@ class Parser(): |
1013 | 1014 | DICOM standard tag (0x0018, 0x1030) was used. |
1014 | 1015 | """ |
1015 | 1016 | try: |
1016 | - data = self.data_image[0x0018][0x1030] | |
1017 | + data = self.data_image[str(0x0018)][str(0x1030)] | |
1017 | 1018 | if (data): |
1018 | 1019 | return data |
1019 | 1020 | except(KeyError): |
... | ... | @@ -1037,7 +1038,7 @@ class Parser(): |
1037 | 1038 | Critical DICOM tag (0x0018, 0x0020). Cannot be edited. |
1038 | 1039 | """ |
1039 | 1040 | try: |
1040 | - data = self.data_image[0x0018][0x0020] | |
1041 | + data = self.data_image[str(0x0018)][str(0x0020)] | |
1041 | 1042 | except(KeyError): |
1042 | 1043 | return "" |
1043 | 1044 | |
... | ... | @@ -1053,7 +1054,7 @@ class Parser(): |
1053 | 1054 | DICOM standard tag (0x0008, 0x0080) was used. |
1054 | 1055 | """ |
1055 | 1056 | try: |
1056 | - data = self.data_image[0x0008][0x0080] | |
1057 | + data = self.data_image[str(0x0008)][str(0x0080)] | |
1057 | 1058 | except(KeyError): |
1058 | 1059 | return "" |
1059 | 1060 | |
... | ... | @@ -1071,7 +1072,7 @@ class Parser(): |
1071 | 1072 | DICOM standard tag (0x0008, 0x0081) was used. |
1072 | 1073 | """ |
1073 | 1074 | try: |
1074 | - data = self.data_image[0x0008][0x0081] | |
1075 | + data = self.data_image[str(0x0008)][str(0x0081)] | |
1075 | 1076 | except(KeyError): |
1076 | 1077 | return "" |
1077 | 1078 | |
... | ... | @@ -1088,7 +1089,7 @@ class Parser(): |
1088 | 1089 | Critical DICOM tag (0x0020, 0x000D). Cannot be edited. |
1089 | 1090 | """ |
1090 | 1091 | try: |
1091 | - data = self.data_image[0x0020][0x000D] | |
1092 | + data = self.data_image[str(0x0020)][str(0x000D)] | |
1092 | 1093 | except(KeyError): |
1093 | 1094 | return "" |
1094 | 1095 | |
... | ... | @@ -1104,7 +1105,7 @@ class Parser(): |
1104 | 1105 | DICOM standard tag (0x0010,0x2180) was used. |
1105 | 1106 | """ |
1106 | 1107 | try: |
1107 | - data = self.data_image[0x0010][0x2180] | |
1108 | + data = self.data_image[str(0x0010)][str(0x2180)] | |
1108 | 1109 | except(KeyError): |
1109 | 1110 | return "" |
1110 | 1111 | |
... | ... | @@ -1142,7 +1143,7 @@ class Parser(): |
1142 | 1143 | #sf.SetFile(self.gdcm_reader.GetFile()) |
1143 | 1144 | #res = sf.ToStringPair(tag) |
1144 | 1145 | try: |
1145 | - data = self.data_image[0x0028][0x0100] | |
1146 | + data = self.data_image[str(0x0028)][str(0x0100)] | |
1146 | 1147 | except(KeyError): |
1147 | 1148 | return "" |
1148 | 1149 | |
... | ... | @@ -1161,7 +1162,7 @@ class Parser(): |
1161 | 1162 | """ |
1162 | 1163 | # TODO: internationalize data |
1163 | 1164 | try: |
1164 | - data = self.data_image[0x0010][0x0030] | |
1165 | + data = self.data_image[str(0x0010)][str(0x0030)] | |
1165 | 1166 | except(KeyError): |
1166 | 1167 | return "" |
1167 | 1168 | |
... | ... | @@ -1178,7 +1179,7 @@ class Parser(): |
1178 | 1179 | DICOM standard tag (0x0020,0x0010) was used. |
1179 | 1180 | """ |
1180 | 1181 | try: |
1181 | - data = self.data_image[0x0020][0x0010] | |
1182 | + data = self.data_image[str(0x0020)][str(0x0010)] | |
1182 | 1183 | except(KeyError): |
1183 | 1184 | return "" |
1184 | 1185 | |
... | ... | @@ -1195,7 +1196,7 @@ class Parser(): |
1195 | 1196 | DICOM standard tag (0x0018,0x1120) was used. |
1196 | 1197 | """ |
1197 | 1198 | try: |
1198 | - data = self.data_image[0x0018][0x1120] | |
1199 | + data = self.data_image[str(0x0018)][str(0x1120)] | |
1199 | 1200 | except(KeyError): |
1200 | 1201 | return 0.0 |
1201 | 1202 | |
... | ... | @@ -1214,7 +1215,7 @@ class Parser(): |
1214 | 1215 | DICOM standard tag (0x0010,0x0040) was used. |
1215 | 1216 | """ |
1216 | 1217 | try: |
1217 | - data = self.data_image[0x0010][0x0040] | |
1218 | + data = self.data_image[str(0x0010)][str(0x0040)] | |
1218 | 1219 | except(KeyError): |
1219 | 1220 | return "" |
1220 | 1221 | |
... | ... | @@ -1231,7 +1232,7 @@ class Parser(): |
1231 | 1232 | DICOM standard tag (0x0010, 0x1010) was used. |
1232 | 1233 | """ |
1233 | 1234 | try: |
1234 | - data = self.data_image[0x0010][0x1010] | |
1235 | + data = self.data_image[str(0x0010)][str(0x1010)] | |
1235 | 1236 | except(KeyError): |
1236 | 1237 | return "" |
1237 | 1238 | |
... | ... | @@ -1251,7 +1252,7 @@ class Parser(): |
1251 | 1252 | DICOM standard tag (0x0010,0x0010) was used. |
1252 | 1253 | """ |
1253 | 1254 | try: |
1254 | - data = self.data_image[0x0010][0x0010] | |
1255 | + data = self.data_image[str(0x0010)][str(0x0010)] | |
1255 | 1256 | except(KeyError): |
1256 | 1257 | return "" |
1257 | 1258 | |
... | ... | @@ -1271,7 +1272,7 @@ class Parser(): |
1271 | 1272 | DICOM standard tag (0x0010,0x0020) was used. |
1272 | 1273 | """ |
1273 | 1274 | try: |
1274 | - data = self.data_image[0x0010][0x0020] | |
1275 | + data = self.data_image[str(0x0010)][str(0x0020)] | |
1275 | 1276 | except(KeyError): |
1276 | 1277 | return "" |
1277 | 1278 | |
... | ... | @@ -1291,7 +1292,7 @@ class Parser(): |
1291 | 1292 | DICOM standard tag (0x0018,0x1151) was used. |
1292 | 1293 | """ |
1293 | 1294 | try: |
1294 | - data = self.data_image[0x0018][0x1151] | |
1295 | + data = self.data_image[str(0x0018)][str(0x1151)] | |
1295 | 1296 | except(KeyError): |
1296 | 1297 | return "" |
1297 | 1298 | |
... | ... | @@ -1308,7 +1309,7 @@ class Parser(): |
1308 | 1309 | DICOM standard tag (0x0018, 0x1152) was used. |
1309 | 1310 | """ |
1310 | 1311 | try: |
1311 | - data = self.data_image[0x0018][0x1152] | |
1312 | + data = self.data_image[str(0x0018)][str(0x1152)] | |
1312 | 1313 | except(KeyError): |
1313 | 1314 | return "" |
1314 | 1315 | |
... | ... | @@ -1325,7 +1326,7 @@ class Parser(): |
1325 | 1326 | DICOM standard tag (0x0018,0x0060) was used. |
1326 | 1327 | """ |
1327 | 1328 | try: |
1328 | - data = self.data_image[0x0018][0x0060] | |
1329 | + data = self.data_image[str(0x0018)][str(0x0060)] | |
1329 | 1330 | except(KeyError): |
1330 | 1331 | return "" |
1331 | 1332 | |
... | ... | @@ -1342,7 +1343,7 @@ class Parser(): |
1342 | 1343 | DICOM standard tag (0x0018,0x0050) was used. |
1343 | 1344 | """ |
1344 | 1345 | try: |
1345 | - data = self.data_image[0x0018][0x0050] | |
1346 | + data = self.data_image[str(0x0018)][str(0x0050)] | |
1346 | 1347 | except(KeyError): |
1347 | 1348 | return 0 |
1348 | 1349 | if (data): |
... | ... | @@ -1360,7 +1361,7 @@ class Parser(): |
1360 | 1361 | DICOM standard tag (0x0018,0x1210) was used. |
1361 | 1362 | """ |
1362 | 1363 | try: |
1363 | - data = self.data_image[0x0018][0x1210] | |
1364 | + data = self.data_image[str(0x0018)][str(0x1210)] | |
1364 | 1365 | except(KeyError): |
1365 | 1366 | return "" |
1366 | 1367 | |
... | ... | @@ -1377,7 +1378,7 @@ class Parser(): |
1377 | 1378 | DICOM standard tag (0x0008,0x0080) was used. |
1378 | 1379 | """ |
1379 | 1380 | try: |
1380 | - data = self.data_image[0x0008][0x0080] | |
1381 | + data = self.data_image[str(0x0008)][str(0x0080)] | |
1381 | 1382 | except(KeyError): |
1382 | 1383 | return "" |
1383 | 1384 | |
... | ... | @@ -1394,7 +1395,7 @@ class Parser(): |
1394 | 1395 | DICOM standard tag (0x0008, 0x1010) was used. |
1395 | 1396 | """ |
1396 | 1397 | try: |
1397 | - data = self.data_image[0x0008][0x1010] | |
1398 | + data = self.data_image[str(0x0008)][str(0x1010)] | |
1398 | 1399 | except(KeyError): |
1399 | 1400 | return "" |
1400 | 1401 | |
... | ... | @@ -1411,7 +1412,7 @@ class Parser(): |
1411 | 1412 | DICOM standard tag (0x0008,0x1090) was used. |
1412 | 1413 | """ |
1413 | 1414 | try: |
1414 | - data = self.data_image[0x0008][0x1090] | |
1415 | + data = self.data_image[str(0x0008)][str(0x1090)] | |
1415 | 1416 | except(KeyError): |
1416 | 1417 | return "" |
1417 | 1418 | |
... | ... | @@ -1427,7 +1428,7 @@ class Parser(): |
1427 | 1428 | DICOM standard tag (0x0008, 0x1010) was used. |
1428 | 1429 | """ |
1429 | 1430 | try: |
1430 | - data = self.data_image[0x0008][0x1010] | |
1431 | + data = self.data_image[str(0x0008)][str(0x1010)] | |
1431 | 1432 | except(KeyError): |
1432 | 1433 | return "" |
1433 | 1434 | |
... | ... | @@ -1445,7 +1446,7 @@ class Parser(): |
1445 | 1446 | DICOM standard tag (0x0008,0x0060) was used. |
1446 | 1447 | """ |
1447 | 1448 | try: |
1448 | - data = self.data_image[0x0008][0x0060] | |
1449 | + data = self.data_image[str(0x0008)][str(0x0060)] | |
1449 | 1450 | except(KeyError): |
1450 | 1451 | return "" |
1451 | 1452 | |
... | ... | @@ -1462,7 +1463,7 @@ class Parser(): |
1462 | 1463 | DICOM standard tag (0x0020,0x0013) was used. |
1463 | 1464 | """ |
1464 | 1465 | try: |
1465 | - data = self.data_image[0x0020][0x0013] | |
1466 | + data = self.data_image[str(0x0020)][str(0x0013)] | |
1466 | 1467 | except(KeyError): |
1467 | 1468 | return "" |
1468 | 1469 | |
... | ... | @@ -1478,7 +1479,7 @@ class Parser(): |
1478 | 1479 | DICOM standard tag (0x0008,0x1030) was used. |
1479 | 1480 | """ |
1480 | 1481 | try: |
1481 | - data = self.data_image[0x0008][0x1030] | |
1482 | + data = self.data_image[str(0x0008)][str(0x1030)] | |
1482 | 1483 | if (data): |
1483 | 1484 | encoding = self.GetEncoding() |
1484 | 1485 | return data.decode(encoding) |
... | ... | @@ -1509,7 +1510,7 @@ class Parser(): |
1509 | 1510 | DICOM standard tag (0x0008, 0x103E) was used. |
1510 | 1511 | """ |
1511 | 1512 | try: |
1512 | - data = self.data_image[0x0008][0x103E] | |
1513 | + data = self.data_image[str(0x0008)][str(0x103E)] | |
1513 | 1514 | if data == "None": |
1514 | 1515 | return _("unnamed") |
1515 | 1516 | if (data): |
... | ... | @@ -1525,7 +1526,7 @@ class Parser(): |
1525 | 1526 | DICOM standard tag (0x0008,0x0033) was used. |
1526 | 1527 | """ |
1527 | 1528 | try: |
1528 | - data = self.data_image[0x0008][0x0033] | |
1529 | + data = self.data_image[str(0x0008)][str(0x0033)] | |
1529 | 1530 | except(KeyError): |
1530 | 1531 | return "" |
1531 | 1532 | |
... | ... | @@ -1539,7 +1540,7 @@ class Parser(): |
1539 | 1540 | DICOM standard tag (0x0008,0x032) was used. |
1540 | 1541 | """ |
1541 | 1542 | try: |
1542 | - data = self.data_image[0x0008][0x0032] | |
1543 | + data = self.data_image[str(0x0008)][str(0x0032)] | |
1543 | 1544 | except(KeyError): |
1544 | 1545 | return "" |
1545 | 1546 | |
... | ... | @@ -1553,7 +1554,7 @@ class Parser(): |
1553 | 1554 | DICOM standard tag (0x0020, 0x0011) was used. |
1554 | 1555 | """ |
1555 | 1556 | try: |
1556 | - data = self.data_image[0x0020][0x0011] | |
1557 | + data = self.data_image[str(0x0020)][str(0x0011)] | |
1557 | 1558 | except(KeyError): |
1558 | 1559 | return "" |
1559 | 1560 | |
... | ... | @@ -1567,20 +1568,11 @@ class Parser(): |
1567 | 1568 | DICOM standard tag (0x0008, 0x0005) was used. |
1568 | 1569 | """ |
1569 | 1570 | try: |
1570 | - encoding = self.data_image[0x0008][0x0005] | |
1571 | + encoding_value = self.data_image[str(0x0008)][str(0x0005)] | |
1572 | + return const.DICOM_ENCODING_TO_PYTHON[encoding_value] | |
1571 | 1573 | except(KeyError): |
1572 | 1574 | return 'ISO_IR_100' |
1573 | 1575 | |
1574 | - if encoding is None or encoding == "None" or not encoding.strip(): | |
1575 | - return 'ISO_IR 100' | |
1576 | - else: | |
1577 | - #Problem with 0051 anonymized | |
1578 | - if (encoding.split(":"))[0] == "Loaded": | |
1579 | - return 'ISO_IR 100' | |
1580 | - else: | |
1581 | - return encoding | |
1582 | - return 'ISO_IR 100' | |
1583 | - | |
1584 | 1576 | |
1585 | 1577 | class DicomWriter: |
1586 | 1578 | ... | ... |
invesalius/reader/dicom_reader.py
... | ... | @@ -100,7 +100,6 @@ class LoadDicom: |
100 | 100 | def run(self): |
101 | 101 | |
102 | 102 | grouper = self.grouper |
103 | - | |
104 | 103 | reader = gdcm.ImageReader() |
105 | 104 | reader.SetFileName(self.filepath) |
106 | 105 | if (reader.Read()): |
... | ... | @@ -120,11 +119,13 @@ class LoadDicom: |
120 | 119 | tag = gdcm.Tag(0x0008, 0x0005) |
121 | 120 | ds = reader.GetFile().GetDataSet() |
122 | 121 | if ds.FindDataElement(tag): |
123 | - encoding = str(ds.GetDataElement(tag).GetValue()) | |
124 | - if encoding is None or encoding == "None" or encoding.startswith("Loaded"): | |
122 | + encoding_value = str(ds.GetDataElement(tag).GetValue()) | |
123 | + | |
124 | + if encoding_value.startswith("Loaded"): | |
125 | 125 | encoding = "ISO_IR 100" |
126 | - else: | |
127 | - encoding = "ISO_IR_100" | |
126 | + else: | |
127 | + encoding = const.DICOM_ENCODING_TO_PYTHON[encoding_value] | |
128 | + | |
128 | 129 | # Iterate through the Header |
129 | 130 | iterator = header.GetDES().begin() |
130 | 131 | while (not iterator.equal(header.GetDES().end())): |
... | ... | @@ -134,8 +135,8 @@ class LoadDicom: |
134 | 135 | data = stf.ToStringPair(tag) |
135 | 136 | stag = tag.PrintAsPipeSeparatedString() |
136 | 137 | |
137 | - group = tag.GetGroup() | |
138 | - field = tag.GetElement() | |
138 | + group = str(tag.GetGroup()) | |
139 | + field = str(tag.GetElement()) | |
139 | 140 | |
140 | 141 | tag_labels[stag] = data[0] |
141 | 142 | |
... | ... | @@ -158,8 +159,8 @@ class LoadDicom: |
158 | 159 | data = stf.ToStringPair(tag) |
159 | 160 | stag = tag.PrintAsPipeSeparatedString() |
160 | 161 | |
161 | - group = tag.GetGroup() | |
162 | - field = tag.GetElement() | |
162 | + group = str(tag.GetGroup()) | |
163 | + field = str(tag.GetElement()) | |
163 | 164 | |
164 | 165 | tag_labels[stag] = data[0] |
165 | 166 | |
... | ... | @@ -179,9 +180,9 @@ class LoadDicom: |
179 | 180 | rvtk.Update() |
180 | 181 | |
181 | 182 | try: |
182 | - data = data_dict[0x028][0x1050] | |
183 | + data = data_dict[str(0x028)][str(0x1050)] | |
183 | 184 | level = [float(value) for value in data.split('\\')][0] |
184 | - data = data_dict[0x028][0x1051] | |
185 | + data = data_dict[str(0x028)][str(0x1051)] | |
185 | 186 | window = [float(value) for value in data.split('\\')][0] |
186 | 187 | except(KeyError): |
187 | 188 | level = 300.0 |
... | ... | @@ -229,7 +230,7 @@ class LoadDicom: |
229 | 230 | #---------- Verify is DICOMDir ------------------------------- |
230 | 231 | is_dicom_dir = 1 |
231 | 232 | try: |
232 | - if (data_dict[0x002][0x002] != "1.2.840.10008.1.3.10"): #DICOMDIR | |
233 | + if (data_dict[str(0x002)][str(0x002)] != "1.2.840.10008.1.3.10"): #DICOMDIR | |
233 | 234 | is_dicom_dir = 0 |
234 | 235 | except(KeyError): |
235 | 236 | is_dicom_dir = 0 |
... | ... | @@ -244,13 +245,16 @@ class LoadDicom: |
244 | 245 | grouper.AddFile(dcm) |
245 | 246 | |
246 | 247 | #self.l.release() |
247 | - | |
248 | - #========== used in test ======================================= | |
249 | - #main_dict = dict( | |
250 | - # data = dict_file, | |
251 | - # labels = tag_labels) | |
252 | - | |
253 | - #plistlib.writePlist(main_dict, ".//teste.plist")""" | |
248 | + | |
249 | + | |
250 | + #========== used in test ======================================= | |
251 | + #print dict_file | |
252 | + #main_dict = dict( | |
253 | + # data = dict_file, | |
254 | + # labels = tag_labels) | |
255 | + #print main_dict | |
256 | + #print "\n" | |
257 | + #plistlib.writePlist(main_dict, ".//teste.plist") | |
254 | 258 | |
255 | 259 | |
256 | 260 | def yGetDicomGroups(directory, recursive=True, gui=True): |
... | ... | @@ -338,7 +342,7 @@ class ProgressDicomReader: |
338 | 342 | fow.SetFileName(log_path) |
339 | 343 | ow = vtk.vtkOutputWindow() |
340 | 344 | ow.SetInstance(fow) |
341 | - | |
345 | + | |
342 | 346 | y = yGetDicomGroups(path, recursive) |
343 | 347 | for value_progress in y: |
344 | 348 | if not self.running: |
... | ... | @@ -354,3 +358,4 @@ class ProgressDicomReader: |
354 | 358 | self.UpdateLoadFileProgress(None) |
355 | 359 | self.stoped = False |
356 | 360 | |
361 | + | ... | ... |