InsightSoftwareConsortium / InsightSoftwareConsortium/itkwidgets

geometris overlay display overextents to the wrong slices

Aperta
#385 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
624
Fork
83
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

hi,
as shown in the gif, the cube geometries overextent to the slices beyond its original range.

ps: notice on y+z plane, it's extented to the direction **larger** than supposed to, while on x plane, it's extented to slices smaller than supposed to.
![itkwidgets](https://user-images.githubusercontent.com/12500132/94143918-0f6ac000-fea3-11ea-9e94-982e8750c524.gif)

minimum code to replicate:
```python
# helper functions
import vtk
def pts_to_cube(pos, radius=2):
"""
covert pos to cube (vtkPolyData) for visulization
"""
# x = array of 8 3-tuples of float representing the vertices of a cube:
pts = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0),
(0.0, 0.0, 1.0), (1.0, 0.0, 1.0), (1.0, 1.0, 1.0), (0.0, 1.0, 1.0)]

pts = [np.array(pt)*radius * 2 + pos - radius for pt in pts]
faces = [(0, 1, 2, 3), (4, 5, 6, 7), (0, 1, 5, 4),
(1, 2, 6, 5), (2, 3, 7, 6), (3, 0, 4, 7)]
return np_to_polydata(pts, faces)

def np_to_polydata(pts, faces):
"""
convert np.points (+ faces) to vtk.polydata
"""
polyData = vtk.vtkPolyData()
numberOfPoints = len(pts)
points = vtk.vtkPoints()
for x, y, z in pts:
points.InsertNextPoint(x, y, z)
polyData.SetPoints(points)

polys = vtk.vtkCellArray()
for indices in faces:
polys.InsertNextCell(len(indices))
for ind in indices:
polys.InsertCellPoint(ind)
polyData.SetPolys(polys)
return polyData

# actual jupyter codes
import numpy as np
from itkwidgets import view

img_size = 32
pts_num = 3
img = np.zeros([img_size]*3)
pts_list = (np.random.random((pts_num, 3))*img_size).astype(int)
img[tuple(pts_list[:, ::-1].T)] = 1
cubes = [pts_to_cube(pts) for pts in pts_list]
view(img, geometries=cubes)
```

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Esegui la riproduzione minima in Python dell’issue con itkwidgets.view, gli helper per la geometria di vtk e l’immagine generata. Ispeziona il comportamento della sovrapposizione della geometria sui piani di sezione x e y+z; è completato quando i cubi rimangono all’interno del loro intervallo di sezione originale e non si estendono nella direzione errata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
jupyter, python
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.