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

📄 dicoimg.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * *  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:  dcmimage * *  Author:  Joerg Riesmeier * *  Purpose: DicomColorImage (Header) * *  Last Update:         $Author: meichel $ *  Update Date:         $Date: 2005/12/08 16:01:30 $ *  CVS/RCS Revision:    $Revision: 1.23 $ *  Status:              $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef DICOIMG_H#define DICOIMG_H#include "dcmtk/config/osconfig.h"#include "dcmtk/dcmdata/dctypes.h"#include "dcmtk/dcmimgle/diimage.h"#include "dcmtk/dcmimage/dicopx.h"#include "dcmtk/dcmimgle/diutils.h"/*------------------------* *  forward declarations  * *------------------------*/class DiColorOutputPixel;/*---------------------* *  class declaration  * *---------------------*//** Base class for color images */class DiColorImage  : public DiImage{ public:    /** constructor     *     ** @param  docu    pointer to the DICOM document     *  @param  status  status of the image object     *  @param  spp     sample per pixel (1, 3 or 4 depending on the color model)     *  @param  rgb     specifies whether internal image representation is in RGB format     */    DiColorImage(const DiDocument *docu,                 const EI_Status status,                 const int spp,                 const OFBool rgb = OFTrue);    /** destructor     */    virtual ~DiColorImage();    /** get color model of internal pixel representation.     *     ** @return returns EPI_RGB or EPI_YBR_Full depending on the 'rgb' flag in the constructor     */    virtual EP_Interpretation getInternalColorModel() const    {        return (RGBColorModel) ? EPI_RGB : EPI_YBR_Full;    }    /** get number of bytes required for the rendered output of a single frame     *     *  @param  bits  number of bits for the output pixel data (depth)     *     ** @return number of bytes if successful, 0 otherwise     */    virtual unsigned long getOutputDataSize(const int bits = 0) const;    /** get pixel data with specified format.     *  (memory is handled internally)     *  The standard color model of the pixel data is RGB, but if the flag "rgb" is OFFalse     *  and the original color model was YCbCr_Full or YCbCr_Full_422 YCbCr_Full is used instead.     *     ** @param  frame   number of frame to be rendered     *  @param  bits    number of bits per sample for the output pixel data (depth)     *  @param  planar  0 = color-by-pixel (R1G1B1...R2G2B2...R3G2B2...)     *                  1 = color-by-plane (R1R2R3...G1G2G3...B1B2B3...)     *     ** @return untyped pointer to the pixel data if successful, NULL otherwise     */    const void *getOutputData(const unsigned long frame,                              const int bits,                              const int planar = 0);    /** get pixel data with specified format.     *  (memory is handled externally)     *  The standard color model of the pixel data is RGB, but if the flag "rgb" is OFFalse     *  and the original color model was YCbCr_Full or YCbCr_Full_422 YCbCr_Full is used instead.     *     ** @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 per sample for the output pixel data (depth)     *  @param  planar  0 = color-by-pixel (R1G1B1...R2G2B2...R3G2B2...)     *                  1 = color-by-plane (R1R2R3...G1G2G3...B1B2B3...)     *     ** @return status, true if successful, false otherwise     */    int getOutputData(void *buffer,                      const unsigned long size,                      const unsigned long frame,                      const int bits,                      const int planar = 0);    /** get pixel data of specified plane.     *  (memory is handled internally)     *     ** @param  plane  index of color plane     *     ** @return untyped pointer to the pixel data if successful, NULL otherwise     */    const void *getOutputPlane(const int plane) const;    /** delete internally handled output memory buffer     *  Save memory if data is no longer needed.     */    void deleteOutputData();    /** 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  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        dummy parameter (only used for monochrome images)     *     ** @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 src_cols,                         const unsigned long src_rows,                         const unsigned long dest_cols,                         const unsigned long dest_rows,                         const int interpolate,                         const int aspect,                         const Uint16 pvalue) const;    /** flip current image (horizontally and/or vertically)     *     ** @param  horz  flip horizontally if true     *  @param  vert  flip vertically if true     *     ** @return true if successful (1 = flipped at least direction,     *                              2 = not flipped, because of image resolution - width and/or height equal to 1),     *          false otherwise     */    int flip(const int horz,             const int vert);    /** 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;    /** rotate current image (by steps of 90 degrees)     *     ** @param  degree  angle by which the image shall be rotated (-360, -270, -180, -90, 0, 90, 180, 270, 360)     *     ** @return true if successful (1 = rotated by at least 90 degrees,     *                              2 = not rotated, because of image resolution or angle),     *          false otherwise     */    int rotate(const int degree);    /** 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     *     ** @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     *     ** @return pointer to new DiImage object (NULL if an error occurred)     */    DiImage *createMono(const double red,                        const double green,                        const double blue) const;    /** get pointer to intermediate pixel data representation     *     ** @return pointer to intermediate pixel data     */    const DiPixel *getInterData() const    {        return InterData;    }    /** get pointer to intermediate pixel data representation     *     ** @return pointer to intermediate pixel data     */    const DiColorPixel *getColorInterData() const    {        return InterData;    }    /** create true color (24/32 bit) bitmap for MS Windows.     *  memory is not handled internally - must be deleted from calling program.     *     ** @param  data        untyped pointer memory buffer (set to NULL if not allocated externally)     *  @param  size        size of the memory buffer in bytes (if 0 'data' is set to NULL)     *  @param  frame       index of frame to be converted (starting from 0)     *  @param  bits        number of bits per pixel used for the output bitmap (24 or 32)     *  @param  upsideDown  specifies the order of lines in the images (0 = top-down, bottom-up otherwise)     *  @param  padding     align each line to a 32-bit address if true (default)     *     ** @return number of bytes allocated by the bitmap, or 0 if an error occured     */    unsigned long createDIB(void *&data,                            const unsigned long size,                            const unsigned long frame,                            const int bits,

⌨️ 快捷键说明

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