簡體   English   中英

給定一個2D numpy實數數組,如何生成描繪每個數字強度的圖像?

[英]Given a 2D numpy array of real numbers, how to generate an image depicting the intensity of each number?

我有一個2D numpy數組,並希望生成一個圖像,使得對應於具有高值(相對於其他像素)的數字的像素用更強烈的顏色着色。 例如,如果圖像是灰度級的,並且像素具有值0.4849而所有其他像素對應於低於0.001的值,則該像素可能被着色為黑色,或者接近黑色。

這是一個示例圖像,數組為28x28,包含0到1之間的值。

我繪制此圖像的所有操作都運行以下代碼:

import matplotlib.pyplot as plt
im = plt.imshow(myArray, cmap='gray')
plt.show()

在此輸入圖像描述

但是,出於某種原因,這僅在值介於0和1之間時才有效。如果它們處於可能包含負數的某個其他比例上,則圖像沒有多大意義。

您也可以使用不同的色彩映射,如下例所示(請注意我刪除了插值):

happy_array = np.random.randn(28, 28)
im = plt.imshow(happy_array, cmap='seismic', interpolation='none')
cbar = plt.colorbar(im)
plt.show()

在此輸入圖像描述

甚至灰色也會起作用:

happy_array = np.random.randn(28, 28)
im = plt.imshow(happy_array, cmap='gray', interpolation='none')
cbar = plt.colorbar(im)
plt.show()

在此輸入圖像描述

您可以通過將所有內容除以數組的最大值來將數據規范化到范圍(0,1):

 normalized = array / np.amax(a)
 plt.imshow(normalized)

如果數組包含負值,則有兩個邏輯選擇。 繪制幅度:

 mag = np.fabs(array)
 normalized = mag / np.amax(mag)
 plt.imshow(normalized)

或移動數組,以便一切都是積極的:

positive = array + np.amin(array)
normalized = positive / np.amax(positive)
plt.imshow(normalized)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM