Документация Engee

volume

Страница в процессе перевода.

volume(volume_data)
volume(x, y, z, volume_data)

Строит график объема с необязательными физическими размерами x, y, z. Доступные алгоритмы:

  • :iso => IsoValue

  • :absorption => Absorption

  • :mip => MaximumIntensityProjection

  • :absorptionrgba => AbsorptionRGBA

  • :additive => AdditiveRGBA

  • :indexedabsorption => IndexedAbsorptionRGBA

Тип графика

Псевдоним типа графика для функции volume — Volume.

Примеры

Алгоритмы на основе значений (:absorption, :mip, :iso, counter)

Алгоритмы, основанные на значениях, выполняют выборку цветовой карты, используя значения из данных объема.

using GLMakie
r = LinRange(-1, 1, 100)
cube = [(x.^2 + y.^2 + z.^2) for x = r, y = r, z = r]
contour(cube, alpha=0.5)
2a2d4c9

cube_with_holes = cube .* (cube .> 1.4)
volume(cube_with_holes, algorithm = :iso, isorange = 0.05, isovalue = 1.7)
6a19753

using GLMakie
using NIfTI
brain = niread(Makie.assetpath("brain.nii.gz")).raw
mini, maxi = extrema(brain)
normed = Float32.((brain .- mini) ./ (maxi - mini))

fig = Figure(size=(1000, 450))
# Создадим цветовую карту, первое значение которой будет прозрачным.
colormap = to_colormap(:plasma)
colormap[1] = RGBAf(0,0,0,0)
volume(fig[1, 1], normed, algorithm = :absorption, absorption=4f0, colormap=colormap, axis=(type=Axis3, title = "Absorption"))
volume(fig[1, 2], normed, algorithm = :mip, colormap=colormap, axis=(type=Axis3, title="Maximum Intensity Projection"))
fig
28f67fd

Алгоритмы RGB(A) (:absorptionrgba, :additive)

Алгоритмы RGBA выполняют выборку цветов непосредственно из данных объема. Если данные содержат менее 4 измерений, оставшиеся измерения заполняются нулями для зеленого и синего каналов и единицами для альфа-канала.

using GLMakie
using LinearAlgebra
# Поле значения расстояния со знаком для цепочки Link (генерирует значения расстояния от
# поверхности фигуры, отрицательные значения находятся внутри)
# на основе https://iquilezles.org/articles/distfunctions/ "Link"
# положение выборки (x,y,z), длина между концами, радиус фигуры, радиус трубы
function sdf(x, y, z, le, r1, r2)
    x, y, z = Vec3f(x, max(abs(y) - le, 0.0), z);
    return norm(Vec2f(sqrt(x*x + y*y) - r1, z)) - r2;
end

r = range(-5, 5, length=31)
data = map([(x,y,z) for x in r, y in r, z in r]) do (x,y,z)
    r = max(-sdf(x,y,z, 1.5, 2, 1), 0)
    g = max(-sdf(y,z,x, 1.5, 2, 1), 0)
    b = max(-sdf(z,x,y, 1.5, 2, 1), 0)
    # RGBAf(1+r, 1+g, 1+b, max(r, g, b) - 0.1)
    RGBAf(r, g, b, max(r, g, b))
end

f = Figure(backgroundcolor = :black, size = (700, 400))
volume(f[1, 1], data, algorithm = :absorptionrgba, absorption = 20)
volume(f[1, 2], data, algorithm = :additive)
f
3e8ae86

Алгоритмы индексирования (:indexedabsorption)

Алгоритмы индексирования интерпретируют значение, считанное из данных объема, как индекс на цветовой карте. То есть фактически считывается idx = round(Int, get(data, sample_pos)) и используется colormap[idx] в качестве цвета выборки. Обратите внимание, что здесь по-прежнему можно использовать данные с плавающей запятой, но без interpolate = false они будут интерполированы.

using GLMakie
r = -5:5
data = map([(x,y,z) for x in r, y in r, z in r]) do (x,y,z)
    1 + min(abs(x), abs(y), abs(z))
end
colormap = [:red, :transparent, :transparent, RGBAf(0,1,0,0.5), :transparent, :blue]
volume(data, algorithm = :indexedabsorption, colormap = colormap,
    interpolate = false, absorption = 5)
a1b93a3

Атрибуты

absorption

Значение по умолчанию: 1.0

Коэффициент поглощения для алгоритма = :absorbtion, :absorptionrgba и :indexedabsorption. Это изменяет количество света, поглощаемого каждым вокселом.

algorithm

Значение по умолчанию: :mip

Задает используемый алгоритм определения объема. Доступны следующие алгоритмы:

  • :iso: Показывает поверхность с равнозначным значением в пределах заданных данных с плавающей точкой. Для этого в окончательный цвет пикселя включаются только выборки в пределах isovalue - isorange .. isovalue + isorange .

  • :absorption: Цвет накапливается на основе значений с плавающей точкой, выбранных из данных об объеме. На каждом шаге луча (начиная с передней части) из данных об объеме выбирается значение, которое затем используется для создания цветовой карты. Полученный цвет взвешивается по размеру шага луча и смешивается с ранее накопленным цветом. Вес каждого шага можно регулировать с помощью мультипликативного коэффициента. absorption атрибут.

  • :mip: Показывает проекцию максимальной интенсивности данных с плавающей точкой. Цвет пикселя определяется по наибольшему значению, выбранному из соответствующего луча.

  • :absorptionrgba: Этот алгоритм соответствует : поглощение, но цвета выбираются непосредственно из данных об объеме RGBA. Для каждого шага луча из данных выбирается цвет, взвешивается по размеру шага луча и смешивается с ранее накопленным цветом. Также учитывается absorption.

  • :additive: Накапливает цвета, используя accumulated_color = 1 - (1 - accumulated_color) * (1 - sampled_color) где sampled_color представляет собой выборку данных об объеме на текущем шаге луча.

  • :indexedabsorption: Этот алгоритм действует так же, как и :поглощение, но интерпретирует данные об объеме как индексы. Они используются в качестве прямых индексов для цветовой карты. Также учитывает absorption.

alpha

Значение по умолчанию: 1.0

Альфа-значение цветовой карты или атрибута color. Несколько букв, как в plot(alpha=0.2, color=(:red, 0.5), будут умножены.

backlight

Значение по умолчанию: 0.0

Устанавливает вес для расчета вторичного освещения с использованием перевернутых нормалей.

clip_planes

Значение по умолчанию: automatic

Плоскости обрезки позволяют выполнять обрезку в трехмерном пространстве. Вы можете задать вектор длиной до 8 Plane3f Здесь вы можете задать плоскости, за которыми участки будут обрезаны (т.е. станут невидимыми). По умолчанию плоскости обрезки наследуются от родительского участка или сцены. Вы можете удалить родительский элемент clip_planes передав Plane3f[].

colormap

Значение по умолчанию: @inherit colormap :viridis

Устанавливает цветовую схему, которая выбирается для числовых значений. colors. PlotUtils.cgrad(...), Makie.Reverse(any_colormap) также можно использовать любой символ из ColorBrewer или PlotUtils. Чтобы увидеть все доступные цветовые градиенты, вы можете позвонить по телефону Makie.available_gradients().

colorrange

Значение по умолчанию: automatic

Значения, представляющие начальную и конечную точки colormap.

colorscale

Значение по умолчанию: identity

Функция преобразования цвета. Может быть любой функцией, но хорошо работает только вместе с Colorbar для identity, log, log2, log10, sqrt, logit, Makie.pseudolog10 и Makie.Symlog10.

depth_shift

Значение по умолчанию: 0.0

настраивает значение глубины участка после всех других преобразований, т.е. в пространстве клипа, где 0 <= depth <= 1. This only applies to GLMakie and WGLMakie and can be used to adjust render order (like a tunable overdraw).

diffuse

Значение по умолчанию: 1.0

Определяет, насколько сильно красный, зеленый и синий каналы реагируют на рассеянный (рассеянный) свет.

enable_depth

Значение по умолчанию: true

Включает запись по глубине для :iso, чтобы объем корректно перекрывал другие объекты.

fxaa

Значение по умолчанию: true

настраивает, будет ли отображаться график с помощью fxaa (сглаживание, только для GLMakie).

highclip

Значение по умолчанию: automatic

Цвет для любого значения, превышающего цветовой диапазон.

inspectable

Значение по умолчанию: @inherit inspectable

Определяет, должен ли этот сюжет отображаться пользователем DataInspector. Значение по умолчанию зависит от темы родительской сцены.

inspector_clear

Значение по умолчанию: automatic

Устанавливает функцию обратного вызова (inspector, plot) -> ...</span> для очистки пользовательских индикаторов в DataInspector.

inspector_hover

Значение по умолчанию: automatic

Устанавливает функцию обратного вызова (inspector, plot, index) -> ... которая заменяет функцию по умолчанию show_data методы.

inspector_label

Значение по умолчанию: automatic

Устанавливает функцию обратного вызова (plot, index, position) -> string , которая заменяет метку по умолчанию, сгенерированную DataInspector.

interpolate

Значение по умолчанию: true

Определяет, следует ли производить выборку данных об объеме с помощью интерполяции.

isorange

Значение по умолчанию: 0.05

Устанавливает максимально допустимое расстояние от значения isovalue для алгоритма :iso. accepted = isovalue - isorange < value < isovalue + isorange

isovalue

Значение по умолчанию: 0.5

Устанавливает целевое значение для алгоритма :iso. accepted = isovalue - isorange < value < isovalue + isorange

lowclip

Значение по умолчанию: automatic

Цвет для любого значения ниже цветового диапазона.

material

Значение по умолчанию: nothing

Атрибут RPRMakie используется только для установки сложных материалов RadeonProRender. Предупреждаю, что способ установки материала RPR может измениться, и другие серверные системы будут игнорировать этот атрибут

model

Значение по умолчанию: automatic

Задает матрицу модели для построения графика. Это отменяет корректировки, сделанные с помощью translate!, rotate! и scale!.

nan_color

Значение по умолчанию: :transparent

Цвет для значений NaN.

overdraw

Значение по умолчанию: false

Определяет, будет ли график отображаться поверх других графиков. В частности, это означает игнорирование проверок глубины в GL-интерфейсах

shading

Значение по умолчанию: automatic

Задает используемый алгоритм освещения. Возможны следующие варианты: NoShading (без освещения), FastShading (Окружающий свет + точечный свет) или MultiLightShading (Несколько источников света, только GLMakie). Обратите внимание, что это не влияет на RPRMakie.

shininess

Значение по умолчанию: 32.0

Определяет, насколько четким будет отражение.

space

Значение по умолчанию: :data

задает область преобразования для прямоугольника, охватывающего участок. Видеть Makie.spaces() для получения возможных исходных данных.

specular

Значение по умолчанию: 0.2

Определяет, насколько сильно объект отражает свет в красном, зеленом и синем каналах.

ssao

Значение по умолчанию: false

Определяет, будет ли график отображаться с помощью ssao (screen space ambient occlusion). Обратите внимание, что это имеет смысл только для 3D-графиков и применимо только к fxaa = true.

transformation

Значение по умолчанию: :automatic

Документация недоступна.

transparency

Значение по умолчанию: false

Настраивает прозрачность графика. В GLMakie transparency = true в результате используется прозрачность, не зависящая от порядка.

visible

Значение по умолчанию: true

Определяет, будет ли отображаться график или нет.