123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /***************************************************************************
- * E-Com Technology Ltd.
- *
- * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta
- ***************************************************************************/
- #ifndef __IMAGE_PROCESS__
- #define __IMAGE_PROCESS__
- class TransferSyntax;
- //////////////////////////////////////////////////////////////////////
- // class ImageProcess
- class DICOM_API ImageProcess
- {
- public:
- UINT32 ImageHandle0; // Used for display system, such as HBITMAP or HDIB
- UINT32 ImageHandle1; // Used for display system, such as HPALETTE or Palette index
- UINT32 ImageHandle2; // Other handles
- UINT32 ImageHandle3;
- public:
- void * RawPixelData; // Raw Pixel Data (decompressed)
- UINT32 RawPixelLength;
- UINT16 RawBitsAllocated; // (0028,0100)
- UINT16 RawBitsStored; // (0028,0101)
- UINT16 RawHighBit; // (0028,0102)
- UINT16 Rows; // (0028,0010)
- UINT16 Columns; // (0028,0011)
- void * CompPixelData; // Pixel Data (compressed)
- UINT32 CompPixelLength;
- UINT16 CompBitsAllocated; // (0028,0100)
- UINT16 CompBitsStored; // (0028,0101)
- UINT16 CompHighBit; // (0028,0102)
- int WindowCenter; // (0028,1050)
- int WindowWidth; // (0028,1051)
- UINT16 usSmallestValue; // (0028,0106)
- INT16 ssSmallestValue; // (0028,0106)
- UINT16 usLargestValue; // (0028,0107)
- INT16 ssLargestValue; // (0028,0107)
- double PixelSpacingX; // (0028,0030)
- double PixelSpacingY; // (0028,0030)
- double RescaleIntercept; // (0028,1052)
- double RescaleSlope; // (0028,1053)
- int NumberOfFrames; // (0028,0008)
- int FrameIndex; //
- UINT16 PixelRepresentation; // (0028,0103)
- char PhotometricInterpretation[65]; // (0028,0004)
- char Modality[17];
- DICOMImage & DicomImage;
- int JPEGQuality;
- UINT32 lParam;
- public:
- static BYTE LUT244To256 [256];
- static BYTE LUT256To244 [256];
- protected:
- static void Init256_244LUT (void);
- public:
- ImageProcess (DICOMImage & theImage, int FrameIndex = 0);
- ~ImageProcess ();
- void Reset (void);
- void SetTransferSyntax (const UID & TrnsynUID);
- void ReleasePixelData (void);
- void * Detach (void);
- BOOL ConvertTo (const UID & TrnsynUID);
- BOOL ConvertToRaw (void);
- BOOL JPEGBaselineEncode (void);
- BOOL JPEGBaselineDecode (void);
- BOOL JPEGProc14Encode (void);
- BOOL JPEGProc14Decode (void);
- BOOL JPEGProc14SV1Encode (void);
- BOOL JPEGProc14SV1Decode (void);
- BOOL JPEGExtendedProcEncode (void);
- BOOL JPEGExtendedProcDecode (void);
- BOOL JPEGSpectralProcEncode (void);
- BOOL JPEGSpectralProcDecode (void);
- BOOL JPEGFullProgressEncode (void);
- BOOL JPEGFullProgressDecode (void);
- BOOL RLEEncode (void);
- BOOL RLEDecode (void);
- BOOL JP2KLosslessEncode (void);
- BOOL JP2KLosslessDecode (void);
- BOOL JP2KLossyEncode (void);
- BOOL JP2KLossyDecode (void);
- BOOL AutoWindowLevel (void);
- BOOL Invert (void);
- BOOL Remap (void);
- BOOL SaveAsWindowsBitmap (const char * filename);
- BOOL SaveAsJPEGBaseline (const char * filename);
- BOOL SaveAsRaw (const char * filename);
- BOOL SetAutoRemoveImage (BOOL bRemove)
- {
- BOOL bOld = bAutoRemoveImage;
- bAutoRemoveImage = bRemove;
- return bOld;
- }
- RealImage * CreateRealImage (void);
- protected:
- TransferSyntax * ImageTransferSyntax;
- void * OrgPixelData; // Formated for .BMP (adjusted for window level and center)
- UINT32 OrgPixelLength;
- BOOL IsColor;
- BOOL bAutoRemoveImage;
- private:
- BOOL UpdateSelf ();
- void ReleaseRawPixelData ();
- void ReleaseCompPixelData ();
- protected:
- BOOL ConvertToCompress (const UID & TrnsynUID);
- BOOL ConvertToDecompress (void);
- public:
- static BOOL AutoWindowLevel_UINT8 (void * PixelData, int Width, int Height, int Depth, int * WindowWidth, int * WindowCenter);
- static BOOL AutoWindowLevel_INT16 (void * PixelData, int Width, int Height, int Depth, int * WindowWidth, int * WindowCenter);
- static BOOL AutoWindowLevel_UINT16 (void * PixelData, int Width, int Height, int Depth, int * WindowWidth, int * WindowCenter);
- friend DICOMImage;
- };
- #endif
|