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")

Python SimpleITK实现医学图像增强算法相关推荐

  1. 医学图像边缘检测matlab实验,基于Matlab的医学图像增强与边缘检测算法的实验研究...

    分类号 国际十进分类号(UDC) 第四军医大学 学位论文 基于 Matlab 的医学图像增强与边缘检测 算法的实验研究 (题名和副题名) 袁丽婷 (作者姓名) 指导教师姓名 邱力军 副教授 指导教师单 ...

  2. 影像组学视频学习笔记(33)-使用SimpleITK实现医学影像差值、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/afcd06221ea4 来源:简书,已获转载授权 RadiomicsWorld.com "影像组学世界" ...

  3. 基于Python Unet的医学影像分割系统源码,含皮肤病的数据及皮肤病分割的模型,用户输入图像,模型可以自动分割去皮肤病的区域

    手把手教你用Unet做医学图像分割 我们用Unet来做医学图像分割.我们将会以皮肤病的数据作为示范,训练一个皮肤病分割的模型出来,用户输入图像,模型可以自动分割去皮肤病的区域和正常的区域.废话不多说, ...

  4. LabVIEW图像增强算法(基础篇—5)

    目录 1.空间域图像增强算法 1.1.线性卷积 1.1.1.一维卷积 1.1.2.二维卷积 1.2.领域增强 1.2.1.线性滤波 1.2.2.非线性滤波 2.频率域图像增强算法 2.1.傅里叶变换算 ...

  5. Retinex图像增强算法——SSR,MSR,MSRCR,MSRCP,autoMSRCR

    系列文章目录 关于OpenCV的一些图像处理函数 图象基本操作(读取.显示.通道提取.边界填充.融合.保存) Retinex图像增强算法--SSR,MSR,MSRCR,MSRCP,autoMSRCR ...

  6. 3.2 Python图像的频域图像增强-高通和低通滤波器

    3.2 Python图像的频域图像增强-高通和低通滤波器 文章目录 3.2 Python图像的频域图像增强-高通和低通滤波器 1 算法原理 1.1理想滤波器 1.2巴特沃斯滤波器 1.3指数滤波器 2 ...

  7. 3.5 Python图像的频域图像增强-同态滤波器

    3.5 Python图像的频域图像增强-同态滤波器 文章目录 3.5 Python图像的频域图像增强-同态滤波器 1 算法原理 2 代码 3 效果 1 算法原理 同态滤波是一种在频域中同时能够压缩图像 ...

  8. 3.3 Python图像的频域图像增强-特殊高通滤波器

    3.3 Python图像的频域图像增强-特殊高通滤波器 文章目录 3.3 Python图像的频域图像增强-特殊高通滤波器 1 算法原理 1.1高频增强滤波器 1.2高频提升滤波器 2 代码 3 效果 ...

  9. 3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换

    3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换 文章目录 3.1 Python图像的频域图像增强-图像的傅里叶变换和反变换 1 算法原理 2 代码 3 效果 1 算法原理 图像的傅里 ...

最新文章

  1. 详说 Cookie, LocalStorage 与 SessionStorage
  2. 哈夫曼编码译码 C语言,【求助】严蔚敏版数据结构 哈夫曼编码译码
  3. javaone_替代JavaOne 2013
  4. cobalt strick 4.0系列教程(3)---数据管理
  5. UNIX时间戳及日期的转换与计算
  6. android最简单存储数据结构,什么是存储要在多个Android设备上共享的同步数据的最佳数据结构?...
  7. python datetime datetime
  8. 如何开启php socket,如何用php实现websocket?
  9. IDEA-Maven的Dependencies中出现红色波浪线
  10. SqlServer导入Excel文件数据
  11. 计算机英语词汇汇总,计算机英语词汇汇总
  12. 分类性能度量指标:准确性(AC)、敏感性(SE)、特异性(SP)、F1评分、ROC曲线、PR(Precision-Recall)曲线、AUC曲线,混淆曲线
  13. Mysql客户端navicat的使用并连接远程数据库【重点】
  14. 如何复制网页上不能复制的文字
  15. 【OpenGL】glm库的配置
  16. 【计算机算法】递归——打印旋转方阵(正转及逆转)
  17. Andriod微信小程序自动化测试
  18. 分布式与集群的区别?
  19. bpm js 计算 音乐_推荐一个能检测歌曲bpm的插件
  20. hive 修改分区备注_hive修改 表/分区语句

热门文章

  1. generator 1【矩阵快速幂】
  2. 元类编程--property动态属性
  3. Sonar与jenkins集成
  4. static和extern对函数的作用
  5. eclispe快捷键
  6. LINUX学习笔记共五部分
  7. FileSystemObject和Folders使用详细介绍
  8. asp.net文件上传进度条控件(破解版~没有时间限制) 多项自定义
  9. mysql时区设置gmt_将MySQL数据库时区设置为GMT
  10. 485串口测试工具软件下载_串口调试助手详细讲解(结合实操),通讯问题不再是问题...