python - 使用 skimage 和 napari 将 blob_dog 中的 blob 添加到 3D 图像堆栈
问题描述
我正在尝试使用 blob log 或 blog dog 在使用 skimage 的 3D 图像中进行 blob 检测。我使用 napari 和二进制 blob (3D) 图像作为示例(但这不是我稍后将使用的图像,它只是具有清晰的 blob)。但是,我无法将 blob 应用到图像/将其添加到查看器。
Skimage 有一个使用 matplotlib 向图像添加圆圈的 2D 图像示例,但我想用它来识别 3D 图像上的斑点并创建二值图像(本质上是蒙版)或标签。
这就是我所拥有的,但我不确定从这里去哪里:
from skimage.data import binary_blobs as BBlobs
import pandas as pd
import imageio as io
import numpy as np
import napari
from skimage import filters, morphology, measure, exposure, segmentation, restoration, feature
import skimage.io as skio
from scipy import ndimage as ndi
def add_to_viewer(layer_name, name):
viewer.add_image(
layer_name,
name = name,
scale = spacing
)
bblobs = BBlobs(n_dim=3)
add_to_viewer(bblobs, 'image')
blobs = feature.blob_dog(bblobs)
for blob in blobs:
z,y,x,area = blob
任何帮助,将不胜感激。
解决方案
之后你想做什么?你需要blob大小还是只需要位置?答案很大程度上取决于问题。以下是三个答案:
- 只需将 blob 可视化为点:
viewer.add_points(
blobs[:, :-1], size=blobs[:, -1], name='points', scale=spacing
)
- 忽略大小(假设您稍后进行分水岭,这没关系),创建一个标签卷,每个坐标一个标签:
from skimage.util import label_points
labels = label_points(blobs[:, :-1], bblobs.shape)
viewer.add_labels(labels, scale=spacing)
请注意,它label_points
依赖于 scikit-image 的当前主分支(未发布),但您可以同时复制源代码。scikit-image 0.19 应该会在这篇文章发布后不久发布。
- 制作一个标签层并直接使用 napari 的标签层 API在每个点绘制一个 blob,包括 blob 检测的大小:
labels_layer = viewer.add_labels(
np.zeros_like(bblobs, dtype=np.int32), name='blobs', scale=spacing
)
for i, blob in enumerate(blobs, start=1):
labels_layer.selected_label = i
labels_layer.brush_size = blob[-1]
labels_layer.paint(blob[:-1], refresh=False)
labels_layer.refresh()
场景 1 和 3 中的一个小警告是,我认为 blob 大小是“sigma”,这意味着大多数 blob 都在中心的2 sigma 范围内,因此您可能需要将所有大小乘以 2 以获得良好的显示效果.
推荐阅读
- fluentd - 是否可以预先和附加到流利的事件?
- functional-programming - 功能语言“在引擎盖下”
- hadoop - 我可以在本地机器上的 python 上运行 spark 命令到 hadoop 吗?
- node.js - MongoDB非对称返回数据,数组中的第一项完整返回,其余部分省略某些属性?
- react-native - 为什么 react-native 应用程序会立即关闭?
- c# - Unity C# TCP 套接字超时在非本地
- python - ... in a array 是什么意思?
- php - Twilio 可编程聊天:有没有办法在受邀频道上收听 messageAdded 事件?
- node.js - 使用 Helm 在 Kubernetes 上使用 MongoDB 的 Node.js 应用程序
- node.js - mongodb-runner 不工作(响应码 403)