vtkImageViewer2 - 更改体积数据切片间距值

时间:2015-12-17 14:14:30

标签: java vtk dicom

我想更改我的dicom体积数据的切片厚度。我正在使用 vtkImageViewer2。

例如,原始数据间距为2,当I时,有200个切片 将切片厚度值更改为4我必须看到100个切片。

Original:  1,2,3,4,5...
Modified:  1,  2,  3...

我的代码:

if ((modif & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {

                etat = 1;
                int nb0 = imageViewer.GetSlice() + 1;
                int nb1 = imageViewer.GetSlice() - 1;
                int totSlice = imageViewer.GetSliceMax() + 1;

                if (p1.y > p2.y) {

                   String Newligne=System.getProperty("line.separator"); 
                    cornerAnnotation.SetText(0,"Slice:" + (nb0 + 1) + "/" + totSlice+Newligne+"Zoom: "+(int)(100)+"%"+Newligne+  "C:" + windowhight + " /  W:" +windowlevel+ Newligne+"Pixel:("+xs+":"+ys+")"+Newligne+reader.GetModality()+"("+reader.GetOutput().GetDimensions()[0]+"*"+reader.GetOutput().GetDimensions()[1]+")"+"-Axial"+Newligne);

                    imageViewer.SetSlice(nb0);
                    scrollBar.setValue(imageViewer.GetSlice());

                } else {

                     String Newligne=System.getProperty("line.separator"); 

                    cornerAnnotation.SetText(0,"Slice:" + (nb1 + 1) + "/" + totSlice+Newligne+"Zoom: "+(int)(100)+"%"+Newligne+  "C:" + windowhight + " /  W:" +windowlevel+ Newligne+"Pixel:("+xs+":"+ys+")"+Newligne+reader.GetModality()+"("+reader.GetOutput().GetDimensions()[0]+"*"+reader.GetOutput().GetDimensions()[1]+")"+"-Axial"+Newligne);

                    imageViewer.SetSlice(nb1);
                    scrollBar.setValue(imageViewer.GetSlice());

                }

            }

1 个答案:

答案 0 :(得分:0)

如果您实际更改了DICOM属性中的切片厚度,则可能还需要更改图像位置(患者)和切片位置DICOM属性,以保持图像体积一致。

如果您只是尝试基于特定距离移动切片(例如,一次点击= 4 mm而不是2 mm),则跟踪切片的位置而不是切片编号。当位置发生变化时,计算新位置的新切片并更新到该切片。这也将提供更大的灵活性。

如果你真的只想逐步切片,那么为什么不使用nb0 = getSlice()+ 2和nb1 = getSlice()-2?