前言

有些时候在对医学图像进行分割的时候,需要提取出一组感兴趣的区域(也就是在某一灰度值下的区域)。获得分割的图像的方法有很多了,比如OTSU方法。但是这些方法存在着分割毛刺和过分割的现象,因而从准确的度的角度去分割CT图像,就需要使用到Dicom图像了,既是使用CT值作为分割的依据。

首先来看一个CT的脑部骨窗图像

在这个图像中对骨头比较感兴趣,使用OTSU方法去获得它的一个分割阈值得到他的分割图像为

可以再图中看到图像的骨头边缘明显加粗而且一些细节性的东西被分割掉了,因而这里采取了使用CT值进行分割的方法。

1. CT值与获取方法

1.1 CT值

CT 值是CT 图像中各组织与X 线衰减系数相当的对应值。无论是矩阵图像或矩阵数字都是CT 值的代表,而CT 值又是从人体组织、器官的μ值换算而来的。下面是不同组织对应的CT值范围

1.2 Dicom图像中CT值的获取

对于Dicom中CT值的获取需要使用到下面两个tag值

CT值的计算公式为:

Hu = pixel * slope + intercept

2. 基于CT值的分割方法

2.1 读取图像

对于图像的读取要使用下面的方式进行读取,否则读取出来的像素值是错误的

bool CGetCTImg::LoadOriginImg(std::string m_filepath, cv::Mat& m_img)
{if (m_filepath.length() == 0){return false;}DcmFileFormat fileformat;  if (fileformat.loadFile(m_filepath.c_str()).good()){DcmDataset *dataset = fileformat.getDataset();// decompress data set if compressed  dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL);DcmElement* element = NULL;OFCondition result = dataset->findAndGetElement(DCM_PixelData, element);if (result.bad() || element == NULL)return 1;unsigned short* pixData;result = element->getUint16Array(pixData);cv::Mat dst2(512, 512, CV_16UC1, cv::Scalar::all(0));unsigned short* data = nullptr;for (int i = 0; i < 512; i++){data = dst2.ptr<unsigned short>(i);   //取得每一行的头指针 也可使用dst2.at<unsigned short>(i, j) = ?  for (int j = 0; j < 512; j++){unsigned short temp = pixData[i*512 + j];temp = temp==63536?0:temp;*data++ = temp;}}m_img = dst2;}return true;
}

之后使用之前的公式计算CT值

//获取原始图像的CT值图像
bool CGetCTImg::GetCTValueImg(cv::Mat& src_img, cv::Mat& dst_img)
{if (!src_img.data){return false;}int rows(src_img.rows);int cols(src_img.cols);unsigned short* src_data = nullptr, *dst_data = nullptr;/*首先,需要读取两个DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope.然后通过公式:Hu = pixel * slope(1) + intercept(-1024)计算得到CT值。*/dst_img = src_img.clone();for (int i = 0; i < rows; ++i){src_data = src_img.ptr<unsigned short>(i);dst_data = dst_img.ptr<unsigned short>(i);for (int j=0; j<cols; ++j){int temp = src_data[j] * 1 - 1024;if (temp < 0)temp = 0;dst_data[j] = temp;}}return true;
}

按照设定好的CT值调整窗宽窗位得到分割的图像为

DCMTK实现Dicom CT图片读取CT值图像相关推荐

  1. DICOM 医学图像阅读器 CT MRI 超声 医疗软件 三维重建 可视化编程技术及应用

    一. 概述 此系统实现了常见 VTK 四视图,实现了很好的 DICOM 图像显示,可用于 DICOM 超声 X线 CT MR 三维重建 拾取像素值 窗宽 窗位 像素,距离测量,角度测量,提供源码: 并 ...

  2. python医学图像读取_对python读取CT医学图像的实例详解

    需要安装OpenCV和SimpleItk. SimpleItk比较简单,直接pip install SimpleItk即可. 代码如下: #coding:utf-8 import SimpleITK ...

  3. DCMTK、ITK、VTK读取dicom信息

    DCMTK.ITK.VTK读取dicom影像数据的方法 直接上代码,调用不同的医学影像库读取dicom影像信息 1. DCMTK读取影像中的pixelData //参数 list:为输入的图像文件名列 ...

  4. ct是计算机软件分析报告吗,ct影像工作站|ct诊断报告系统|ct图文工作站|dicom软件系统|技易科技-医学影像软件网...

    ct影像工作站 ct医学影像工作站的常见名称:ct工作站.CT图文报告系统. ct影像工作站 .ct影像软件等. ct影像工作站与CT设备连接,获取影像,辅助医师管理病历.书 写诊断报告,统计分析,并 ...

  5. CT图片分类神经网络

    CT图片分类 链接:https://pan.baidu.com/s/15CxZVg_3L466hkpgeQ7-VA 提取码:dwck ct图片的链接 from PIL import Image#图像进 ...

  6. Java读取并修改图片的像素值

    Java程序读取图片像素的值类, package work;import java.awt.AWTException; import java.awt.Dimension; import java.a ...

  7. OpenCV笔记(1)(图片读取与现实、色彩空间、基础运算、均值方差、逻辑运算、泛洪填充、均值中值及自定义平滑)...

    一.图片读取和显示 import cv2 as cv# 图片读取cv.imread(img_path) car_img = cv.imread("car1.png") # 图片显示 ...

  8. CT图片分类–AlexNet

    CT图片分类–AlexNet 链接:https://pan.baidu.com/s/15CxZVg_3L466hkpgeQ7-VA 提取码:dwck ct图片的链接 from PIL import I ...

  9. CT流程与CT图像的windowing操作(转载+整理)

    根据[4]中的定义: CT 的特点是能够分辨人体组织密度的轻微差别,所采用的标准是根据各种组织对X 线的线性吸收系数(μ值) 来决定的. [5]中提到了一个公式: 所以比赛中的dicom的灰度值需要转 ...

  10. DICOM笔记-医学图像读取涉及到的医学坐标体系

    DICOM定义   医疗数位影像传输协定(DICOM,DigitalImaging andCommunications inMedicine)是一组通用的标准协定,在对于医学影像的处理.储存.打印.传 ...

最新文章

  1. 记一次Sonar执行失败的修复
  2. 当你舌吻十秒后,下面就……
  3. Javascript中的valueOf与toString
  4. sulime text 常用快捷键总结
  5. Java命令行界面(第28部分):getopt4j
  6. Windows环境下的NodeJS+NPM+Bower安装配置步骤
  7. 面试题:左旋转字符串
  8. java sax解析复杂xml_SAX解析复杂的xml字符串
  9. vb.net编写函数应该在哪里_编写代码时清晰至上
  10. Qt、GTK 和KDE、GNOME的关系-转
  11. 尚硅谷设计模式-观察者模式
  12. 面试要10K,HR说你只值7K,怎么斗得过?
  13. Java命名规范+常量定义方法
  14. access的papersize命令_如何在报表中使用自定义尺寸的纸张
  15. 15 分钟 教你搞一个专属于你的域名邮箱
  16. AcWing 1319. 移棋子游戏(sg 博弈)
  17. 图片裁切批处理_PS照片裁剪批量处理方法
  18. 利用Xenu查询网站死链
  19. 人生如逆旅,我亦是行人。—第五天
  20. 德艺双馨艺术家——刘文军

热门文章

  1. 计算机如何设置多用户,windows7远程桌面多用户连接怎么设置_win7远程桌面如何设置多人登录-win7之家...
  2. 2012-7-10可樂词汇积累#9315;
  3. 文件怎么复制到虚拟机中的linux系统吗,Windows下的文件如何复制到虚拟机的Linux中...
  4. 使用Excel制作公众号数据看板
  5. webpack性能优化
  6. pdf去除签名_扫描全能王一键识别图片/PDF/文档/文本文字随意转换
  7. 删掉启动分区进不了系统,复活办法(win10)
  8. HTK搭建大词汇量连续语音识别系统(三)
  9. 计算机专业英语prototype,[听单词] 计算机专业英语词汇音频72,计算机英语单词MP3...
  10. 查询银行卡归属地区API接口