首页 > 解决方案 > 如何创建用于显示 Ct 扫描 Makie.jl 的 julia 配色方案

问题描述

我使用 makie.jl 和 slicesNumb 来可视化 PET/CT 扫描,我有衰减值的 3d 数组,并且我使用滑块显示带有更改切片的热图 - 这很好用 我有两个问题

  1. 我不知道如何能够定义自定义颜色图(基本上我需要能够指定所有高于某个阈值的都是黑色,低于白色,并且两者之间的值将具有与衰减值成比例的灰度值)。

2)我希望能够在我的图像(技术热图)上显示另一个我可以控制透明度的图像 - 像素的 alpha 值 - 以显示一些注释/ PET ...

有效但没有这两个功能的代码及其外观

using GLMakie

```@doc
simple display of single image - only in transverse plane
```
function singleCtScanDisplay(arr ::Array{Number, 3}) 
  

  fig = Figure()
  sl_x = Slider(fig[2, 1], range = 1:1:size(arr)[3], startvalue = 40)
  ax = Axis(fig[1, 1])
  hm = heatmap!(ax, lift(idx-> arr[:,:, floor(idx)], sl_x.value) ,colormap = :grays)
  Colorbar(fig[1, 2], hm)

  
  fig

end

在此处输入图像描述

感谢帮助 !

标签: plotjuliamedical-imaging

解决方案


您可以使用Colorsand ColorSchemeTools,但您需要根据您的阈值添加方案的顶部和底部。

using Colors, ColorSchemeTools

truemin = 0
truemax = 600
max_shown_black = 20
min_shown_white = 500

data = rand(truemin:truemax, (500, 500, 20))

grayscheme =  [fill(colorant"black", max_shown_black - truemin + 1);
               collect(make_colorscheme(identity, identity, identity,
                   length = min_shown_white - max_shown_black - 1));
               fill(colorant"white", truemax - min_shown_white + 1)]

 

为了控制 alpha,我会添加一个带有 alpha 滑块的弹出窗口。查看一些可分发的 DICOM 工具作为示例。


推荐阅读