前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >医学图像处理教程(三)——医学图像增强算法

医学图像处理教程(三)——医学图像增强算法

作者头像
医学处理分析专家
发布2020-06-29 15:00:32
2.9K0
发布2020-06-29 15:00:32
举报
文章被收录于专栏:最新医学影像技术

今天将给大家分享医学图像常见图像增强算法。

1、对数变换

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

代码语言:javascript
复制
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次幂变换。

代码语言:javascript
复制
# 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()函数来计算数据的指数变换,为了防止出现计算值溢出错误,因此这里我们使用图像减去图像均值再除以图像方差来计算图像指数变换结果。

代码语言:javascript
复制
# 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用来控制直方图统计时的区域大小。

代码语言:javascript
复制
# 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。

代码语言:javascript
复制
# laplace sharpen
sitk_laplaciansharp = sitk.LaplacianSharpeningImageFilter()
sitk_laplaciansharp.UseImageSpacingOn()
sitk_laplaciansharp = sitk_laplaciansharp.Execute(image)
sitk.WriteImage(sitk_laplaciansharp, "sitk_laplaciansharp.mha")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 最新医学影像技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档