I want to change the lightness (or color) of the specified pixels in the DICOM images. First of all,I change the DICOM pixels to BMP pixels ,then I want to change the lightness (or color) of the specified coordinate,and last, display the image.Please help me!
here is my codes:
void *pDicomDibits;
DicomImage *image = new DicomImage("e:\\01.dcm");
image->createWindowsDIB(pDicomDibits, 0, 0, 8, 1, 1);
how to change the lightness of the specified pixels
Moderator: Moderator Team
-
- ICSMED DICOM Services
- Posts: 2217
- Joined: Fri, 2004-10-29, 21:38
- Location: Oldenburg, Germany
Are you referring to the VOI transformation (aka "windowing")? In this case, you should check the various methods in the DicomImage class:
Code: Select all
// --- windowing (voi): only applicable to grayscale images
// return true if successful (see also 'dimoimg.cc')
/** unset all VOI transformations (windows and LUTs).
* only applicable to monochrome images
*
** @return true if successful (1 = previous window/LUT has been valid,
* 2 = otherwise),
* false otherwise (image is invalid or not monochrome)
*/
int setNoVoiTransformation();
/** set automatically calculated minimum/maximum window.
* possibly active VOI LUT is implicitly disabled.
* Please note that the min/max values refer to the full pixel data (i.e. including
* all possible present frames as specified in the constructor of this class).
*
** @param idx ignore global min/max values if true (1)
*
** @return true if sucessful (1 = window has changed,
* 2 = new window is the same as previous one),
* false otherwise
*/
int setMinMaxWindow(const int idx = 0);
/** set automatically calculated histogram window.
* possibly active VOI LUT is implicitly disabled.
*
** @param thresh threshhold value specifying percentage of histogram border which
* shall be ignored (defaut: 5%).
*
** @return true if successful, false otherwise
*/
int setHistogramWindow(const double thresh = 0.05);
/** set automatically calculated VOI window for the specified Region of Interest (ROI).
* The ROI is specified by means of a rectangle (left, top, width, height). Only the part
* of the ROI that overlaps with the image is regarded - if the overlapping area is empty
* this method returns false (0).
* Possibly active VOI LUT is implicitly disabled.
*
** @param left_pos x-coordinate of the top left-hand corner of the ROI (starting from 0)
* @param top_pos y-coordinate of the top left-hand corner of the ROI (starting from 0)
* @param width width in pixels of the rectangular ROI (minimum: 1)
* @param height height in pixels of the rectangular ROI (minimum: 1)
* @param frame index of the frame to be used for calculation (default: 0 = first)
*
** @return true if sucessful (1 = window has changed,
* 2 = new window is the same as previous one),
* false otherwise
*/
int setRoiWindow(const unsigned long left_pos,
const unsigned long top_pos,
const unsigned long width,
const unsigned long height,
const unsigned long frame = 0);
/** set specified window (given by index to window width/center sequence stored in image file).
* possibly active VOI LUT is implicitly disabled.
* NB: This function does nothing if the flag CIF_UsePresentationState is set.
*
** @param window index to window width/center sequence (0..n-1)
*
** @return true if successful, false otherwise (none monochrome or invalid index)
*/
int setWindow(const unsigned long window);
/** set specified window (given by window width and center).
* possibly active VOI LUT is implicitly disabled.
*
** @param center center of specified window
* @param width width of specified window (> 0.0)
*
** @return true if sucessful (1 = window has changed,
* 2 = new window is the same as previous one),
* false otherwise
*/
int setWindow(const double center,
const double width);
/** get current window center and width values
*
** @param center return current window center value
* @param width return current window width value
*
** @return true if successful, false otherwise
*/
int getWindow(double ¢er,
double &width);
/** get number of VOI windows (stored in image file).
* NB: This function does nothing if the flag CIF_UsePresentationState is set.
*
** @return number of VOI windows
*/
unsigned long getWindowCount() const;
/** set VOI LUT (given by dcmdata elements).
* possibly active window/center is implicitly disabled.
* Given data is only referenced and not copied! Make sure that the corresponding DcmXXX
* objects exist as long as the VOI LUT is set.
*
** @param data contains LUT data
* @param descriptor describes LUT structure
* @param explanation free form description of VOI LUT (optional)
* @param descripMode mode specifying the use of the bits per table entry value
*
** @return true if successful, false otherwise
*/
int setVoiLut(const DcmUnsignedShort &data,
const DcmUnsignedShort &descriptor,
const DcmLongString *explanation = NULL,
const EL_BitsPerTableEntry descripMode = ELM_UseValue);
/** set VOI LUT (given by index to VOI LUT sequence stored in image file).
* possibly active window/center is implicitly disabled.
* NB: This function does nothing if the flag CIF_UsePresentationState is set.
*
** @param table index to VOI LUT sequence (0..n-1)
* @param descripMode mode specifying the use of the bits per table entry value
*
** @return true if successful, false otherwise (none monochrome or invalid index)
*/
int setVoiLut(const unsigned long table,
const EL_BitsPerTableEntry descripMode = ELM_UseValue);
/** get number of VOI LUTs (stored in image file)
*
** @return number of VOI LUTs
*/
unsigned long getVoiLutCount() const;
Who is online
Users browsing this forum: Google [Bot] and 1 guest