PIL загрузка одного канала для типа данных изображения TIF - PullRequest
0 голосов
/ 05 февраля 2020

У меня спутниковое изображение в формате TIFF. Когда я пытаюсь открыть файл, используя pil и затем печатать размер, я получаю только один канал:

im = Image.open('1989.tif',mode='r')
print(im.size) -- > (687,1091)

Если я пытаюсь открыть с помощью matplotlib, он загружает все каналы, но я получаю пустое изображение, когда я используйте imshow (значения r, g, b для всех изображений равны нулю при печати значений):

im=plt.imread("1989.tif")
print(im.shape) -- > (687,1091,4)
plt.imshow(im) -- > shows blank image

Я не знаю, как исправить одно из них.

Добавление ссылка на изображение:

https://drive.google.com/open?id=1uNQxyCplD7rYd_ZWfFntP1bN_Qg49ybU

1 Ответ

1 голос
/ 05 февраля 2020

Ваше изображение является несжатым 32-битным одноканальным изображением с плавающей запятой. PIL / Pillow, похоже, умеет хорошо читать - у него будут проблемы с отображением, но мы можем поработать над этим следующим ...

from PIL import Image
import numpy as np

# Load image and make into Numpy array
im = Image.open('a.tif')
n = np.array(im)

# Check max value
print(n.max())          # prints 0.54

# Make an 8-bit version for display
Image.fromarray((n*200).astype(np.uint8)).show()

enter image description here


Вы можете проверить изображение с помощью tiffinfo, поставляемого с libtiff:

tiffinfo a.tif

Вывод

TIFFReadDirectory: Warning, Unknown field with tag 33550 (0x830e) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 33922 (0x8482) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34735 (0x87af) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34736 (0x87b0) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34737 (0x87b1) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 42112 (0xa480) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 42113 (0xa481) encountered.
TIFF Directory at offset 0x8 (8)
  Image Width: 1091 Image Length: 687
  Tile Width: 128 Tile Length: 128
  Bits/Sample: 32
  Sample Format: IEEE floating point
  Compression Scheme: None
  Photometric Interpretation: min-is-black
  Samples/Pixel: 1
  Planar Configuration: single image plane
  Tag 33550: 30.000000,30.000000,0.000000
  Tag 33922: 0.000000,0.000000,0.000000,357075.000000,2904735.000000,0.000000
  Tag 34735: 1,1,0,16,1024,0,1,1,1025,0,1,1,1026,34737,24,0,2048,0,1,4326,2049,34737,84,24,2050,0,1,6326,2051,0,1,8901,2054,0,1,9102,2055,34736,1,0,2056,0,1,7030,2057,34736,1,1,2059,34736,1,2,2061,34736,1,3,3072,0,1,32646,3073,34737,410,108,3076,0,1,9001
  Tag 34736: 0.017453,6378137.000000,298.257224,0.000000
  Tag 34737: PCS Name = UTM_Zone_46N|GCS Name = GCS_WGS_1984|Datum = D_WGS_1984|Ellipsoid = WGS_1984|Primem = Greenwich||ESRI PE String = PROJCS["UTM_Zone_46N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]|
  Tag 42112: <GDALMetadata>
  <Item name="STATISTICS_EXCLUDEDVALUES" sample="0"></Item>
  <Item name="STATISTICS_MAXIMUM" sample="0">0.53153151273727</Item>
  <Item name="STATISTICS_MEAN" sample="0">0.14108245105659</Item>
  <Item name="STATISTICS_MINIMUM" sample="0">-0.48148149251938</Item>
  <Item name="STATISTICS_SKIPFACTORX" sample="0">1</Item>
  <Item name="STATISTICS_SKIPFACTORY" sample="0">1</Item>
  <Item name="STATISTICS_STDDEV" sample="0">0.15760411626121</Item>
</GDALMetadata>

  Tag 42113: -3.4028234663852886e+38
...