Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将numpy矩阵转换为灰度图像_Numpy_Image Processing - Fatal编程技术网

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这取决于你自己。这会有帮助的。