text: 
  import numpy as np
  import matplotlib.pyplot as plt
  
  #LOAD IMAGE
  name='luna-1.jpeg'
  x=plt.imread(name)
  
  
  #ROTATE BY SWITCHING X AND Y DIMENSIONS
  if(name=="luna-2.jpeg"): 
      plt.imshow(x); plt.show()
      x=np.transpose(x,axes=[1,0,2])
  
  #SHOW IMAGE 
  plt.imshow(x); plt.show()
  
  #QUICK INFO ON IMAGE
  def get_info(image):
      print("------------------------")
      print("IMAGE INFO")
      print("------------------------")
      print("TYPE:",type(image))
      print("SHAPE:",image.shape)
      print("NUMBER OF PIXELS:",image.shape[0]*image.shape[1])
      print("NUMBER OF ENTRIES:",image.size)
      # print("N CHANNELS",image.shape[2])
      print("MIN:", image.min())
      print("MAX:", image.max())
      print("TYPE:",image.dtype)
      print("pixel-1 :", image[0,0])
      # print("image[0:3].shape:", image[0:3].shape)
  
  get_info(x)
  
  #CROP
  plt.imshow(x[0:int(0.45*x.shape[0]),:]); plt.show()
  plt.imshow(x[:,0:int(0.45*x.shape[0])]); plt.show()
  
  #SURFACE PLOT
  def surface_plot(image):
      # create the x and y coordinate arrays (here we just use pixel indices)
      xx, yy = np.mgrid[0:image.shape[0], 0:image.shape[1]]
      fig = plt.figure()
      ax = fig.gca(projection='3d') #viridis
      ax.plot_surface(xx, yy, image[:,:] ,rstride=1, cstride=1, cmap=plt.cm.gray,linewidth=0)
      plt.show()
  
  #REDUCE RESOLUTION-1
  from skimage.transform import rescale, resize, downscale_local_mean
  factor=10
  if(name=="luna-2.jpeg"): factor=50
  x = resize(x, (x.shape[0] // factor, x.shape[1] // factor), anti_aliasing=True)
  get_info(x)
  plt.imshow(x); plt.show()
  
  
  #SURFACE PLOT
  from skimage.color import rgb2gray 
  tmp=rgb2gray(x)
  surface_plot(tmp)
  
  