plot tiff

Python

Adjust the color map range to make the TIFF visualization look better. [dependency] - numpy - matplotlib - pspylib

main 1 file
plot tiff..py
plot_tiff.py 1.7 KB
plot tiff..py 1697 bytes
import os
import numpy as np
import matplotlib.pyplot as plt
from pspylib.tiff.reader import TiffReader
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import NullLocator
from matplotlib.colors import LinearSegmentedColormap


def __auto_palette_range(gray,cmap):
    # 95.44 % 
    vmin = np.mean(gray) - 1.96 * np.std(gray)
    vmax = np.mean(gray) + 1.96 * np.std(gray)
    hist, edges = np.histogram(gray, bins=cmap.N, range=(vmin, vmax))
    boundary_norm = BoundaryNorm(edges, cmap.N)
    return boundary_norm

def plot_tiff(gray, cmap, size:tuple=(8,8)):
    fig = plt.figure(figsize=size, facecolor='white')
    boundary_norm = __auto_palette_range(gray, cmap)
    plt.imshow(gray,cmap=cmap,norm=boundary_norm)
    cbar = plt.colorbar()
    cbar.ax.yaxis.set_minor_locator(NullLocator())
    return fig

if __name__ == "__main__":
    samples_path = r"C:\Park Systems\SmartScan\samples"
    tiff_path = os.path.join(samples_path, "Image", "Cheese.tiff")
    tiff = TiffReader(tiff_path)
    Zdata = tiff.data.scanData.ZData
    header = tiff.data.scanHeader.scanHeader
    dshape = (int(header['height'][0]), int(header['width'][0]))
    tiff_image = np.reshape(Zdata,dshape)
    tiff_image = np.flipud(tiff_image)

    ori_cm = tiff.data.metaData.colorMap['colorMap'][0]
    r = np.array(ori_cm)[:256]
    g = np.array(ori_cm)[256:512]
    b = np.array(ori_cm)[512:768]
    rgb_cm = np.dstack([r,g,b])[0] / 65536
    cmap_name = 'meta_cmap'
    meta_cmap = LinearSegmentedColormap.from_list(cmap_name, rgb_cm,N=128)
    plot_tiff(tiff_image, meta_cmap)
    plt.xlabel('X (pixels)')
    plt.ylabel('Y (pixels)')
    plt.show()
Comments (0)

No comments yet. Be the first to comment!

Snippet Information
Author: jungyu.lee
Language: Python
Created: Oct 23, 2025
Updated: 0 minutes ago
Views: 41
Stars: 1

Links & Files

Additional Files (1):