Python SimpleITK实现医学图像增强算法

1、对数变换

图像对数变换首先将图像从SimpleITK图像数据转成Numpy矩阵数据,然后采用Numpy的log1p()函数来计算数据的log(1+x)变换,由于1+x不能小于零,因此这里我们使用图像减去图像的最小值来计算对数变换结果。

image = sitk.ReadImage("srcdicom.mha")
np_image = sitk.GetArrayFromImage(image)
# log transform
np_log_image = np.log1p(np_image - np.min(np_image))
log_image = sitk.GetImageFromArray(np_log_image)
log_image.SetOrigin(image.GetOrigin())
log_image.SetDirection(image.GetDirection())
log_image.SetSpacing(image.GetSpacing())
sitk.WriteImage(log_image, "log_image.mha")

2、幂次变换

图像对数变换首先将图像从SimpleITK图像数据转成Numpy矩阵数据,然后采用Numpy的power()函数来计算数据的幂次变换,为了防止出现计算值溢出错误,因此这里我们使用图像减去图像均值再除以图像方差来计算图像幂次变换结果,,在这里我们计算图像3次幂变换。

# power transform
np_image_clone1 = np_image.copy()
np_image_clone1 = (np_image_clone1 - np_image.mean()) / np_image.std()
np_power_image = np.power(np_image_clone1, 3)
power_image = sitk.GetImageFromArray(np_power_image)
power_image.SetOrigin(image.GetOrigin())
power_image.SetDirection(image.GetDirection())
power_image.SetSpacing(image.GetSpacing())
sitk.WriteImage(power_image, "power_image.mha")

3、指数变换

图像指数变换首先将图像从SimpleITK图像数据转成Numpy矩阵数据,然后采用Numpy的exp()函数来计算数据的指数变换,为了防止出现计算值溢出错误,因此这里我们使用图像减去图像均值再除以图像方差来计算图像指数变换结果。

# exp transform
np_image_clone = np_image.copy()
np_image_clone = (np_image_clone - np_image.mean()) / np_image.std()
np_exp_image = np.exp(np_image_clone)
exp_image = sitk.GetImageFromArray(np_exp_image)
exp_image.SetOrigin(image.GetOrigin())
exp_image.SetDirection(image.GetDirection())
exp_image.SetSpacing(image.GetSpacing())
sitk.WriteImage(exp_image, "exp_image.mha")

4、直方图均衡化

我们使用函数AdativeHistogramEqualizationImageFilter()函数来实现图像的直方图均衡化,这个类函数需要人为设置三个参数:Alpha,Beta,Radius,其中Alpha参数是用来控制结果相对于经典直方图均衡化方法结果的相似程度,Beta参数用来控制图像锐化程度,Radius用来控制直方图统计时的区域大小。

# Histogram equalization
sitk_hisequal = sitk.AdaptiveHistogramEqualizationImageFilter()
sitk_hisequal.SetAlpha(0.9)
sitk_hisequal.SetBeta(0.9)
sitk_hisequal.SetRadius(3)
sitk_hisequal = sitk_hisequal.Execute(image)
sitk.WriteImage(sitk_hisequal, "sitk_hisequal.mha")

 

5、拉普拉斯图像锐化

我们使用LaplacianSharpeningImageFilter()函数来对图像进行拉普拉斯锐化。参数设置也比较简单,是否使用输入图像的Spacing来进行计算,在这里我们为了保持一致性,设置使用输入图像的Spacing。

# laplace sharpen
sitk_laplaciansharp = sitk.LaplacianSharpeningImageFilter()
sitk_laplaciansharp.UseImageSpacingOn()
sitk_laplaciansharp = sitk_laplaciansharp.Execute(image)
sitk.WriteImage(sitk_laplaciansharp, "sitk_laplaciansharp.mha")

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国计算机学会通讯杂志,何积丰. Cyber-physical systems [J]. 中国计算机学会通讯, 2010, 6(1): 25-29....

摘要:本文提出了将计算机和互联网技术引入传统的基于模拟电路和微控制器的电池管理系统的想法,以此为电池系统带来更高的安全性和更长的寿命,降低电池端硬件的复杂度和成本。本文讨论了电池管理系统的详细设计和实现过程。系统通过MATLAB仿真工具Simulin…

使用Nginx配置NodeJs程序(Windows平台)

简介 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证…

Hadoop Mapreduce分区、分组、二次排序过程详解[转]

徐海蛟 教学用途1、MapReduce中数据流动(1)最简单的过程: map - reduce(2)定制了partitioner以将map的结果送往指定reducer的过程: map - partition - reduce(3)增加了在本地先进性…

服务器系统上1068错误,错误1068,详细教您启动网络服务错误1068怎么解决

在电脑中,通常开机后就会自动连接网络宽带,不过有用户遇到问题。开机后网络图标显示红叉或者图标正常无法上网,打开网络和共享中心才发现是服务或者组无法启动,启动时显示错误1068,这该怎么办?下面&#xf…

NodeJs连接Oracle数据库

nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodejs连接Oracle的配置,运行环境: windows7 x64 nodejs 0.12.7 Python 2.7.10 npm 2.11.3 运行原理分析 npm调…

重置Oracle密码

在系统运行中输入: sqlplus /nolog 在命令窗口分别执行: conn /as sysdbaalter user scott identified by tiger;alter user scott account unlock; 这样就把“scott”用户密码修改为“tiger”了,用户可根据自己需求,重置密码。

ImportError: No module named ‘sklearn.qda‘  ImportError: No module named ‘sklearn.lda‘

ImportError: No module named sklearn.qda ImportError: No module named sklearn.lda from sklearn.qda import QDAImportError: No module named sklearn.qda’ from sklearn.qda import LDAImportError: No module named sklearn.lda’ 版本更新问题。 更改为&#…

maven实现多模块热部署

2019独角兽企业重金招聘Python工程师标准>>> 一、背景 基于maven的项目工程都会按模块划分,每个模块最终形成一个jar包,那么每次对模块的修改就需要重新打包,这样的工作重复而繁琐,以前的热部署解决方案都是只针对web…

鲲鹏服务器php性能,对鲲鹏服务器的内存进行性能优化后的前后数据对比

测试的鲲鹏服务器是96核2numa节点,内存测试用的是Imbench里面的stream。优化说明,bios和绑核优化后性能提升明显,编译参数优化后性能提升不明显可以根据情况是否进行编译优化1、Bios修改:进入bios,在Advanced中进入Memory Config界…

Express调用mssql驱动公共类dbHelper

直接上代码: /** * Created by chaozhou on 2015/9/18. */var mssql require(mssql);var user "sa", password "sa", server "192.168.20.132", database "ggcms";/** * 默认config对象 * type {{user: stri…

怎么修改RO服务器版本,谁知道build.prop的系统版本号怎么改

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼# begin build properties# autogenerated by buildinfo.shro.build.idJDQ39ro.build.display.idJDQ39ro.build.version.incrementalV1.11ro.build.version.sdk17ro.build.version.codenameRELro.build.version.release4.2.2ro.bui…

清理vs工程文件(python2.7)

本文记录了两种方法,用于对vs目录的清理工作,这两种方法都是用python2.7实现的,一个是基于文件的扩展名,一个是基于文件的大小: 基于文件大小的清理脚本: #-*- coding:utf-8 -*- import os import string d…

Python如何忽略warning的输出

有时候运行代码时会有很多warning输出,如提醒新版本之类的,如果不想这些乱糟糟的输出可以这样: import warningswarnings.filterwarnings(ignore) 命令行下则可以: python -W ignore file.py 这样就可以避免warnings的输出了&…

nodejs常用组件

mssql 用途:连接SqlServer数据库 node-excel-export 用途:导出excel表格 nodegrass 用途:模拟用户进行get/post请求,下载文件等 uuid 用途:生成全球唯一标识的. 官网:https://npm.taobao.org/package/…

手机投屏时电视显示服务器有问题,小屏变大屏,手机投屏这几招你学废了么?...

马上七夕了,又恰逢周末不想去电影院凑热闹的人可以在家看电影、追剧但是小屏看剧一点也不爽何不投放到电视上饱览大视野呢我们可以借助“投屏”功能痛痛快快在电视上观看想看的剧集和电影那么如何通过手机,将内容传送到智能电视上呢那么接下来为大家介绍…

ImportError: No module named ‘pandas.io.data‘

ImportError: No module named pandas.io.data 第一步:pip install pandas-datareader 第二步: 把 "from pandas.io.data import DataReader" 换成 "from pandas_datareader import data"

分类算法之决策树介绍

实习了一段时间,接触了一些数据挖掘、机器学习的算法,先记录下来方便以后的复习回顾: 一:决策树概念 决策树可以看做一个树状预测模型,它是由节点和有向边组成的层次结构。树中包含3中节点:根节点、内部节点…

C#调用Couchbase中的Memcached缓存

安装服务端 服务端下载地址:http://www.couchbase.com/download 选择适合自己的进行下载安装就可以了,我这里选择的是Win7 64。 服务端安装完后,如果成功了,那么在浏览器中可以看到。如果没有那么需要手动进行访问http://localhost:8091/ind…

Windows10安装Anaconda和Pytorch(CPU版,无GPU加速)

1.Anaconda安装 Anaconda的安装网上的教程非常非常多,很简单,下面这篇博客写的很详细,看我写的也可以。 地址:https://blog.csdn.net/u014546828/article/details/80334448 注意:不建议从 官网下载,官网…

云计算的发展及应用--演讲用PPT

最近在几个客户处进行了关于云计算的普及培训。主要是让用户了解什么是云计算,云计算的框架以及对我们的影响。我将自己手中的几本相关资料,结合自己的经验和理解,整合成了一篇演示用的PPT。 虽然演示用的PPT简洁些,但用来理解一下…