Module gonioanalysis.image_tools

Functions

def open_adjusted(fn)

Images can have high glares. This function tries to clip the image (adjust contrast) so that the DPP is clearly visible.

Usually the glare is at one point so this uses the fact.

Classes

class ImageShower (fig, ax)

From cascade training, a generalized image shower

Expand source code
class ImageShower:
    '''
    From  cascade training, a generalized image shower
    '''
    
    def __init__(self, fig, ax):
        
        self.fig = fig
        self.ax = ax
        
        self.fns = None

        self.buttonActions = []
        self.image_brightness = 0
        self.image_maxval = 1
        self.cid = self.fig.canvas.mpl_connect('key_press_event', self.callbackButtonPressed)
        
        self.pupils = -1
        
        self.title = ''

        self.fig.show()


    def callbackButtonPressed(self, event):
        '''
        A callback function connecting to matplotlib's event manager.
        '''
        
        # Navigating between the images
        if event.key == 'z':
            self.image_maxval -= 0.3
            self.updateImage(strong=True)
        
        elif event.key == 'x':
            self.image_maxval += 0.3
            self.updateImage(strong=True)
        
        elif event.key == 'a':
            self.image_brightness += 50
            self.updateImage(strong=True)
        elif event.key == 'c':
            self.image_brightness += -50
            self.updateImage(strong=True)
        
        for button, action in self.buttonActions:
            if event.key == button:
                print(event.key)
                action()


    def setImages(self, image_fns):
        '''
        Set the images that ImageShower shows.
        '''
        self.fns = image_fns
        self.cache = {}

    def setImage(self, i):
        fn = self.fns[i]
        try:
            self.image = self.cache[fn]
        except KeyError:
            self.image = tifffile.imread(fn) 
        
        self.updateImage()
        
    def cacheImage(self, i):
        '''
        Loads image to cache for faster showup. 
        '''
        fn = self.fns[i]
        # Uncomment to take cahcing in use
        #self.cache[fn] = tifffile.imread(fn)

    def setTitle(self, title):
        self.title = title

    def updateImage(self, strong=False):
        capvals = (0, np.mean(self.image) *self.image_maxval)
        self.ax.clear() 
        self.ax.set_title(self.title)
        self.ax.imshow(self.image-self.image_brightness,cmap='gist_gray', interpolation='nearest', vmin=capvals[0], vmax=capvals[1])
        
        if not strong:
            self.fig.canvas.draw()
        else:
            self.fig.show()
    
    def close(self):
        plt.close(self.fig)

Methods

def cacheImage(self, i)

Loads image to cache for faster showup.

def callbackButtonPressed(self, event)

A callback function connecting to matplotlib's event manager.

def close(self)
def setImage(self, i)
def setImages(self, image_fns)

Set the images that ImageShower shows.

def setTitle(self, title)
def updateImage(self, strong=False)