我正在使用 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()
输出:
对于您的第一个问题,这里有一个示例,说明如何使用超间谍信号的
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