ECNUACRush / ECNUACRush.github.io

0 stars 0 forks source link

你好同学~ #1

Open lkccu opened 1 year ago

lkccu commented 1 year ago
   你好啊同学,不好意思用这种方法向你提问,我在repo Deepdrr的issue中看到了你的issue,我仔细阅读了你的issue之后还是有一些疑问没有明白。
   首先是你在那儿提到set bits 0-255 to 125-255,不知道具体这一步是怎么操作的。还有就是你在那个issue中最后使用参数material = seg_array解决了你的问题,我也想使用deepdrr生成CT-bone风格的drr图像,不知道你是怎么得到seg_array的,我猜是使用分割后的nifti图像再读入数据得到的seg_array,不知道我的理解对不对。想就这两点请问您一下。我认为在原评论区询问细节的东西可能有些不礼貌,所以就用这样的方式打扰您。请问可以使用邮箱交流吗?
   祝好~
ECNUACRush commented 1 year ago

你好,用imagej可以直接设置图像的动态范围(也就是你说的set 0 -255 to 125 -255),也可以用sitk处理,总之很容易。推荐先用imageJ做,这样可以看一下是不是你要的效果。 第二点你的想法是正确的。

lkccu commented 1 year ago

谢谢,这几天没上GitHub看,我试着做一下,祝您新年快乐!

lkccu commented 1 year ago

你好同学,那一个第二点的material我还是没有弄清楚,想再请教您一下:那个得到的seg_array是否有什么格式的需求呢,我用TotalSegmentator Toolbox得到的vertebrae_T4.nii.gz是一个二值的seg mask,然后我用以下代码做的这样的导入,但是还是不得行,想请问一下您是怎么做的segmentation。谢谢您!

seg_array = nib.load(r'/root/autodl-tmp/deepdrr/segmentations/vertebrae_L4.nii.gz')
#print(seg_array.shape)

seg_array = seg_array.get_fdata()
print(seg_array)
volume = deepdrr.Volume.from_nifti(path,
                                   # use_thresholding = True,
                                   # use_cached = True,
                                   # save_cache = True,
                                   # cache_dir = "/root/autodl-tmp/seg_Res",
                                   # segmentation = True ,
                                    materials=dict(bone=seg_array),
                                  )
ECNUACRush commented 1 year ago

from_nifti这个函数只要把materials实例化就行:materials=dict(bone=seg_array)。 其他参数不要注释,保持原来默认的。 path里放原图,即:path对应原图,materials对应经过3d分割的mask。 这样就可以了。 但其实这一步跟path是无关的,只用mask也能投出来(结合segmentation),具体可以看下代码。

lkccu commented 1 year ago

你好同学,我不知道是不是对这个功能是否有什么误解。我在debug的时候发现如果不用这些material那么volume.data输出的结果是一系列float32的值,使用material那么volume也会变成mask,只有0/1的值。然后投出来的结果就是黑白的图像。请问可以麻烦您可以给我看看您的关于volume的设置的代码吗,拜托您了!

ECNUACRush commented 1 year ago

你说的情况我遇到过,就是没设置好的原因,他这个投影牵扯到了一些物理、光学的知识,这部分代码确实比较凌乱

ECNUACRush commented 1 year ago

` seg_array = (nib.load(bone + file1).get_fdata() > 0.05)

      patient = deepdrr.Volume.from_nifti(raw + file1, materials = dict(bone = seg_array))`

你参考一下把

ECNUACRush commented 1 year ago

有问题的话加我给我发下效果图 q123466188