使用 Python 在 Hyperspy 中绘制图像来过滤像素强度

问题描述 投票:0回答:1

我正在使用 HyperSpy 软件使用下面的 python 代码进行图像处理。

我正在尝试绘制如下所示的灰度图像(SI [3]),但在过滤掉不需要的像素值(背景噪声)之后。 因此图像中显示的贝壳的像素强度为 24,400 及以上,而背景 hvae 小于该值。

我想重新绘制图像,使比例尺从 0-24,400 裁剪(图像中仅保留明亮像素,而其余像素设置为 0)。

另一件事是我计划计算这些值为 24,400 及以上的像素的数量。 我怎样才能计算像素数?

import hyperspy.api as hs
import numpy as np
#load the data
SI = hs.load("SI HAADF 0945 230 nm.emd")
#plot the image
SI[3].plot()

输出:

enter image description here

python image-processing data-masking hyperspy
1个回答
1
投票

对于您的第一个问题,这里有一个示例,说明如何使用超间谍信号的

vmin
方法中的
vmax
plot
来指定要显示的强度范围:

import hyperspy.api as hs
import skimage

# Create synthetic data
data = skimage.img_as_float(skimage.data.binary_blobs()) * 100
s = hs.signals.Signal2D(data)
# Add noise
s.add_gaussian_noise(10)

# Display image with specified minimum value
s.plot(vmin=75, vmax=100)

vmin
vmax
也可以采用百分位值,这在可视化多维数据集时特别有用 - 有关更多详细信息,请参阅 API 参考,https://hyperspy.readthedocs.io/en/stable/api/hyperspy ._signals.signal2d.html#hyperspy._signals.signal2d.Signal2D.plot

对于问题的第二部分,您可以简单地执行以下操作来应用阈值(此处为 100),然后求和:

pixel_number = (s.data > 100).sum()

如果你想要更复杂的东西,你可能需要考虑使用 scikit-image 来使用分割,例如:

https://scikit-image.org/docs/stable/user_guide/tutorial_segmentation.html

https://scikit-image.org/docs/stable/auto_examples/segmentation/plot_random_walker_segmentation.html#sphx-glr-auto-examples-segmentation-plot-random-walker-segmentation-py

© www.soinside.com 2019 - 2024. All rights reserved.