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

本文详细介绍了如何使用DCMTK显示和调整彩色超声DICOM图像的窗宽窗位。通过引入dcmimage模块,实现了彩色图像的处理,包括三次转换过程:InputData、InterData和OutputData。尽管窗宽窗位调整对彩色图像的效果有限,但可通过亮度和对比度调整改善显示。
摘要由CSDN通过智能技术生成

  本篇文章实现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);

  可以看到代码和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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DICOM医学影像

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值