2015-09-18 16 views
6

Mam tablicę 2D numpy i chcę wygenerować obraz w taki sposób, że piksele odpowiadające liczbom o wysokiej wartości (w stosunku do innych pikseli) są kolorowe i mają bardziej intensywny kolor. Na przykład, jeśli obraz jest w skali szarości, a piksel ma wartość 0,4849, podczas gdy wszystkie inne piksele odpowiadają wartościom poniżej 0,001, to piksel ten będzie prawdopodobnie czarny lub czarny.Biorąc pod uwagę dwuwymiarową tablicę liczb rzeczywistych, jak wygenerować obraz przedstawiający intensywność każdej liczby?

Oto przykład obrazu, tablica jest 28x28 i zawiera wartości pomiędzy 0 a 1.

Wszystko zrobiłem wykreślić ten obraz został uruchomiony następujący kod:

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

enter image description here

Jednak z jakiegoś powodu działa to tylko wtedy, gdy wartości mieszczą się w zakresie od 0 do 1. Jeśli są w innej skali, która może zawierać liczby ujemne, obraz nie ma większego sensu.

Odpowiedz

2

Można użyć różnych colormaps też, jak w poniższym przykładzie (zauważ, że usunąłem interpolacji):

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

enter image description here

I nawet szary jest grane g do pracy:

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

enter image description here

1

można znormalizować dane w przedziale (0,1), dzieląc wszystko przez maksymalną wartość tablicy:

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

Jeśli tablica zawiera wartości ujemne masz dwa wyjścia logiczne. Każda działka wielkości:

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

lub przesunięcie tablicy tak, że wszystko jest pozytywne:

positive = array + np.amin(array) 
normalized = positive/np.amax(positive) 
plt.imshow(normalized) 
Powiązane problemy