2016-12-12 15 views
0

현재 파이썬에서 pydicom을 사용하여 방사선 치료에 문제가되는 개인용 dicom 태그를 편집하려고합니다. 여기 파이썬 초보자의 비트가 나와 함께 참아.개인용 dicom 태그 편집 중

dicom 파일을 Python으로 올바르게 가져옵니다. 내가 편집하는 데 필요한 하나 pydicom output

(가) 태그를 강조 : 나는 명령

ds = dicomio.read_file("xy.dcm") 
print(ds) 

이 다음과 같은 데이터를 반환에서 첫 번째 이미지의 출력의 일부를 첨부했습니다.

ds[3249,1000] 

또는

ds[3249,1000].value 
의 라인을 따라 뭔가를 시도하고, 그러나

'SABR Spine' 

:

것은이 정확한 출력을 제공

ds[0x10,0x10].value 

뭔가를하려고 할 때 617,451,515,

복귀 다음 출력 :

> Traceback (most recent call last): 
    File "<pyshell#64>", line 1, in <module> 
    ds[3249,1000].value 
    File "C:\Users\...\dataset.py", line 317, in __getitem__ 
    data_elem = dict.__getitem__(self, tag) 
KeyError: (0cb1, 03e8) 

I는 동일한 방법을 통해 [3249,1010]에 액세스하려고하면, 그것은 (0cb1, 03f2)의 KeyError를를 반환한다.

end of _dicom_dict.py

나는이 권리를 수행 적이 : 두 번째 이미지에서 강조로

나는 _dicom_dict.py 파일에 태그를 추가 시도? 내가 제대로 태그에 접근하고있어 경우 모르겠어요 -

ds[300a,0070]

저를주는 '구문 에러 : 유효하지 않은 구문을'사용이 분수로 파일에 존재하는 경우에도, 예를 들어, 출력으로 그룹 순서. 나는 [3249,1000]이 어떻게 든 [3249,1010]에 연결되어 있다는 것을 알았고, 명백히 독점적 인 태그이므로 Matlab에서 편집 할 수는 없지만 어떤 이유로 파이썬에서 편집 할 수 있다고 제안되었습니다. . 많은

답변

1

그것은 당신의 dicomio 조회 같습니다

덕분에 16 진수 모든 입력 변환된다.

당신이 시도 할 수 :

ds[0x3249,0x1000] 

이 16 진수에 대한 강제 변환을 방지해야한다.

당신은 분명히 문자열로 직접 액세스 할 수 있습니다

ds['3249', '1000'] 

그러나, 문제가 중첩 된 여러 레이어 깊은 데이터 요소에 액세스하려고하는 것입니다.상단에 귀하의 출력을 바탕으로, 나는 시도 제안 :

first_list_item = ds['300a', '0070'][0] 

for item in first_list_item['300c', '0004']: 
    print(item['3249','1000']) 

본질적으로, 최고 수준의 데이터 세트 개체에서 데이터 요소가 목록 또는 다른 데이터 집합 객체가 될 수 있습니다. 데이터 구문 분석을 조금 더 어렵게 만들지 만 어쩌면 불가피합니다.

자세한 내용은 this을 참조하십시오.

+0

'ds [0x3249,0x1000]'을 사용하면 이전처럼 'KeyError : (3249,1000)'과 같은 오류 메시지를 반환합니다. 그래서 당신이 16 진수에 대해서 맞다고 생각합니다. 이것이 _dicom_dict.py 항목을 어떻게 든 수정해야한다는 것을 의미합니까? – Piethon

+0

'ds [0x32491000]'은 어떨까요? –

+0

이것은 'KeyError : (3249,1000)'과 같은 것을 반환합니다. – Piethon

0

앤드류 가이 (Andrew Guy)는 마지막 코멘트에서 300a, 0070의 첫 번째 시퀀스 항목을 가져와야한다고 설명합니다. 그런 다음 해당 항목의 300c, 0004 시퀀스에서 두 번째 시퀀스 항목을 가져옵니다. 순번 항목에서는 3249,1000 속성을 가져올 수 있어야합니다.