⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dimo2img.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
字号:
/* * *  Copyright (C) 1996-2005, OFFIS * *  This software and supporting documentation were developed by * *    Kuratorium OFFIS e.V. *    Healthcare Information and Communication Systems *    Escherweg 2 *    D-26121 Oldenburg, Germany * *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * *  Module:  dcmimgle * *  Author:  Joerg Riesmeier * *  Purpose: DicomMonochrome2Image (Header) * *  Last Update:      $Author: meichel $ *  Update Date:      $Date: 2005/12/08 16:47:47 $ *  CVS/RCS Revision: $Revision: 1.15 $ *  Status:           $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef DIMO2IMG_H#define DIMO2IMG_H#include "dcmtk/config/osconfig.h"#include "dcmtk/dcmdata/dctypes.h"#include "dcmtk/dcmimgle/dimoimg.h"/*---------------------* *  class declaration  * *---------------------*//** Class for MONOCHROME2 images */class DiMono2Image  : public DiMonoImage{ public:    /** constructor     *     ** @param  docu    pointer to dataset (encapsulated)     *  @param  status  current image status     */    DiMono2Image(const DiDocument *docu,                 const EI_Status status);    /** constructor, modality (linear)     *     ** @param  docu       pointer to dataset (encapsulated)     *  @param  status     current image status     *  @param  slope      rescale slope     *  @param  intercept  rescale intercept     */    DiMono2Image(const DiDocument *docu,                 const EI_Status status,                 const double slope,                 const double intercept);    /** constructor, modality (LUT)     *     ** @param  docu         pointer to dataset (encapsulated)     *  @param  status       current image status     *  @param  data         element containing the modality LUT data     *  @param  descriptor   element containing the modality LUT descriptor     *  @param  explanation  element containing the modality LUT explanation (optional)     */    DiMono2Image(const DiDocument *docu,                 const EI_Status status,                 const DcmUnsignedShort &data,                 const DcmUnsignedShort &descriptor,                 const DcmLongString *explanation);    /** constructor, convert color images to monochrome     *     ** @param  image  pointer to reference image     *  @param  red    coefficient by which the red component is weighted     *  @param  green  coefficient by which the green component is weighted     *  @param  blue   coefficient by which the blue component is weighted     */    DiMono2Image(const DiColorImage *image,                 const double red,                 const double green,                 const double blue);    /** constructor, createMonoOutput     *     ** @param  image   pointer to reference image     *  @param  pixel   pointer to output pixel data used for the new image     *  @param  frame   number of frame stored in the new image object     *  @param  stored  number of bits stored     *  @param  alloc   number of bits allocated     */    DiMono2Image(const DiMonoImage *image,                 DiMonoOutputPixel *pixel,                 const unsigned long frame,                 const int stored,                 const int alloc);    /** destructor     */    virtual ~DiMono2Image();    /** get color model of internal pixel representation.     *  @return always returns EPI_Monochrome2     */    virtual EP_Interpretation getInternalColorModel() const    {        return EPI_Monochrome2;    }    /** get pixel data with specified format.     *  (memory is handled internally)     *     ** @param  frame   number of frame to be rendered     *  @param  bits    number of bits for the output pixel data (depth)     *  @param  planar  flags, whether the output data (for multi-planar images) should be planar or not     *     ** @return untyped pointer to the pixel data if successful, NULL otherwise     */    virtual const void *getOutputData(const unsigned long frame,                                      const int bits,                                      const int planar = 0);    /** get pixel data with specified format.     *  (memory is handled externally)     *     ** @param  buffer  untyped pointer to the externally allocated memory buffer     *  @param  size    size of the memory buffer in bytes (will be checked)     *  @param  frame   number of frame to be rendered     *  @param  bits    number of bits for the output pixel data (depth)     *  @param  planar  flags, whether the output data (for multi-planar images) should be planar or not     *     ** @return status, true if successful, false otherwise     */    virtual int getOutputData(void *buffer,                              const unsigned long size,                              const unsigned long frame,                              const int bits,                              const int planar = 0);    /** create copy of current image object     *     ** @param  fstart  first frame to be processed     *  @param  fcount  number of frames     *     ** @return pointer to new DicomImage object (NULL if an error occurred)     */    DiImage *createImage(const unsigned long fstart,                         const unsigned long fcount) const;    /** create scaled copy of specified (clipping) area of the current image object.     *     ** @param  left_pos      x coordinate of top left corner of area to be scaled     *                        (referring to image origin, negative values create a border around the image)     *  @param  top_pos       y coordinate of top left corner of area to be scaled     *  @param  clip_width    width of area to be scaled     *  @param  clip_height   height of area to be scaled     *  @param  scale_width   width of scaled image (in pixels)     *  @param  scale_height  height of scaled image (in pixels)     *  @param  interpolate   specifies whether scaling algorithm should use interpolation (if necessary)     *                        default: no interpolation (0), 1 = pbmplus algorithm, 2 = c't algorithm     *  @param  aspect        specifies whether pixel aspect ratio should be taken into consideration     *                        (if true, width OR height should be 0, i.e. this component will be calculated     *                         automatically)     *  @param  pvalue        P-value used for the border outside the image (0..65535)     *     ** @return pointer to new DiImage object (NULL if an error occurred)     */    DiImage *createScale(const signed long left_pos,                         const signed long top_pos,                         const unsigned long clip_width,                         const unsigned long clip_height,                         const unsigned long scale_width,                         const unsigned long scale_height,                         const int interpolate,                         const int aspect,                         const Uint16 pvalue) const;    /** create a flipped copy of the current image     *     ** @param  horz  flip horizontally if true     *  @param  vert  flip vertically if true     *     ** @return pointer to new DiImage object (NULL if an error occurred)     */    DiImage *createFlip(const int horz,                        const int vert) const;    /** create a rotated copy of the current image.     *     ** @param  degree  angle by which the image shall be rotated     *     ** @return pointer to new DiImage object (NULL if an error occurred)     */    DiImage *createRotate(const int degree) const;    /** create monochrome copy of the current image.     *  Since the image is already monochrome the effect is the same as with createImage().     *     ** @param  dummy1  not used     *  @param  dummy2  not used     *  @param  dummy3  not used     *     ** @return pointer to new DiImage object (NULL if an error occurred)     */    DiImage *createMono(const double dummy1,                        const double dummy2,                        const double dummy3) const; protected:    /** constructor     *     ** @param  docu    pointer to dataset (encapsulated)     *  @param  status  current image status     *  @param  dummy   (necessary to be different from another constructor)     */    DiMono2Image(const DiDocument *docu,                 const EI_Status status,                 const char dummy);    /** constructor, copy     *     ** @param  image   pointer to reference image     *  @param  fstart  first frame to be processed     *  @param  fcount  number of frames     */    DiMono2Image(const DiMonoImage *image,                 const unsigned long fstart,                 const unsigned long fcount);    /** constructor, scale/clip     *     ** @param  image         pointer to reference image     *  @param  left_pos      x coordinate of top left corner of area to be scaled     *                        (referring to image origin, negative values create a border around the image)     *  @param  top_pos       y coordinate of top left corner of area to be scaled     *  @param  src_cols      width of area to be scaled     *  @param  src_rows      height of area to be scaled     *  @param  dest_cols     width of scaled image (in pixels)     *  @param  dest_rows     height of scaled image (in pixels)     *  @param  interpolate   specifies whether scaling algorithm should use interpolation (if necessary)     *                        default: no interpolation (0), 1 = pbmplus algorithm, 2 = c't algorithm     *  @param  aspect        specifies whether pixel aspect ratio should be taken into consideration     *                        (if true, width OR height should be 0, i.e. this component will be calculated     *                         automatically)     *  @param  pvalue        P-value used for the border outside the image (0..65535)     */    DiMono2Image(const DiMonoImage *image,                 const signed long left_pos,                 const signed long top_pos,                 const Uint16 src_cols,                 const Uint16 src_rows,                 const Uint16 dest_cols,                 const Uint16 dest_rows,                 const int interpolate = 0,                 const int aspect = 0,                 const Uint16 pvalue = 0);    /** constructor, flip     *     ** @param  image  pointer to reference image     ** @param  horz   flip horizontally if true     *  @param  vert   flip vertically if true     */    DiMono2Image(const DiMonoImage *image,                 const int horz,                 const int vert);    /** constructor, rotate     *     ** @param  image   pointer to reference image     *  @param  degree  angle by which the image shall be rotated     */    DiMono2Image(const DiMonoImage *image,                 const int degree);};#endif/* * * CVS/RCS Log: * $Log: dimo2img.h,v $ * Revision 1.15  2005/12/08 16:47:47  meichel * Changed include path schema for all DCMTK header files * * Revision 1.14  2004/02/06 11:07:50  joergr * Distinguish more clearly between const and non-const access to pixel data. * * Revision 1.13  2003/12/08 18:25:12  joergr * Removed leading underscore characters from preprocessor symbols (reserved * symbols). Updated CVS header. * * Revision 1.12  2003/06/12 15:08:34  joergr * Fixed inconsistent API documentation reported by Doxygen. * * Revision 1.11  2002/12/09 13:32:52  joergr * Renamed parameter/local variable to avoid name clashes with global * declaration left and/or right (used for as iostream manipulators). * * Revision 1.10  2001/11/27 18:18:23  joergr * Added support for plugable output formats in class DicomImage. First * implementation is JPEG. * * Revision 1.9  2001/06/01 15:49:44  meichel * Updated copyright header * * Revision 1.8  2000/03/08 16:24:18  meichel * Updated copyright header. * * Revision 1.7  1999/10/06 13:29:55  joergr * Corrected creation of PrintBitmap pixel data: VOI windows should be applied * before clipping to avoid that the region outside the image (border) is also * windowed (this requires a new method in dcmimgle to create a DicomImage * with the grayscale transformations already applied). * * Revision 1.6  1999/09/17 12:22:57  joergr * Added/changed/completed DOC++ style comments in the header files. * * Revision 1.5  1999/08/25 16:41:52  joergr * Added new feature: Allow clipping region to be outside the image * (overlapping). * * Revision 1.4  1999/03/24 17:20:06  joergr * Added/Modified comments and formatting. * * Revision 1.3  1999/01/20 15:03:20  joergr * Added new output method to fill external memory buffer with rendered pixel * data. * * Revision 1.2  1998/12/16 16:32:02  joergr * Added explanation string to LUT class (retrieved from dataset). * * Revision 1.1  1998/11/27 15:12:18  joergr * Added copyright message. * Added methods and constructors for flipping and rotating, changed for * scaling and clipping. * * Revision 1.2  1998/05/11 14:53:19  joergr * Added CVS/RCS header to each file. * * */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -