Source code for fluidimage.data_objects.display_pre

"""Display pairs of images (:mod:`fluidimage.data_objects.display_pre`)
=======================================================================

.. autoclass:: DisplayPreProc
   :members:
   :private-members:

"""

import matplotlib.pyplot as plt
import numpy as np


[docs]class DisplayPreProc: """Display pairs of images""" def __init__(self, im0, im1, im0p, im1p, pourcent_histo=99, hist=False): fig = plt.figure() fig.event_handler = self ax1 = plt.subplot(121) ax2 = plt.subplot(122) self.fig = fig self.ax1 = ax1 self.ax2 = ax2 p0 = np.percentile( np.reshape(im0, (1, np.prod(im0.shape))).transpose(), pourcent_histo, ) p1 = np.percentile( np.reshape(im1, (1, np.prod(im1.shape))).transpose(), pourcent_histo, ) p0p = np.percentile( np.reshape(im0p, (1, np.prod(im0p.shape))).transpose(), pourcent_histo, ) p1p = np.percentile( np.reshape(im1p, (1, np.prod(im1p.shape))).transpose(), pourcent_histo, ) im0[im0 > p0] = p0 im1[im1 > p1] = p1 im0p[im0p > p0p] = p0p im1p[im1p > p1p] = p1p self.image0 = ax1.imshow( im0, interpolation="nearest", cmap=plt.cm.gray, origin="upper", extent=[0, im0.shape[1], im0.shape[0], 0], ) self.image1 = ax1.imshow( im1, interpolation="nearest", cmap=plt.cm.gray, origin="upper", extent=[0, im0.shape[1], im0.shape[0], 0], ) self.image1.set_visible(False) self.image0p = ax2.imshow( im0p, interpolation="nearest", cmap=plt.cm.gray, origin="upper", extent=[0, im0p.shape[1], im0p.shape[0], 0], ) self.image1p = ax2.imshow( im1p, interpolation="nearest", cmap=plt.cm.gray, origin="upper", extent=[0, im0p.shape[1], im0p.shape[0], 0], ) self.image1p.set_visible(False) if hist: fig2 = plt.figure() ax3 = plt.subplot(121) ax4 = plt.subplot(122) hist0 = np.histogram( np.reshape(im0, (1, np.prod(im0.shape))).transpose(), bins="fd" ) hist1 = np.histogram( np.reshape(im1, (1, np.prod(im1.shape))).transpose(), bins="fd" ) hist0p = np.histogram( np.reshape(im0p, (1, np.prod(im0p.shape))).transpose(), bins="fd", ) hist1p = np.histogram( np.reshape(im1p, (1, np.prod(im1p.shape))).transpose(), bins="fd", ) incr = 1 ax3.plot(hist0[1][0:-1:incr], hist0[0][0::incr], "k+") ax3.plot(hist0p[1][0:-1:incr], hist0p[0][0::incr], "r+") ax4.plot(hist1[1][0:-1:incr], hist1[0][0::incr], "k+") ax4.plot(hist1p[1][0:-1:incr], hist1p[0][0::incr], "r+") ax3.set_xlim(-10, max([p0, p0p])) ax4.set_xlim(-10, max([p1, p1p])) ax3.set_ylim(0, max(hist0[0])) ax4.set_ylim(0, max(hist1[0])) plt.show() (l,) = ax1.plot(0, 0, "oy") l.set_visible(False) ax1.set_title("im 0 (alt+s to switch)") ax1.set_xlim(0, im0.shape[1]) ax1.set_ylim(im0.shape[0], 0) ax1.set_xlabel("pixels") ax1.set_ylabel("pixels") ax1.set_xlim(0, im0.shape[1]) ax1.set_ylim(im0.shape[0], 0) ax1.set_xlabel("pixels") ax1.set_ylabel("pixels") (l,) = ax2.plot(0, 0, "oy") l.set_visible(False) ax2.set_title("im 0p (alt+s to switch)") ax2.set_xlim(0, im0p.shape[1]) ax2.set_ylim(im0p.shape[0], 0) ax2.set_xlabel("pixels") ax2.set_ylabel("pixels") self.ind = 0 fig.canvas.mpl_connect("key_press_event", self.onclick) print("press alt+h for help") plt.show() def onclick(self, event): if event.key == "alt+s": self.switch() def switch(self): self.image0.set_visible(not self.image0.get_visible()) self.image1.set_visible(not self.image1.get_visible()) self.ax1.set_title( "im {} (alt+s to switch)".format(int(self.image1.get_visible())) ) self.fig.canvas.draw() self.image0p.set_visible(not self.image0p.get_visible()) self.image1p.set_visible(not self.image1p.get_visible()) self.ax2.set_title( "im {}p (alt+s to switch)".format(int(self.image1p.get_visible())) ) self.fig.canvas.draw()