X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctsim%2Fctndicom.cpp;h=156cebe2e342130f0fe139d5dcf4f1b874931765;hp=ac634c4359205f764def5c7db3ddeafa9c63b6c8;hb=1a050c98763fbbc0662731b0b76953acede6f5d7;hpb=c8b19dfaffba9f06d8b6c40cb1bb83a8964867f7 diff --git a/libctsim/ctndicom.cpp b/libctsim/ctndicom.cpp index ac634c4..156cebe 100644 --- a/libctsim/ctndicom.cpp +++ b/libctsim/ctndicom.cpp @@ -1,10 +1,10 @@ /***************************************************************************** ** FILE IDENTIFICATION ** -** Name: ctndicomp.cpp +** Name: ctndicomp.cpp ** Purpose: Interface to CTN Dicom classes -** Programmer: Kevin Rosenberg -** Date Started: March 2001 +** Programmer: Kevin Rosenberg +** Date Started: March 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg @@ -31,13 +31,13 @@ #ifdef HAVE_CTN_DICOM -#include "ctndicom.h" +#include "ctndicom.h" #include "imagefile.h" #include "projections.h" DicomImporter::DicomImporter (const char* const pszFile) - : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID), + : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID), m_pImageFile(NULL), m_pProjections(NULL), m_pFile(NULL) { unsigned long lOptions = DCM_ORDERLITTLEENDIAN | DCM_FORMATCONVERSION; @@ -46,7 +46,7 @@ DicomImporter::DicomImporter (const char* const pszFile) CONDITION cond = DCM_OpenFile (pszFile, lOptions, &m_pFile); if (cond != DCM_NORMAL) { m_bFail = true; - char textbuf [2048]; + char textbuf [2048]; CONDITION cond2 = COND_TopCondition (&cond, textbuf, sizeof(textbuf)); cond2 = DCM_NORMAL; // testing if (cond2 != DCM_NORMAL) { @@ -60,17 +60,17 @@ DicomImporter::DicomImporter (const char* const pszFile) unsigned short iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep; DCM_ELEMENT aElemRequired[] = { - {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), + {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), {reinterpret_cast(&iNRows)}}, - {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), + {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), {reinterpret_cast(&iNCols)}}, - {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), + {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), {reinterpret_cast(&iBitsAllocated)}}, - {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), + {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), {reinterpret_cast(&iBitsStored)}}, - {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), + {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), {reinterpret_cast(&iHighBit)}}, - {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), + {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), {reinterpret_cast(&iPixRep)}}, }; int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT); @@ -86,17 +86,17 @@ DicomImporter::DicomImporter (const char* const pszFile) } void -DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated, +DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated, unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep) { U32 lRtnLength; unsigned short iSamplesPerPixel, iPlanarConfig; - - DCM_ELEMENT elemPlanarConfig = - {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig), + + DCM_ELEMENT elemPlanarConfig = + {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig), {reinterpret_cast(&iPlanarConfig)}}; - DCM_ELEMENT elemSamplesPerPixel = - {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, + DCM_ELEMENT elemSamplesPerPixel = + {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), {reinterpret_cast(&iSamplesPerPixel)}}; if (DCM_ParseObject (&m_pFile, &elemSamplesPerPixel, 1, NULL, 0, NULL) != DCM_NORMAL) @@ -114,11 +114,11 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned char szRescaleIntercept[17]; double dRescaleSlope = 1; double dRescaleIntercept = 0; - DCM_ELEMENT elemRescaleSlope = - {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), + DCM_ELEMENT elemRescaleSlope = + {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), {szRescaleSlope}}; - DCM_ELEMENT elemRescaleIntercept = - {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), + DCM_ELEMENT elemRescaleIntercept = + {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), {szRescaleIntercept}}; if (DCM_ParseObject (&m_pFile, &elemRescaleSlope, 1, NULL, 0, NULL) == DCM_NORMAL) { if (sscanf (szRescaleSlope, "%lf", &dRescaleSlope) != 1) @@ -152,7 +152,7 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned unsigned char* pRawPixels = new unsigned char [lCheckLengthInBytes]; elemPixelData.length = lCheckLengthInBytes; elemPixelData.d.ot = pRawPixels; - + void* ctx = NULL; CONDITION cond = DCM_GetElementValue (&m_pFile, &elemPixelData, &lRtnLength, &ctx); if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) { @@ -200,9 +200,9 @@ DicomImporter::loadProjections() unsigned short iNViews, iNDets; DCM_ELEMENT aElemRequired[] = { - {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews), + {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews), {reinterpret_cast(&iNViews)}}, - {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets), + {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets), {reinterpret_cast(&iNDets)}}, }; int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT); @@ -224,7 +224,7 @@ DicomImporter::loadProjections() unsigned char* pRawProjections = new unsigned char [lRtnLength]; elemProjections.length = lRtnLength; elemProjections.d.ot = pRawProjections; - + ctx = NULL; CONDITION cond = DCM_GetElementValue (&m_pFile, &elemProjections, &lRtnLength, &ctx); if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) { @@ -370,59 +370,59 @@ DicomExporter::createDicomObject() unsigned short iPixRep = 0; unsigned short iSamplesPerPixel = 1; DCM_ELEMENT aElemRequired[] = { - {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), + {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), {reinterpret_cast(&iNRows)}}, - {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), + {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), {reinterpret_cast(&iNCols)}}, - {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), + {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), {reinterpret_cast(&iBitsAllocated)}}, - {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), + {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), {reinterpret_cast(&iBitsStored)}}, - {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), + {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), {reinterpret_cast(&iHighBit)}}, - {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), + {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), {reinterpret_cast(&iPixRep)}}, - {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), + {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), {reinterpret_cast(&iSamplesPerPixel)}}, - {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), + {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), {szRescaleSlope}}, - {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), + {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), {szRescaleIntercept}}, - {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, strlen(szImgPhotometricInterp), + {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, strlen(szImgPhotometricInterp), {szImgPhotometricInterp}}, - {DCM_IMGPIXELSPACING, DCM_DS, "", 1, strlen(szPixelSpacing), + {DCM_IMGPIXELSPACING, DCM_DS, "", 1, strlen(szPixelSpacing), {szPixelSpacing}}, - {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1, + {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1, strlen(szRelImageOrientationPatient), {szRelImageOrientationPatient}}, - {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1, + {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1, strlen(szRelImagePositionPatient), {szRelImagePositionPatient}}, {DCM_ACQKVP, DCM_DS, "", 1, strlen(szAcqKvp), {szAcqKvp}}, - {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, strlen(szRelAcquisitionNumber), + {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, strlen(szRelAcquisitionNumber), {szRelAcquisitionNumber}}, - {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, strlen(szRelAcquisitionNumber), + {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, strlen(szRelAcquisitionNumber), {szRelAcquisitionNumber}}, - {DCM_RELIMAGENUMBER, DCM_IS, "", 1, strlen(szRelImageNumber), + {DCM_RELIMAGENUMBER, DCM_IS, "", 1, strlen(szRelImageNumber), {szRelImageNumber}}, - {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, strlen(szIDSOPInstanceUID), + {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, strlen(szIDSOPInstanceUID), {szIDSOPInstanceUID}}, - {DCM_IDMANUFACTURER, DCM_LO, "", 1, strlen(szIDManufacturer), + {DCM_IDMANUFACTURER, DCM_LO, "", 1, strlen(szIDManufacturer), {szIDManufacturer}}, - {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1, + {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1, strlen(szRelPositionRefIndicator), {szRelPositionRefIndicator}}, - {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1, + {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1, strlen(szRelFrameOfReferenceUID), {szRelFrameOfReferenceUID}}, - {DCM_RELSERIESNUMBER, DCM_IS, "", 1, strlen(szRelSeriesNumber), + {DCM_RELSERIESNUMBER, DCM_IS, "", 1, strlen(szRelSeriesNumber), {szRelSeriesNumber}}, - {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, strlen(szIDAccessionNumber), + {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, strlen(szIDAccessionNumber), {szIDAccessionNumber}}, - {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, strlen(szIDAccessionNumber), + {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, strlen(szIDAccessionNumber), {szIDAccessionNumber}}, {DCM_RELSTUDYID, DCM_SH, "", 1, strlen(szRelStudyID), {szRelStudyID}}, - {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, strlen(szIDReferringPhysician), + {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, strlen(szIDReferringPhysician), {szIDReferringPhysician}}, {DCM_IDSTUDYTIME, DCM_TM, "", 1, strlen(szIDStudyTime), {szIDStudyTime}}, {DCM_IDSTUDYDATE, DCM_DA, "", 1, strlen(szIDStudyDate), {szIDStudyDate}}, - {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, strlen(szRelStudyInstanceUID), + {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, strlen(szRelStudyInstanceUID), {szRelStudyInstanceUID}}, {DCM_PATSEX, DCM_CS, "", 1, strlen(szPatSex), {szPatSex}}, {DCM_PATBIRTHDATE, DCM_DA, "", 1, strlen(szPatBirthdate), {szPatBirthdate}}, @@ -431,7 +431,7 @@ DicomExporter::createDicomObject() {DCM_IDIMAGETYPE, DCM_CS, "", 1, strlen(szIDImageType), {szIDImageType}}, {DCM_IDMODALITY, DCM_CS, "", 1, strlen(szModality), {szModality}}, {DCM_IDSOPCLASSUID, DCM_UI, "", 1, strlen(szSOPClassUID), {szSOPClassUID}}, - {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel), + {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel), {szIDManufacturerModel}}, {DCM_PATCOMMENTS, DCM_LT, "", 1, strlen(pszPatComments), {pszPatComments}}, }; @@ -447,7 +447,7 @@ DicomExporter::createDicomObject() unsigned char* pRawPixels = new unsigned char [lRealLength]; elemPixelData.length = lRealLength; elemPixelData.d.ot = pRawPixels; - + ImageFileArray v = m_pImageFile->getArray(); for (int iy = 0; iy < iNRows; iy++) { for (int ix = 0; ix < iNCols; ix++) {