Python对DICOM图像进行阈值分割
Python对Dicom图像进行处理,离不开pydicom,opencv-python,matplotlib,numpy四个代码库,安装完成这四个代码库后,
可以读取Dicom图像,并对图像进行处理,显式处理后的结果,下面就举例说明:
import cv2 import numpy import dicom from matplotlib import pyplot as plt# 读取单张Dicom图像 dcm = dicom.read_file("../Data/vhm.420.dcm") dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept# 获取图像中的像素数据 slices = [] slices.append(dcm)# 复制Dicom图像中的像素数据 img = slices[ int(len(slices)/2) ].image.copy()# 对图像进行阈值分割 ret,img = cv2.threshold(img, 90,3071, cv2.THRESH_BINARY) img = numpy.uint8(img)# 提取分割结果中的轮廓,并填充孔洞 im2, contours, _ = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) mask = numpy.zeros(img.shape, numpy.uint8) for contour in contours:cv2.fillPoly(mask, [contour], 255) img[(mask > 0)] = 255# 对分割结果进行形态学的开操作 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2,2)) img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# 根据分割mask获取分割结果的像素数据 img2 = slices[ int(len(slices)/2) ].image.copy() img2[(img == 0)] = -2000# 显式原始数据,mask和分割结果 plt.figure(figsize=(12, 12)) plt.subplot(131) plt.imshow(slices[int(len(slices) / 2)].image, 'gray') plt.title('Original') plt.subplot(132) plt.imshow(img, 'gray') plt.title('Mask') plt.subplot(133) plt.imshow(img2, 'gray') plt.title('Result') plt.show()
运行后的结果:
本例子以单张Dicom图像为例,分割图像中的骨骼信息,也可以同时读取多张Dicom图像,分割其他组织器官。
转载于:https://www.cnblogs.com/xuhui24/p/7091937.html
Python对DICOM图像进行阈值分割相关推荐
- 7.2 Python图像处理之图像分割-单阈值分割
7.2 Python图像处理之图像分割-单阈值分割 文章目录 7.2 Python图像处理之图像分割-单阈值分割 1 算法原理 2 代码 3 效果 1 算法原理 单阈值分割算法原理: 单阈值分割是指将 ...
- 图像的阈值分割(Optimum Thresholding)
摘 要:本实验主要实现最优阈值.图像分割就是把图像中具有特殊涵义的不同区域分开来,这些区域是互不相交的,每个区域都满足特定区域的一致性.图像分割是图像处理中的重要问题,也是计算机视觉研究中的一个 ...
- 红外目标图像中阈值分割方法的比较与研究
红外目标图像中阈值分割方法的比较与研究 摘要:本文主要以红外图像目标检测技术为背景,在图像阈值分割中以最大熵准则及遗传算法为基础,研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值. ...
- python+OpenCV图像处理(五)图像的阈值分割
图像的阈值处理 一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群.这是研究灰度变换 ...
- c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】...
" 前言:安利Python来开发OpenCV的原因其实细心的小伙伴早在?[视觉与图像]Python+OpenCV教程入门篇就找到了想要的答案.(点蓝字即可打开) " 今天周五了! ...
- matlab中图像的阈值分割,基于MATLAB的图像阈值分割技术汇总
数字图像处理课程论文 基于MATLAB的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB的分析.通过双峰法,迭 代法以及OUTS法三种算法来实现图像阈值分割,并且就这三种算法做了 ...
- 图像的阈值分割(迭代法选择阈值)
迭代法阈值选择算法是对双峰法的改进,他首先选择一个近似的阈值T,将图像分割成两个部分,R1和R2,计算出区域R1和R2的均值u1和u2,再选择新的 阈值T=(u1+u2)/2; 重复上面的过程,知道u ...
- C++ opencv基于OTSU图像多阈值分割
vector<double> sub(vector<int> A, vector<double> B) //减法 {vector<double> C;C ...
- 图像阈值分割:最大熵法
图像最大熵阈值分割的原理:使选择的阈值分割图像目标区域.背景区域两部分灰度统计的信息量为最大. 具体描述: 1. 根据信息熵定义,计算原始图像的信息熵H0,选择最大.最小灰度灰度的均值为初始阈值T0: ...
最新文章
- 原码、补码、反码、1的补码
- Unity3D 游戏引擎之平面小球重力感应详解【转】
- hibernate mysql分页_求struts+hibernate实现mysql分页的详细代码
- 按值传递时 php必须复制值,PHP笔试题汇总
- php 转义取消,php如何取消转义
- unity3d常用组件及分析
- win7 mysql php apache myadmin_windows下Apache+mysql+php+phpMyAdmin的安装及配置 | 学步园
- Lecture 9 Random built Binary Search Trees BSTs
- Android笔记进程优先级
- 一元多项式的相加(单链表的应用)
- MFC中新建类在classview中没有显示问题
- 大家马致远是哪个朝代的,马致远作品赏析
- python为什么叫爬虫-Python为什么叫爬虫
- 课程《设计模式之美》笔记之关于java四大特性
- 如何利用caffe自带的工具包绘制accuracy/loss曲线
- 可以删除电脑文件的c语言程序,win7c盘哪些文件可以删除?其删除方法介绍
- 博客实现浏览量统计次数
- 溴PEG溴,Br-PEG-Br
- PhoenixFD 液体
- C/C++——vector的基本操作总结
热门文章
- c# 对各数据库、数据集链接字符串
- PHP如何防止远程提交,PHP如何防止远程提交
- java解析c的结构体_解析C语言中结构体struct的对齐问题
- python 百分比输出_获取Linux系统负荷百分比的python脚本
- nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
- 帷幕的帷是什么意思_公务员最低服务年限是什么意思,被录用后辞职,还能考公务员吗...
- webpack 4 入门教程一
- ksd文件怎么导入存档_DAY5-step5 Python 示例说明 ZIP 压缩文件
- matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真
- 用有穷状态自动机描述计算机网络的传输层协议,计算机网络基椽—第八章(传输层)(全).ppt...