Open yandszzz opened 4 months ago
您好,可能是图像数据类型导致的,为了方便显示,代码最后进行了uint8化的操作,可能需要您进行一定的修改。其次可以考虑用以下代码对生成的图像进行显示: import numpy as np import imageio.v3 as imageio import cv2 import os
def RSGenerate(image, percent, colorization=True):
# --Use to correct the color
# image should be R G B format with three channels
# percent is the ratio when restore whose range is [0,100]
# colorization is True
m, n, c = image.shape
# print(np.max(image))
image_normalize = image / np.max(image)
image_generate = np.zeros(list(image_normalize.shape))
if colorization:
# Multi-channel Image R,G,B
for i in range(c):
image_slice = image_normalize[:, :, i]
pixelset = np.sort(image_slice.reshape([m * n]))
maximum = pixelset[np.floor(m * n * (1 - percent / 100)).astype(np.int32)]
minimum = pixelset[np.ceil(m * n * percent / 100).astype(np.int32)]
image_generate[:, :, i] = (image_slice - minimum) / (maximum - minimum + 1e-9)
pass
image_generate[np.where(image_generate < 0)] = 0
image_generate[np.where(image_generate > 1)] = 1
image_generate = cv2.normalize(image_generate, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX)
return image_generate.astype(np.uint8)
if name == 'main': if not os.path.exists('./result/rs/lr/'): os.makedirs('./result/rs/lr/') if not os.path.exists('./result/rs/hr/'): os.makedirs('./result/rs/hr/')
file_list = os.listdir('./result/ori/hr/')
N = len(file_list)
for idx in range(N):
image_lr = imageio.imread('./result/ori/lr/'+str(idx)+'.tif') # h w 4
image_hr = imageio.imread('./result/ori/hr/'+str(idx)+'.tif') # H W 4
image_lr_rs = RSGenerate(image_lr[:,:,[2,1,0]],1,1)
image_hr_rs = RSGenerate(image_hr[:,:,[2,1,0]],1,1)
imageio.imwrite('./result/rs/lr/' + str(idx) + '.tif',image_lr_rs)
imageio.imwrite('./result/rs/hr/' + str(idx) + '.tif',image_hr_rs)
您好,非常感谢您提出的先进的全色锐化方法,我有个问题想向您请教,我使用我与您实验设置大小相同的一对图像进行实验,最后得出的实验结果不能在ENVI软件上正常显示,但是我测试了实验结果的部分评价指标是在正常范围内,请问在实验之前除了设置MS与PAN图像的路径之外,还需要调整其他参数吗?感谢您的解答