当前位置:   article > 正文

14. DICOM图像显示-DCMTK-处理超声彩色图像_dcmtk中dcmgpdir

dcmtk中dcmgpdir

  本篇文章实现radiant对彩色图像显示和窗宽窗位调整。
  前面的文章对DICOM图像的操作都是基于dcmimgle模块的DcmImage类实现的。
dcmtk官方说明:
  模块dcmimgle包含访问和渲染 DICOM 单色图像的类。
  模块dcmimage提供对彩色图像的支持。
  模块dcmjpeg提供了对 JPEG 压缩图像的支持。
即,
  dcmimgle只支持MONOCHROME1和MONOCHROME2单色图像
  dcmimage只支持彩色图像
要支持彩色图像,需要以下操作

  1. 引入dcmimage.lib库
  2. 引入#include “dcmtk/dcmimage/diregist.h”

  彩色图像操作,外部类依然是dcmimgle模块的DcmImage类,DcmImage内部根据图像类型实例化对应的内部图像处理类。
样例图像,超声US
在这里插入图片描述
在这里插入图片描述

一. 显示图像

1. 应用层代码

dicomImg = new DicomImage(dcmParse->GetDataSet(), EXS_LittleEndianExplicit);
int size = dicomImg->getOutputDataSize(8);
unsigned char *pixelDataGrey = new unsigned char[size];
dicomImg->getOutputData(pixelDataGrey, size, 8);

int width = dicomImg->getWidth();
int height = dicomImg->getHeight();
//RGB彩色像素占3个字节
int bytes = dcmParse->GetElementValueInt(DCM_SamplesPerPixel);

PixelInfoGray pixelInfo(width, height, bytes, pixelDataGrey);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

  可以看到代码和CT图像一样,只是CT图像的bytes为1,表示1字节灰度值,US图像的bytes为3表示3字节RGB。

二.窗宽窗位调整

  窗宽窗位操作一般指MONOCHROME类型图像。彩色图像一般使用亮度和对比度来进行调整,也可使用窗宽窗位进行调整。
  窗宽窗位和亮度对比度的关系如下。
  窗技术:窗技术是根据诊断需要,调节图像的对比度和亮度的调节技术,它包括窗宽,窗位的选择。

  窗宽:窗宽的宽窄直接影响图像的清晰度与对比度。如果使用窄的窗宽,则显示的CT值范围小,每一灰阶代表的CT值幅度小,对比度强,适于观察密度接近的组织结构(如脑组织)。反之,如果使用宽的窗宽,则显示的CT值范围大,每一灰阶代表的CT值幅度大,则图像对比度差,但密度均匀,适于观察密度差别大的结构(如骨与软组织)。

  窗位:窗位(窗中心)指窗宽范围内均值或中心值。比如一幅CT图像,窗宽为100Hu,窗位选在0Hu;则以窗位为中心(0Hu),向上包括+50Hu,向下包括-50Hu,凡是在这个100Hu范围内的组织均可显示出来并为人眼所识别。凡是大于+50Hu的组织均为白色;凡是小于-50Hu的组织均为黑色,其密度差异无法显示。
在这里插入图片描述
  样例图像本身没有(0028,1050)Window Center和(0028,1051) Window Width元素,但界面显示默认的窗宽为256,窗位128,即最小0到最大值255,正好是1字节所能表示的整型范围。

1. 应用层代码

彩色图像窗宽窗位调整和MONOCHROME方式一样。

int size = dicomImg->getOutputDataSize(8);
unsigned char *pixelDataGrey = new unsigned char[size];
dicomImg->getOutputData(pixelDataGrey, size, 8);

//计算最大值和最小值
int min = (2 * wwWl.wl - wwWl.ww) / 2.0 + 0.5;
int max = (2 * wwWl.wl + wwWl.ww) / 2.0 + 0.5;
for (int i = 0; i < len; i++)
{
   
	if (pixelDataGrey[i] < min)
		pixelDataGrey[i] = 0;
	else if (pixelDataGrey[i] > max)
		pixelDataGrey
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/289883
推荐阅读
相关标签
  

闽ICP备14008679号