У меня есть стек черно-белых изображений, который я храню в своем коде на C++ в виде 3D-вектора, содержащего 0 и 1. Я хочу преобразовать этот 3D-вектор в неструктурированную сетку vtk, причем каждый воксел является ортогональным элементом. Есть ли библиотека, которая может это сделатьПреобразование 3D-массива (вектор) в vtk неструктурированной сетки
1
A
ответ
0
Можно создать неструктурированные сетки с vtk
, имеющими воксели в качестве элементарных ячеек. Проверьте это document, в котором приведены сведения о других доступных типах ячеек. Чтобы создать такую сетку, вы должны проанализировать содержимое вашего вектора и создать каждый воксель, а затем добавить его в сетку, как это сделано в следующем коде на языке python (теперь нет возможности для тестирования C++, но синтаксис легко переносится):
import vtk
voxelPoints = vtk.vtkPoints()
voxelPoints.SetNumberOfPoints(8)
voxelPoints.InsertPoint(0, 0, 0, 0)
voxelPoints.InsertPoint(1, 1, 0, 0)
voxelPoints.InsertPoint(2, 0, 1, 0)
voxelPoints.InsertPoint(3, 1, 1, 0)
voxelPoints.InsertPoint(4, 0, 0, 1)
voxelPoints.InsertPoint(5, 1, 0, 1)
voxelPoints.InsertPoint(6, 0, 1, 1)
voxelPoints.InsertPoint(7, 1, 1, 1)
aVoxel = vtk.vtkVoxel()
aVoxel.GetPointIds().SetId(0, 0)
aVoxel.GetPointIds().SetId(1, 1)
aVoxel.GetPointIds().SetId(2, 2)
aVoxel.GetPointIds().SetId(3, 3)
aVoxel.GetPointIds().SetId(4, 4)
aVoxel.GetPointIds().SetId(5, 5)
aVoxel.GetPointIds().SetId(6, 6)
aVoxel.GetPointIds().SetId(7, 7)
aVoxelGrid = vtk.vtkUnstructuredGrid()
aVoxelGrid.InsertNextCell(aVoxel.GetCellType(), aVoxel.GetPointIds())
aVoxelGrid.SetPoints(voxelPoints)
aVoxelMapper = vtk.vtkDataSetMapper()
aVoxelMapper.SetInputData(aVoxelGrid)
aVoxelActor = vtk.vtkActor()
aVoxelActor.SetMapper(aVoxelMapper)
aVoxelActor.GetProperty().SetDiffuseColor(1, 0, 0)
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren.AddActor(aVoxelActor)
# Render the scene and start interaction.
iren.Initialize()
renWin.Render()
iren.Start()
Смежные вопросы
- 1. Предотвращение вращения 2D неструктурированной сетки в VTK
- 2. Большие сетки в VTK
- 3. Преобразование VTK в растровое изображение (Ruby или Python)
- 4. Преобразование VTK в DICOM
- 5. Как визуализировать данные из неструктурированной сетки в R?
- 6. Цвет a vtk Неструктурированная сетка, лицом к лицу
- 7. Как вычислить объем неструктурированной сетки с помощью TVTK и Python?
- 8. VTK: найти диаметр ограничивающей сферы сетки
- 9. Обработка естественного языка - преобразование неструктурированной библиографии в структурированные метаданные
- 10. Преобразование в const-вектор
- 11. Преобразование матрицы в вектор
- 12. Преобразование матрицы в вектор
- 13. Преобразование вектор строки в пользовательский вектор объекта
- 14. Формат неструктурированной строки
- 15. Delphi2007 + преобразование сетки сетки TWWDB
- 16. Создать вектор сетки с Gtkmm
- 17. Преобразование изображения DICOM с помощью VTK
- 18. VTK: Извлечение данных соты из неструктурированных сетей vtu в C++
- 19. Преобразование угла в вектор NetLogo
- 20. Преобразование итератора Scala в вектор
- 21. Mahout - преобразование текста в вектор
- 22. Преобразование имени вектор в dataframe
- 23. Преобразование кадра данных в вектор
- 24. Преобразование набора в вектор вектора
- 25. Преобразование матрицы Matlab в вектор
- 26. преобразование матрицы в StD :: вектор
- 27. Преобразование вектор строки в матрицу
- 28. Преобразование временных рядов в вектор
- 29. Преобразование вывода системы в вектор
- 30. Преобразование int в вектор строк
Что вы подразумеваете под «ортогональным элементом»? –
Под кубическим я имею в виду гексаэдрический (HEX_8) тип элемента. Так что во время сетки каждый воксел становится элементом. – Lalit