import csv import sys from collections import defaultdict import cv2 #%matplotlib inline import matplotlib.pyplot as plt import numpy as np import shapely.affinity import shapely.wkt # Read and write image data from and to TIFF files. import tifffile as tiff from matplotlib import cm from shapely.geometry import MultiPolygon, Polygon import os os.getcwd() os.chdir("/media/sf_share/linux/workspaces/gdzw-analysis") FILE_2015 = './input/quickbird2015.tif' FILE_2017 = './input/quickbird2017.tif' FILE_cadastral2015 = './input/cadastral2015.tif' FILE_tinysample = './input/tinysample.tif' #read images,return numpy array. im_2015 = tiff.imread(FILE_2015).transpose([1, 2, 0]) im_2017 = tiff.imread(FILE_2017).transpose([1, 2, 0]) im_tiny = tiff.imread(FILE_tinysample) im_cada = tiff.imread(FILE_cadastral2015) im_2015.shape # (5106, 15106, 4) im_tiny.shape # (5106, 15106, 3) im_cada.shape # (5106, 15106) def scale_percentile(matrix): w, h, d = matrix.shape matrix = np.reshape(matrix, [w * h, d]).astype(np.float64) # Get 2nd and 98th percentile mins = np.percentile(matrix, 1, axis=0) maxs = np.percentile(matrix, 99, axis=0) - mins matrix = (matrix - mins[None, :]) / maxs[None, :] matrix = np.reshape(matrix, [w, h, d]) matrix = matrix.clip(0, 1) return matrix fig, axes = plt.subplots(ncols=2, nrows=1, figsize=(16, 6)) p1 = plt.subplot(121) i1 = p1.imshow(scale_percentile(im_2015[100:1000, 100:1000, :3])) plt.colorbar(i1) p2 = plt.subplot(122) i2 = p2.imshow(im_2015[100:1000, 100:1000, 3]) plt.colorbar(i2) plt.show()