遥感影像标签文件处理

最近我在做深度学习和遥感结合的工作。遇到了一个小问题 ,遥感影像标签的数值问题。

我拿到手的标签图像,是二分类形式,分为0和1。

这样的形式,不能直接在win10打开。双击图像文件后,如下:

image-20241129110241646

但是可以在QGIS可视化。在QGIS可视化如下:

image-20241129110407484

为什么会这样?大概是因为win自带的图像打开器只支持bit8的图像。即数值范围是0-255。

代码如下 :

#!/usr/bin/env python
# -*- coding: utf-8 -*- 
# @Time : 2024/11/28 22:44 
# @File : label_process.py 
'''
将标签文件数值 1 转为 255
'''
import numpy as np
from PIL import Image
import os
import glob



class LabelProcess(object):
    def __init__(self, in_path, out_path):
        self.in_path = in_path
        self.out_path = out_path
        os.makedirs(out_path, exist_ok=True)
    def process(self) -> None:
        """
        将标签文件数值 1 转为 255
        """

        files = glob.glob(self.in_path+'\*.png')

        for i, file in enumerate(files):
            img = Image.open(file)
            img_array = np.array(img)
            img_array[img_array==1] = 255
            out_img = Image.fromarray(img_array)

            out_img.save(self.out_path+'\\'+os.path.basename(file))
            print("\r数值 1 转为 255: [{0:50s}] {1:.1f}%".format('#' * int(i / len(files) * 50),
                                                            i / len(files) * 100), end="",
                  flush=True)
if __name__ == '__main__':
    in_path = r'D:\labels'
    out_path= r'D:\label'
    A = LabelProcess(in_path, out_path)
    A.process()
    print()

修改后的标签文件如下:

image-20241129111439365

是否要将标签中的1转为 255,是要根据你的训练模型中的代码决定的。

我现在的使用的代码是基于github上的一个开源项目,原作者写好了标签数值格式是0-255。我不想过多修改他的代码。综合考虑下,那只能修改标签文件的数值。