Precessing tiff-files via tifffile.

1. tiff格式图像

标签图像文件格式(Tag Image File Format,TIFF)是图像处理中常用的格式之一。其图像格式很复杂,但由于它对图像信息的存放灵活多变,可以支持很多色彩系统,而且独立于操作系统,因此得到了广泛应用。在各种地理信息系统、摄影测量与遥感等应用中,要求图像具有地理编码信息,例如图像所在的坐标系、比例尺、图像上点的坐标、经纬度、长度单位及角度单位等等。

遥感图像通常尺寸较大(分辨率较高),通道数较多(用于存储不同的波段信息),携带经纬度等地理信息,通常用tiff格式存储。

tiff格式的遥感图像通常包含大于$3$的通道,分别存储不同波段(可见光波段、红外波段等)和透明度信息。并且常用$8$位($0$~$255$)或$16$位($0$~$65535$)精度存储。

2. tifffile库

tifffile库是基于numpy库的tiff格式文件处理库,可实现:

  1. numpy数组存储为tiff格式文件;
  2. 读取tiff格式文件。

3. 将tiff格式图像转换成png格式

import cv2
import numpy as np
import tifffile as tif

def tif2png(imgpath):
    img = tif.imread(imgpath)# 读取图片 imgpath为图片所在位置
    
    # 将图片数据类型转换为无符号8位
    img = img/img.max()
    img =img*255-0.001 # 减去0.001防止变成负整型
    img =img.astype(np.uint8)
    print(img.shape) # 显示图片大小和通道数  通道数可能大于3
    b = img[:, :, 0] # 蓝通道
    g = img[:, :, 1] # 绿通道
    r = img[:, :, 2] # 红通道
    nir = img[:, :, 3] # 近红外通道
    
    # 通道拼接
    rgb=  np.dstack([r,g,b])
    
    # 存储png格式图像
    cv2.imwrite("image.png", rgb)
    '''
    cv2.waitKey(0) # 窗口等待响应
    cv2.destroyAllWindows() # 消除窗口
    '''
    
if __name__ == "__main__":
    tif2png('image.tif')