Tiff图像介绍

标签图像文件格式Tagged Image File Format,简写为TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像。

TIFF是一个灵活适应性强的文件格式。通过在文件标头中使用“标签”,它能够在一个文件中处理多幅图像和数据。标签能够标明图像的如图像大小这样的基本几何尺寸,或者定义图像数据是如何排列的,或者是否使用了各种各样的图像压缩选项。例如,TIFF可以包含JPEG和进程长度编码压缩的图像。TIFF文件也可以包含基于矢量的裁剪区域(剪切或者构成主体图像的轮廓)。使用无损格式存储图像的能力使TIFF文件成为图像存档的有效方法。与JPEG不同,TIFF文件可以编辑然后重新存储而不会有压缩损失。其它的一些TIFF文件选项包括多层或者多页。

opencv读取图像

1
2
import cv2
cv2.imread("filename",flags)

对于cv2,imread的关于通道数和位深的flags有五种选择:

IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
IMREAD_COLOR = 1#进行转化为RGB三通道图像,图像深度转为8位
IMREAD_ANYDEPTH = 2#保持图像深度不变,进行转化为灰度图。
IMREAD_ANYCOLOR = 4#若图像通道数小于等于3,则保持原通道数不变;若通道数大于3则只取取前三个通道。图像深度转为8位

示例

不转化读取,图像通道和数据类型都不会变

不转化读取,tiff图像保存为其他图像,则数据类型可能改变

不转化读取,tiff保持为tiff图像,则不发生改变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import sys
import os

img_path = 's1a-iw-grd-vh-20150823t221233-20150823t221258-007396-00a2ca-002'

img_list = os.listdir(img_path)
for img_name in img_list:
if '.tiff' in img_name:
#保持不变读取
img = cv2.imread(os.path.join(img_path, img_name), -1)
print('不进行转化读取')
print(img.dtype)
print(img.shape)
#默认读取方式
img = cv2.imread(os.path.join(img_path, img_name))
print('进行转换读取')
print(img.dtype)
print(img.shape)
if '.jpg' in img_name:
#上述文件保存为jpg后读取
img = cv2.imread(os.path.join(img_path, img_name), -1)
print('不进行转化读取后保存为jpg,不进行转化读取(此处保存完成,直接读取)')
print(img.dtype)
print(img.shape)

结果如下:

1
2
3
4
5
6
7
8
9
不进行转化读取后保存为jpg,不进行转化读取(此处保存完成,直接读取)
uint8
(448, 448)
不进行转化读取
uint16
(448, 448)
进行转换读取
uint8
(448, 448, 3)