Why are there Horizontal Stripes on my Palettized Image?

44 Views Asked by At

I am trying to make a palettized version of my height image data (using Python/Matplotlib) and for some reason...it is giving me quite weird horizontal lines which I know are not actually present in the dataset.

Both images (mine and the "better" one).

Is this something weird with how Matplotlib normalizes the data? I just don't quite understand how this could happen, so I am at a loss for where to start. I have provided my code below (sorry if there is a typo, I slightly changed it to make sense outside of the code).

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# file location of the raw data
fileloc = r'C:\Users\...\raw_height_profile.csv'

# generate height profile map
palettized_image = getheightprofile(fileloc)

def getheightprofile(fileloc, color_palette='jet'):

    # read data from file
    data = pd.read_csv(fileloc, skiprows=0)

    # generate colormap (I'm using the jet colormap rn)
    colormap = plt.get_cmap(color_palette)

    # normalize the height data to the range [0, 1]
    norm = (data - np.min(data)) / (np.max(data) - np.min(data))

    # convert the height data to RGB values using the palette
    palettized_data = (colormap(norm)*255).astype(np.uint8)

    # save the file as a png (to check quality)
    saveloc = r'C:\Users\...\palletized_height_profile.png'
    plt.imsave(saveloc, palettized_data)

    # return the nice numbers for later analysis
    return palettized_data

But instead of returning the nice image that I think I should get, it returns a super weird image with lines across it. note: I know these images aren't quite the same palettization, but I think you can understand the issue.

Does anyone understand how, why, etc.? I have also attached a link to the dataset, because maybe that is helpful...but I am quite sure there is nothing wrong with the data.

0

There are 0 best solutions below