DELPHI 对DICOM中的窗宽、窗位调整

本文介绍了如何使用DELPHI处理DICOM影像的窗宽和窗位,特别是针对16位影像,当最大像素值大于65534时,通过调整像素值来解决显示问题。关键代码包括DCM_GetWidAndCenBySmallint和DCM_Scale16to8bit两个过程,实现了根据DICOM数据调整窗宽窗位并进行16位到8位的影像数据转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写这篇文章前72小时,我的多窗显示组件对于个别大W/C值的16位影像显示还是个问题,也发了帖子到PACS站询问过,更是在Google上猫刨了很久,终归一无所获,今天静下心来,用了2小时反复查看程序处理过程,对比数据,居然就这么搞定了,原来如此简单,哎,困惑了3天,把答案公布了,也算是助人为乐(中国地大物博,人心应宽广无量)


对16位的影像,要判断DICOM中最大像素值(0028,0107)大于65534,是则将16位影像数据的像素值大于等于0的全部减去65535,小于0的全部加上65535,然后在window-level的方法中将pixel_val按word取值(word是无符号类型,相当于取绝对值)进行判断,然后赋值即可(CT影像不能用word类型取值和赋值),就这么简单,以下是关键代码,祝你愉快!!!

 

procedure DCM_GetWidAndCenBySmallint(var DICOMDATA: TDICOMDATA; var Buffer: SMallIntp0);
var
  Value, Size, i: integer;
  min16, max16: integer;
begin
  Size := DICOMDATA.ImageColumns * DICOMDATA.ImageRows;

  Value := Buffer[0];
  max16 := Value;
  min16 := Value;
  i := 0;
  while i < Size do begin
    Value := Buffer;
    if Value < min16 then min16 := Value;
    if Value > max16 then max16 := Value;
    i := i + 1;
  end;

&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值