gpt4 book ai didi

python - 即使在向每个元素逐点添加 1 后,numpy 数组中的最小元素仍然为零

转载 作者:行者123 更新时间:2023-12-04 08:26:10 26 4
gpt4 key购买 nike

我正在尝试获取图像的日志以进行进一步处理,图像中的最小像素值为零,因此我试图获取 log(1+image),但即使在向每个元素添加 1 后,最小值为该数组仍显示为 0,因此 np.log 将 log 中遇到的除以零并将值设置为 -inf,这导致我遇到问题。

import numpy as np
import skimage.io as io

image = io.imread('./PET_image.tif')
image_2 = image + 1
print(np.amin(image))
print(np.amin(image_2))
np.log(image)
两个打印 np.amin() 语句都打印出 0。
0
0
error.py:8: RuntimeWarning: divide by zero encountered in log
np.log(image_2)
但是在将 1 添加到数组之后,最小值不应该是 1 吗?我很确定我错过了一些非常愚蠢的事情,但这让我头疼,非常感谢任何帮助。

最佳答案

而不是将 1 添加到图像然后应用 log .你可以做

np.log1p(image)
这基本上与您尝试使用 +1 实现的功能相同。 .
您面临的错误 +1是由数组的类型引起的 dtype=uint8 .将 1 添加到所有像素将使值为 255 的像素变为 0。
或者,您可以仅将 1 添加到值为 0 的像素。
image[np.where(image == 0)] = 1

关于python - 即使在向每个元素逐点添加 1 后,numpy 数组中的最小元素仍然为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65251436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com