main.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import csv
  2. import sys
  3. from collections import defaultdict
  4. import cv2
  5. #%matplotlib inline
  6. import matplotlib.pyplot as plt
  7. import numpy as np
  8. import shapely.affinity
  9. import shapely.wkt
  10. # Read and write image data from and to TIFF files.
  11. import tifffile as tiff
  12. from matplotlib import cm
  13. from shapely.geometry import MultiPolygon, Polygon
  14. import os
  15. os.getcwd()
  16. os.chdir("/media/sf_share/linux/workspaces/gdzw-analysis")
  17. FILE_2015 = './input/quickbird2015.tif'
  18. FILE_2017 = './input/quickbird2017.tif'
  19. FILE_cadastral2015 = './input/cadastral2015.tif'
  20. FILE_tinysample = './input/tinysample.tif'
  21. #read images,return numpy array.
  22. im_2015 = tiff.imread(FILE_2015).transpose([1, 2, 0])
  23. im_2017 = tiff.imread(FILE_2017).transpose([1, 2, 0])
  24. im_tiny = tiff.imread(FILE_tinysample)
  25. im_cada = tiff.imread(FILE_cadastral2015)
  26. im_2015.shape
  27. # (5106, 15106, 4)
  28. im_tiny.shape
  29. # (5106, 15106, 3)
  30. im_cada.shape
  31. # (5106, 15106)
  32. def scale_percentile(matrix):
  33. w, h, d = matrix.shape
  34. matrix = np.reshape(matrix, [w * h, d]).astype(np.float64)
  35. # Get 2nd and 98th percentile
  36. mins = np.percentile(matrix, 1, axis=0)
  37. maxs = np.percentile(matrix, 99, axis=0) - mins
  38. matrix = (matrix - mins[None, :]) / maxs[None, :]
  39. matrix = np.reshape(matrix, [w, h, d])
  40. matrix = matrix.clip(0, 1)
  41. return matrix
  42. fig, axes = plt.subplots(ncols=2, nrows=1, figsize=(16, 6))
  43. p1 = plt.subplot(121)
  44. i1 = p1.imshow(scale_percentile(im_2015[100:1000, 100:1000, :3]))
  45. plt.colorbar(i1)
  46. p2 = plt.subplot(122)
  47. i2 = p2.imshow(im_2015[100:1000, 100:1000, 3])
  48. plt.colorbar(i2)
  49. plt.show()