Python:将numpy矩阵转换为灰度图像
我想将带有Python:将numpy矩阵转换为灰度图像,numpy,image-processing,Numpy,Image Processing,我想将带有np.float类型的正和负值的numpy矩阵转换为带有[0255]像素的灰度图像。我想尽快做到这一点 现在我正在做以下工作: import numpy as np n = 1000 I = np.random.randn(n,n) I_min = np.min(I) I = I + np.abs(I_min) I_max = np.max(I) I = 255 * (I / I_max) I = I.astype(np.uint8) 我希望这是正确的!?有没有更快的方法?有什么可以
np.float
类型的正和负值的numpy
矩阵转换为带有[0255]
像素的灰度图像。我想尽快做到这一点
现在我正在做以下工作:
import numpy as np
n = 1000
I = np.random.randn(n,n)
I_min = np.min(I)
I = I + np.abs(I_min)
I_max = np.max(I)
I = 255 * (I / I_max)
I = I.astype(np.uint8)
我希望这是正确的!?有没有更快的方法?有什么可以改进的吗?您可以用较少的行数来改进
min_ = np.min(I)
max_ = np.max(I)
GI = (255 * (I-min_) / (max_-min_)).astype(np.uint8)
当I_min为正时,您的代码不起作用。我认为,
I=I+np.abs(I_min)
应该是I=I-I_min
。你想乘以255.999而不是255,否则255在输出中的代表性将不足。很好!我做了完全相同的操作,但发现执行np.min()
需要485微秒,然后执行np.max()
,就像您所做的那样,但是在一个单独的线程上并行执行np.min()
只需要380微秒,而主线程执行np.max()
。我没有尝试将数学的最后一行分割成多个线程。。。然而@MarkSetchell没有办法提前知道你的最小值和最大值是多少,这样你就可以完全跳过这一步了?用255.9999来代替@MarkRansom建议的255更合理吗?@Samuel这取决于你自己。这会有帮助的。