2017-12-20 5 views
1

이상한 질문이 있지만, dicom 파일의 태그를 읽을 수 없을 때 오류를 처리하기위한 테스트를하고 있습니다.dicom 파일의 헤더를 읽을 수 없게 만드는 방법

불행히도 손상된 dicom을 사용할 수 없습니다.

특히, 파일에 잘못 인코딩 된 텍스트 태그 또는 잘못된 숫자 데이터 태그를 적용하여 파이썬의 pydicom 패키지에서 읽을 수없는 방법을 조언 할 수 있습니까?

+0

난 당신이 (I 등을 할 수있는 그 어떤 모르는 즉시 사용 가능한 도구를 요구하고 있는지 확실하지 않다 쉬운 것들) 또는 몇 줄의 코드로 그렇게 할 수있는 라이브러리가 필요합니다. –

+0

둘 중 하나는 ... 개념이나 아이디어조차도. 기술적 인 관점에서 볼 때, dicom 파일은 어떻게 borked가됩니까? –

답변

3

DCMTK에서 dcmodify 도구를 살펴볼 수 있습니다. 속성을 삽입, 수정 및 삭제하는 데 사용할 수 있습니다. 커맨드 라인을 통해 유효하지 않은 속성 값을 지정할 수는 없겠지만 소스 코드를 수정하여 (값 표현에 따라 최대 길이를 초과하는 속성 값을 명확하게 작성할 수 있다는 것을 제외하고는) 반드시 소스 코드를 수정할 수 있습니다.

내 접근 방식은 문자 버퍼를 작성하고 이진 데이터를 작성하는 것입니다. 그런 다음 값을 속성에 쓰는 메소드로 전달하십시오.

예 :

  • 쓰기 유니 코드 (UTF-8) (0008,0005)에 의해 지정된 characterset에 포함되지 않습니다
  • 쓰기 ASCII 문자가 유효한 유니 코드 문자가 아닌 시퀀스 - 확실하지 pydicom에 문제가 생길지 여부는 DICOM 관점에서 잘못 될 수 있습니다.
  • 값 표현이 "Decimal String"또는 "Integer String"인 속성에 숫자가 아닌 문자를 씁니다. YYYYMMDD VR은 "날짜"이외의
  • 형식 HHMMSS.FFFFFF VR을위한 "시간"[ '0'- '9']보다 더
  • 다른 캐릭터 이외의
  • 형식 '.', VR "고유 식별자"

[편집]을 위해 : DCMTK, dcmodify : http://dicom.offis.de/dcmtk.php.en

+3

좋은 제안. 기타 : 하나는 고르지 않은 패딩을 넣을 수 있습니다. 사용되지 않는 헤더와 개인 헤더를 사용하고, 필요한 헤더를 드롭하고, 사용 된 TransferSyntax에 대해 거짓말을하고, 프레임 속도에 대해 거짓말을하고, 저장된 비트 등을 넣을 수 있습니다. 형식을 사용하면 여러 가지 방법으로 깨지기가 쉽습니다. 주요 공급 업체는 항상 규정을 준수하고 견고한 제품을 보낼 수 없습니다. – Ashley

+0

위대한 의견과 대답, 모두에게 감사합니다! –

관련 문제