다이콤(DICOM:Digital Imaging Communication in Medicine) 은 의료영상 표준규격이다.
대개 의료영상 형식이 그렇듯 다이콤은 많은 헤더 + 실제 이미지 로 구성되어 있는데
이 헤더가 상당히 복잡하다.
C code로 나혼자 열어보려고 했지만 너무 복잡해서.. 관두기로 했다.
그리고 알고 보니 이미 대중적으로 쓰이고 있는 라이브러리 들이 있더라!
가장 많이 쓰이고 탄탄하게 구성되어있는 것으론
GDCM(Grassroots DICOM library)
과
dcmtk(Dicom Toolkit)
(클릭하면 홈페이지로)
이 있다. 각 라이브러리 모두 itk 등등 공신력 있고 잘나가는 많은 프로그램에 사용된 제대로 검증받은 놈들이다.
내가 원하는건
image dimension, voxel info, images 정도인데 난 gdcm를 썻다.
간단히 코드를 보면,
대개 의료영상 형식이 그렇듯 다이콤은 많은 헤더 + 실제 이미지 로 구성되어 있는데
이 헤더가 상당히 복잡하다.
C code로 나혼자 열어보려고 했지만 너무 복잡해서.. 관두기로 했다.
그리고 알고 보니 이미 대중적으로 쓰이고 있는 라이브러리 들이 있더라!
가장 많이 쓰이고 탄탄하게 구성되어있는 것으론
GDCM(Grassroots DICOM library)
과
dcmtk(Dicom Toolkit)
(클릭하면 홈페이지로)
이 있다. 각 라이브러리 모두 itk 등등 공신력 있고 잘나가는 많은 프로그램에 사용된 제대로 검증받은 놈들이다.
내가 원하는건
image dimension, voxel info, images 정도인데 난 gdcm를 썻다.
간단히 코드를 보면,
int main(int argc, char *argv[])
{
const char *filename = "i707217.MRDC.2090.dcm";
gdcm::ImageReader reader;
reader.SetFileName(filename);
gdcm::Image gimage = reader.GetImage();
cout << "get columns : " << gimage.GetColumns() <<endl;
cout << "get rows : " << gimage.GetRows() << endl;
cout << "get data element : " << gimage.GetDataElement() << endl;
cout << "get Dimensions x: " << gimage.GetDimension(1) << endl;
cout << "get Dimensions y: " << gimage.GetDimension(2) << endl;
cout << "get Dimensions z: " << gimage.GetDimension(3) << endl;
cout << "get origins : " << gimage.GetOrigin() << endl;
unsigned short * img = new unsigned short[64*64];
bool flag = gimage.GetBuffer((char *) img);
FILE * ft;
ft = fopen("test.bin","wb");
fwrite(img,2,64*64,ft);
fclose(ft);
return 0;
}
이렇게 간단하게 할 수있었다!
다만,, 이렇게 이미지를 저장해서 MATLAB의 dicomread와 비교해 보니
270도 돌아가있고 좌우가 플립되어 있었다..-_-
영상마다 좌우 바뀌고 돌아가고 하는게 제일 문제다. 표준이면 표준답게 이런건 지켜줘야지..-_- 뭐가 맞는건지도 모르겠다.
돌아간거야 돌리면 되는데, 좌우 플립은 뭐가 맞는건지 난감하다.
이렇게 간단하게 할 수있었다!
다만,, 이렇게 이미지를 저장해서 MATLAB의 dicomread와 비교해 보니
270도 돌아가있고 좌우가 플립되어 있었다..-_-
영상마다 좌우 바뀌고 돌아가고 하는게 제일 문제다. 표준이면 표준답게 이런건 지켜줘야지..-_- 뭐가 맞는건지도 모르겠다.
돌아간거야 돌리면 되는데, 좌우 플립은 뭐가 맞는건지 난감하다.
반응형
'Neuroscience' 카테고리의 다른 글
Bayesian approaches to brain function (0) | 2014.07.13 |
---|---|
뇌를 투명하게 보는 방법(Clarity) 개발 (0) | 2014.01.10 |
BOLD 신호의 원리, principles of bold signal (0) | 2012.06.24 |
doDTI 로 그려본 내 머리 신경다발. (0) | 2010.12.24 |
Siemens IMA or Dicom 바로 보는 Syngo viewer (0) | 2010.10.19 |