读取并显示dicom文件的图像数据和覆盖层数据
来源:互联网 发布:httppost json参数 编辑:程序博客网 时间:2024/06/05 14:06
一、图像数据
图像数据存储在标签<7FE0,0010>中,按照一行一行 的像素字节排列过去。在读取dicomTag时,会保存<7FE0,0010>在文件中指向的位置.
一般后面会专门的读取图像的字节流.
步骤如下:
新建一个位图:
Bitmap gdiImg=new Bitmap(cols, rows); //其中cols和rows为图像的行列值,存储在<0028,0010>和<0028,0011>连个标签中
确定图像每个像素的字节数:
dataLen / 8 * colors //colors指<0028,0002>,对于RGB为3,灰度图像为1,dataLen指<0028,0100>,每个像素的bit位数,除以8正好是字节数
对像素值做调窗操作
将值赋给bitmap
gdiImg.SetPixel(j, i , pixel);
总结:从左往右,从上往下扫描读取:
//for (int i = 0; i < gdiImg.Height; i++)
//{
// for (int j = 0; j < gdiImg.Width; j++)
// {
// if (reads >= pixDatalen)
// break;
// byte[] pixData = dicomFile.ReadBytes(dataLen / 8 * colors);
// reads += pixData.Length;
// Color c = Color.Empty; // if (colors == 1) // { // int grayGDI; // double gray = BitConverter.ToUInt16(pixData, 0); // //调窗代码,就这么几句而已 // //1先确定窗口范围 2映射到8位灰度 // int grayStart = (windowCenter - windowWith / 2); // int grayEnd = (windowCenter + windowWith / 2); // if (gray < grayStart) // grayGDI = 0; // else if (gray > grayEnd) // grayGDI = 255; // else // { // grayGDI = (int)((gray - grayStart) * 255 / windowWith); // } // if (grayGDI > 255) // grayGDI = 255; // else if (grayGDI < 0) // grayGDI = 0; // c = Color.FromArgb(grayGDI, grayGDI, grayGDI); // } // else if (colors == 3) // { // c = Color.FromArgb(pixData[0], pixData[1], pixData[2]); // } // gdiImg.SetPixel(j, i, c); // } //}
二、overlayData
覆盖层数据存储在标签<60xx,3000>中,其他有如下几个重要的标签:
(60xx,0010) Overlay Rows
(60xx,0011) Overlay Columns
(60xx,0050) Overlay Origin overlayData相对于图像数据的像素坐标 表示rows\columns,如果是位于左上角,这个值为1\1
(60xx,0040) Overlay Type 表明这个覆盖层数据时一个图像,还是一个感兴趣的区域,枚举值:G-Graphics,R-ROI
(60xx,0100) Overlay Bits Allocated 此值为1
解决实例:
西门子的波普图有重叠层
覆盖层 的图像显示有一个属性可以设置不透明度,控制覆盖层图像与像素图像的和谐显示
//设置不透明度
dc.PushOpacity(0.4);
- 读取并显示dicom文件的图像数据和覆盖层数据
- android 解析并显示dicom文件的数据和图像
- 3 vtk读取并显示dicom文件
- ENVI读取img并显示图像数据
- ITK&&VTK读取DICOM数据并渲染
- JQuery读取XML文件数据并显示
- DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
- DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”
- DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”
- DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
- java读取文件,读取一行数据,去重并显示。
- 黑白BMP文件的读写和数据黑白图像显示
- python使用h5py读取mat文件数据,并保存图像
- 用MATLAB改写DICOM文件中的图像数据
- MATLAB读取和显示obj文件的数据
- dicom文件的显示
- DICOM文件的读取显示和本地JPG格式的存储
- 建立DICOM数据集,并将其保持到文件的简单示例代码
- Noip2016 游记
- InfoPath Error “此文档库已经被重命名或删除,或者网络问题导致文件无法保存…” 的解决方案
- Kinect2.0之使用KinectSDK自带的KinectStudio进行数据采集
- mysqli和pdo链接方式
- Java NIO系列教程(七) FileChannel
- 读取并显示dicom文件的图像数据和覆盖层数据
- ADB命令
- 使用HttpURLConnection 和HttpClient
- 测试文件下载接口代码记录
- php面向对象简单实例
- 数据库授权相关
- Service服务之---------用服务来接收广播
- Linux服务器使用一:CentOS6.6安装与搭建流程及心得
- drawable下的圆角背景XML