Here is my original code: # Formula: s = c * log(1 + r) c = 255 / np.log(1 + np.max(image)) log_transformed = c * np.log(1 + image.astype(np.float32)) log_transformed = np.clip(log_transformed, 0, 255).astype(np.uint8) This one outputs a black image. This is what I got from ChatGPT: log_transformed = np.log1p(image.astype(np.float32) / 255.0) # log(1 + r), r in [0,1] log_transformed = (log_transformed / np.max(log_transformed)) * 255 log_transformed = log_transformed.astype(np.uint8) It works, but I don't understand how. Also, did it follow the original formula? I don't get it at all. Continue reading...