我怎样才能做这样的细分

How can I do a segmentation like this

this work 中:Montoouro 等人指定了一种分割 OCT 图像的方法,如下所示:

我想做一个类似的分割,但我不知道怎么做。这是我试过的:

# load image 
img = cv2.imread('OCT.jpeg')

# define colors
color1 = (255,0,0)
color2 = (255,128,128)
color3 = (0,92,0)
color4 = (128,192,255)
color5 = (0,164,255)
color6 = (122,167,141)
color7 = (0,255,0)
color8 = (0,0,255)

# build 8 color image of size 256x1 in blocks of 32
lut = np.zeros([1, 256, 3], dtype=np.uint8)
lut[:, 0:32] = color1
lut[:, 32:64] = color2
lut[:, 64:96] = color4
lut[:, 96:128] = color5
lut[:, 128:160] = color6
lut[:, 160:192] = color7
lut[:, 192:256] = color8

# apply lut
result = cv2.LUT(img, lut)

# save result
cv2.imwrite('lut.png', lut)
cv2.imwrite('OCT_colorized.png', result)

我得到了这个结果:

这不是我想要的。我怎样才能重现 Montuoro 等人在他们的工作中所做的事情?

冒着听起来很傻的风险,您可以尝试几个步骤。

首先,尝试调整颜色和分割边界。对于您的硬编码示例,您有蓝色而不是浅蓝色等。此外,您正在以均匀间隔的数字(每 32 个像素值)制作色带,但各种组件的含义决定了不同的色带。例如,color2 与深蓝色混合表明第一个波段太窄。把玩它作为探索数据的一种方式。也许看看直方图,看看会跳出什么。

这可能不会让您看到所显示的漂亮图像。这种分割似乎是通过更多的计算来完成的,而不仅仅是通过像素值。生物学是混乱的。传感器很乱。有一种努力通过强制分割是连续的来清理它。这有时也是错误的来源。

第一部分,使用 NumPy 的 ListedColormap,选择以何种方式显示哪些像素,有时称为颜色映射。第二部分,学习如何分割图像以制作可呈现的水肿,通常 image-segmentation 并且可能需要一些深度学习。

问题中引用的论文解释了一种非常详细的图像分割方法。论文中有解释in this schematic

来自论文:

... the proposed method consists of the following steps: First, image-based features are extracted from the raw OCT data and are used together with manual labels to train a base voxel classifier. The resulting probability map is then used to perform the initial surface segmentation and to extract various context-based features. Second, these features are used in conjunction with the image-based features to train another classifier. Such context-based feature extraction and additional classifier training is then iteratively repeated multiple times in auto-context loop.

如果您正在寻找类似的结果,您应该查看作者实现的内容并重现它。论文中有足够的细节来构建作者创建的内容。

在您的方法中,永远不可能正确分割图像。您可以将您的代码应用于地面实况图像,其中每个实例都有唯一的标签,在这种情况下它会起作用。如果您不想使用深度学习,您可以尝试 multi class ostu thresholding , although this types of computer vision algorithms performance will be poor. If you want manually labelme is prefrable and many tools are available online. For best visualization (to make any table or figue) you can try with deep learning (Link1 Link2) 或手动分割。