mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-21 14:05:14 +02:00
image_show() is now able to use a palette to map quantized images to their original color. This uses PIL (import Image). I also enabled the image to be normalised from 0 to 255 in a more robust way (before this, it was assuming images ranged from 0 to 1).
This commit is contained in:
parent
9fecda46a4
commit
a88eadbb35
1 changed files with 30 additions and 15 deletions
|
|
@ -4,6 +4,7 @@ import GPy
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib as mpl
|
import matplotlib as mpl
|
||||||
import time
|
import time
|
||||||
|
import Image
|
||||||
|
|
||||||
class data_show:
|
class data_show:
|
||||||
"""
|
"""
|
||||||
|
|
@ -191,38 +192,52 @@ class lvm_dimselect(lvm):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class image_show(data_show):
|
class image_show(data_show):
|
||||||
"""Show a data vector as an image."""
|
"""Show a data vector as an image."""
|
||||||
def __init__(self, vals, axes=None, dimensions=(16,16), transpose=False, invert=False, scale=False):
|
def __init__(self, vals, axes=None, dimensions=(16,16), transpose=False, invert=False, scale=False, palette=[], presetMean = 0., presetSTD = -1., selectImage = 0):
|
||||||
data_show.__init__(self, vals, axes)
|
data_show.__init__(self, vals, axes)
|
||||||
self.dimensions = dimensions
|
self.dimensions = dimensions
|
||||||
self.transpose = transpose
|
self.transpose = transpose
|
||||||
self.invert = invert
|
self.invert = invert
|
||||||
self.scale = scale
|
self.scale = scale
|
||||||
self.set_image(vals/255.)
|
self.palette = palette
|
||||||
|
self.presetMean = presetMean
|
||||||
|
self.presetSTD = presetSTD
|
||||||
|
self.selectImage = selectImage # This is used when the y vector contains multiple images concatenated.
|
||||||
|
|
||||||
|
self.set_image(vals)
|
||||||
|
if not self.palette == []: # Can just show the image (self.set_image() took care of setting the palette)
|
||||||
|
self.handle = self.axes.imshow(self.vals, interpolation='nearest')
|
||||||
|
else: # Use a boring gray map.
|
||||||
self.handle = self.axes.imshow(self.vals, cmap=plt.cm.gray, interpolation='nearest')
|
self.handle = self.axes.imshow(self.vals, cmap=plt.cm.gray, interpolation='nearest')
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
def modify(self, vals):
|
def modify(self, vals):
|
||||||
self.set_image(vals/255.)
|
self.set_image(vals)
|
||||||
#self.handle.remove()
|
|
||||||
#self.handle = self.axes.imshow(self.vals)
|
|
||||||
self.handle.set_array(self.vals)
|
self.handle.set_array(self.vals)
|
||||||
#self.axes.figure.canvas.draw()
|
self.axes.figure.canvas.draw() # Teo - original line: plt.show()
|
||||||
plt.show()
|
|
||||||
|
|
||||||
def set_image(self, vals):
|
def set_image(self, vals):
|
||||||
self.vals = np.reshape(vals, self.dimensions, order='F')
|
dim = self.dimensions[0] * self.dimensions[1]
|
||||||
|
self.vals = np.reshape(vals[0,dim*self.selectImage+np.array(range(dim))], self.dimensions, order='F')
|
||||||
if self.transpose:
|
if self.transpose:
|
||||||
self.vals = self.vals.T
|
self.vals = self.vals.T
|
||||||
if not self.scale:
|
if not self.scale:
|
||||||
self.vals = self.vals
|
self.vals = self.vals
|
||||||
#if self.invert:
|
if self.invert:
|
||||||
# self.vals = -self.vals
|
self.vals = -self.vals
|
||||||
|
|
||||||
|
# un-normalizing, for visualisation purposes:
|
||||||
|
if self.presetSTD >= 0: # The Mean is assumed to be in the range (0,255)
|
||||||
|
self.vals = self.vals*self.presetSTD + self.presetMean
|
||||||
|
# Clipping the values:
|
||||||
|
self.vals[self.vals < 0] = 0
|
||||||
|
self.vals[self.vals > 255] = 255
|
||||||
|
else:
|
||||||
|
self.vals = 255*(self.vals - self.vals.min())/(self.vals.max() - self.vals.min())
|
||||||
|
if not self.palette == []: # applying using an image palette (e.g. if the image has been quantized)
|
||||||
|
self.vals = Image.fromarray(self.vals.astype('uint8'))
|
||||||
|
self.vals.putpalette(self.palette) # palette is a list, must be loaded before calling this function
|
||||||
|
|
||||||
|
|
||||||
class mocap_data_show(data_show):
|
class mocap_data_show(data_show):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue