text: #IMPORTANT: THE ABOVE PORTION IS A SCRIPT FROM SOLEM'S VISION BLOG 
  # http://www.janeriksolem.net/2009/06/histogram-equalization-with-python-and.html
  
  import SimpleITK as sitk
  
  import clarity as cl  # I wrote this module for easier operations on data
  import clarity.resources as rs
  import csv,gc  # garbage memory collection :)
  
  import numpy as np
  import matplotlib.pyplot as plt
  import jgraph as ig
  
  
  from ipywidgets import interact, fixed
  from IPython.display import clear_output
  
  def display_images(fixed_image_z, moving_image_z, fixed_npa, moving_npa):
      # Create a figure with two subplots and the specified size.
      plt.subplots(1,2,figsize=(10,8))
  
      # Draw the fixed image in the first subplot.
      plt.subplot(1,2,1)
      plt.imshow(fixed_npa[fixed_image_z,:,:],cmap=plt.cm.Greys_r);
      plt.title('fixed image')
      plt.axis('off')
  
      # Draw the moving image in the second subplot.
      plt.subplot(1,2,2)
      plt.imshow(moving_npa[moving_image_z,:,:],cmap=plt.cm.Greys_r);
      plt.title('moving image')
      plt.axis('off')
  
      plt.show()
  
  # Callback invoked by the IPython interact method for scrolling and modifying the alpha blending
  # of an image stack of two images that occupy the same physical space. 
  def display_images_with_alpha(image_z, alpha, fixed, moving):
      img = (1.0 - alpha)*fixed[:,:,image_z] + alpha*moving[:,:,image_z]
      plt.imshow(sitk.GetArrayFromImage(img),cmap=plt.cm.Greys_r);
      plt.axis('off')
      plt.show()
  
  # Callback invoked when the StartEvent happens, sets up our new data.
  def start_plot():
      global metric_values, multires_iterations
  
      metric_values = []
      multires_iterations = []
  
  # Callback invoked when the EndEvent happens, do cleanup of data and figure.
  def end_plot():
      global metric_values, multires_iterations
  
      del metric_values
      del multires_iterations
      # Close figure, we don't want to get a duplicate of the plot latter on.
      plt.close()
  
  # Callback invoked when the IterationEvent happens, update our data and display new figure.    
  def plot_values(registration_method):
      global metric_values, multires_iterations
  
      metric_values.append(registration_method.GetMetricValue())
      # Clear the output area (wait=True, to reduce flickering), and plot current data
      clear_output(wait=True)
      # Plot the similarity metric values
      plt.plot(metric_values, 'r')
      plt.plot(multires_iterations, [metric_values[index] for index in multires_iterations], 'b*')
      plt.xlabel('Iteration Number',fontsize=12)
      plt.ylabel('Metric Value',fontsize=12)
      plt.show()
  
  # Callback invoked when the sitkMultiResolutionIterationEvent happens, update the index into the 
  # metric_values list. 
  def update_multires_iterations():
      global metric_values, multires_iterations
      multires_iterations.append(len(metric_values))
  
  def histeq(im,nbr_bins=256):
  
     #get image histogram
     imhist,bins = histogram(im.flatten(),nbr_bins,normed=True)
     cdf = imhist.cumsum() #cumulative distribution function
     cdf = 255 * cdf / cdf[-1] #normalize
  
     #use linear interpolation of cdf to find new pixel values
     im2 = interp(im.flatten(),bins[:-1],cdf)
  
     return im2.reshape(im.shape), cdf
  
  from PIL import Image
  from numpy import *
  
  import nibabel as nb
  im = nb.load('../data/raw/Fear199.hdr')
  im = im.get_data()
  img = im[:,:,:,0]
  
  im2,cdf = histeq(img)
  
  print im
  print im2
  
  nb.save(img,'../data/raw/HistFear199.hdr')
  
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  ~                                                                                                           
  