Python: бинаризация последовательных 2D-изображений TIF в 3D-изображение, которое можно вращать перетаскиванием.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python: бинаризация последовательных 2D-изображений TIF в 3D-изображение, которое можно вращать перетаскиванием.

Сообщение Anonymous »

Еще несколько лет назад 2D-изображение КТ (черно-белое) можно было объединить с помощью приведенного ниже кода.

Код: Выделить всё

import imageio.v2 as imageio
import numpy as np
import matplotlib.pyplot as plt
import pyvista as pv

all = np.stack([
imageio.imread("dataset_{:02d}.tif".format(n)) > 100
for n in range(30) ], axis=0)

image3d = pv.Plotter(notebook=False)
image3d.add_mesh(...)
image3d.show([pv.VoxelData(pict).threshold("value", (0.5, 1.0))], wait=False)

pv.show([pv.VoxelData(pict).threshold("value", (0.5, 1.0))], wait=False)
Это дало нам 3D-изображение, и мы могли свободно вращаться с помощью перетаскивания. Однако недавно появилась ошибка «NotImplementedError: невозможно обернуть () в тип pyvista». «AttributeError: у модуля «pyvista» нет атрибута «UniformGrid». Я не знаю, что мне делать...
Поскольку я не хочу возвращаться к прежней версии, я хочу сделать то же самое с новейшей версией Python. Вы знаете, как это сделать? Мне жаль, что я не смог найти в Интернете образцы последовательности изображений в формате tif, которые представляют собой фрагменты трехмерного изображения. (Я обнаружил, что большинство загружаемых рисунков представляют собой слишком много файлов.)
Я также попробовал другой код, используя пакет homcloud:
импортировать pyvista как pv
импортировать homcloud.pyvistahelper как pvhelper

pv.set_jupyter_backend('trame')

Код: Выделить всё

pl = pv.Plotter()

pl.add_mesh(pvhelper.Bitmap3D(pict).threshold(0.4),
show_scalar_bar=False, opacity=0.8)
Но на этот раз ошибка была «AttributeError: у модуля 'pyvista' нет атрибута 'UniformGrid'».
Здесь я попробовал использовать простой код, как ниже, но и это не сработало.

Код: Выделить всё

import numpy as np
import plotly.graph_objects as go

data = np.random.rand(100, 100, 100)
x, y, z = np.indices(data.shape)
values = data.flatten()

mask = values > 0.5
x, y, z = x[mask], y[mask], z[mask]

fig = go.Figure(data=go.Scatter3d(
x=x,
y=y,
z=z,
mode='markers',
marker=dict(size=2, color='blue', opacity=0.5)
))

fig.update_layout(scene=dict(
xaxis_title='X-axis',
yaxis_title='Y-axis',
zaxis_title='Z-axis'
))

fig.show()
Вы можете мне помочь??

Подробнее здесь: https://stackoverflow.com/questions/792 ... -rotate-by
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»