Не удается загрузить изображения TIF / Разделить изображение TIF в OpenCV / Scikit-Image / Tifffile - PullRequest
0 голосов
/ 26 октября 2019

В настоящее время я пытаюсь загрузить файл .TIF в python, а затем сохранить его как изображение RGB и NIR.

Это код, который я использую / я пробовал:

%matplotlib notebook

import tifffile as tiff
import cv2
from matplotlib import pyplot as plt
import skimage.io
import numpy as np
import os
def load_images_from_folder(folder):
    images = []
    for filename in os.listdir(folder):
        img = None
        print(filename)
        if filename.endswith('.TIF'):
            img = cv2.imread(os.path.join(folder,filename), -1)
            #img = tiff.imread(os.path.join(folder,filename))
            #img = skimage.io.imread(os.path.join(folder,filename), plugin='tifffile')
        if img is not None:
            images.append(img)
            b,g,r,nir = cv2.split(img)
            image_rgb = np.stack([b,g,r], axis=2)

            nir_normalized = cv2.normalize(nir,None,0,255,cv2.NORM_MINMAX)
            image_rgb_normalized = cv2.normalize(image_rgb,None,0,255,cv2.NORM_MINMAX)

            skimage.io.imsave("satellite_imagery_split/" + filename[:-4] + "_nir_normalized.png", np.array(nir_normalized, dtype = np.uint8 )) 
            skimage.io.imsave("satellite_imagery_split/" + filename[:-4] + "_rgb_normalized.png", np.array(image_rgb_normalized, dtype = np.uint8 ))
            cv2.imwrite("satellite_imagery_split/" + filename[:-4] + "_nir_normalized.png", np.array(nir_normalized, dtype = np.uint8 )) 
            cv2.imwrite("satellite_imagery_split/" + filename[:-4] + "_rgb_normalized.png", np.array(image_rgb_normalized, dtype = np.uint8 ))

    return images

images = load_images_from_folder('satellite_imagery/')

но никакой вариант не работает должным образом. С OpenCV у меня есть странные полосы по всему изображению:

OpenCV RGB image

И с изображением tiff и scikit-изображением, если есть этот странный цветовой эффект:

Tiff and scikit RGB image

Я пробовал разные комбинации с кодом выше, но ничто не дает мне надлежащих результатов. Но что очень странно, так это то, что с некоторыми изображениями (2 из 20) результат получается ожидаемым, поэтому изображения RGB и NIR выглядят правильно, но со всеми остальными я наблюдаю это странное поведение.

Можеткто-то скажет мне, что я делаю неправильно, потому что я открыл все изображения также с помощью Adobe Lightroom, и там все оригинальные четырехканальные изображения выглядят правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...