我想更改我的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());
}
}
答案 0 :(得分:0)
如果您实际更改了DICOM属性中的切片厚度,则可能还需要更改图像位置(患者)和切片位置DICOM属性,以保持图像体积一致。
如果您只是尝试基于特定距离移动切片(例如,一次点击= 4 mm而不是2 mm),则跟踪切片的位置而不是切片编号。当位置发生变化时,计算新位置的新切片并更新到该切片。这也将提供更大的灵活性。
如果你真的只想逐步切片,那么为什么不使用nb0 = getSlice()+ 2和nb1 = getSlice()-2?