Opencv: ¿Por qué cambia el tamaño del archivo cuando leo y escribo una imagen sin hacer ningún cambio?

Tengo una lista de archivos (.TIFF) que estoy cambiando de nombre y guardando en el mismo formato. Estoy usando el módulo cv2 para hacer esto.

import cv2 import os import glob os.chdir('C:/99_Temp/') for file in glob.glob("*.tiff"): f = os.path.splitext(file) time_val = f[0][:2] a1 = cv2.imread(file) cv2.imwrite(time_val+'.tiff',a1) 

¿Por qué se reducen los tamaños de archivo del archivo TIFF original? No he hecho ningún procesamiento y visualmente las imágenes se ven igual. Pero me pregunto, ¿por qué la diferencia?

introduzca la descripción de la imagen aquí

Podría haber muchas explicaciones de por qué cambia el tamaño de un archivo TIFF. Aquí hay algunos:

  • un archivo puede ser RGB con 3 bytes de rojo, verde y azul por píxel, mientras que otro codificador puede ver que el archivo tiene menos de 256 colores y decide escribir un byte único de índice de paleta por píxel (y almacenar los 256 colores en un paleta separada) en lugar de 3 bytes de RGB.

  • un archivo puede ser de 8 bits, el otro puede ser de 1 bit (dos niveles), 16 bits, 32 bits o 64 bits.

  • los archivos pueden tener una compresión diferente, que varía a través de ninguno, a LZW, RLE o más recientemente JPEG.

  • un codificador puede haber escrito IPTC u otros metadatos, mientras que el otro lo ha descartado.

  • un codificador puede haber incluido una vista previa de baja resolución, el otro no.


Para verificar, puede usar exiftool que es solo un script de Perl y es simple y pequeño de instalar:

 exiftool image.tif 

Salida de muestra

 ExifTool Version Number : 11.11 File Name : image.tif Directory : . File Size : 91 kB File Modification Date/Time : 2018:11:28 09:38:03+00:00 File Access Date/Time : 2018:12:05 13:15:15+00:00 File Inode Change Date/Time : 2018:12:05 13:15:10+00:00 File Permissions : rw-r--r-- File Type : TIFF File Type Extension : tif MIME Type : image/tiff Exif Byte Order : Little-endian (Intel, II) Image Width : 784 Image Height : 1466 Bits Per Sample : 8 Compression : LZW Photometric Interpretation : BlackIsZero Strip Offsets : (Binary data 827 bytes, use -b option to extract) Samples Per Pixel : 1 Rows Per Strip : 10 Strip Byte Counts : (Binary data 642 bytes, use -b option to extract) Planar Configuration : Chunky Predictor : Horizontal differencing Image Size : 784x1466 Megapixels : 1.1 

O tiffinfo que viene con libtiff y también es bastante pequeño y fácil de instalar:

 tiffinfo image.tif 

Salida de muestra

 TIFF Directory at offset 0x16894 (92308) Image Width: 784 Image Length: 1466 Bits/Sample: 8 Compression Scheme: LZW Photometric Interpretation: min-is-black Samples/Pixel: 1 Rows/Strip: 10 Planar Configuration: single image plane Predictor: horizontal differencing 2 (0x2) 

O ImageMagick, que se instala en la mayoría de las distribuciones de Linux y está disponible para macOS y Windows, pero es una instalación bastante grande:

 magick identify -verbose image.tif 

Salida de muestra

 Image: image.tif Format: TIFF (Tagged Image File Format) Mime type: image/tiff Class: DirectClass Geometry: 784x1466+0+0 Units: PixelsPerInch Colorspace: Gray Type: Grayscale Endianess: LSB Depth: 8-bit Channel depth: Gray: 8-bit Channel statistics: Pixels: 1149344 Gray: ... ... Matte color: grey74 Background color: white Border color: srgb(223,223,223) Transparent color: none Interlace: None Intensity: Undefined Compose: Over Page geometry: 784x1466+0+0 Dispose: Undefined Iterations: 0 Compression: LZW Orientation: TopLeft Properties: date:create: 2018-12-05T13:15:10+00:00 date:modify: 2018-11-28T09:38:03+00:00 signature: 5f9afdc8efd4757daa7f6bdba105f6ae149833c1c8103dd544f0073bb302069d tiff:alpha: unspecified tiff:endian: lsb tiff:photometric: min-is-black tiff:rows-per-strip: 10 Artifacts: verbose: true Tainted: False Filesize: 93622B Number pixels: 1.14934M Pixels per second: 114.935MP User time: 0.010u Elapsed time: 0:01.009 Version: ImageMagick 7.0.8-14 Q16 x86_64 2018-11-16 https://imagemgick.org