Thanks for the excellent and fast information, Even and Andrew. I think I have 
learned all I need to know,
for now. Much obliged.

ER>  ... but of course, readers are not expected to interpret such 3-channel 
files as being RGB.

That's what I thought, but I am glad that you confirm it. I was confused when 
both ArcMap and QGIS 
chose a default display that assumed some kind of RGB.  I suppose they have 
some built-in rule of thumb, 
saying that three channels declared as Gray/Undefined/Undefined are most likely 
to be a mis-tagged RGB file.

By the way, I also had got the impression that MinIsBlack would refer to all 
channels, but I suppose the libtiff
behaviour must be correct - that makes more sense. One of my files did have 2 
values for Extra Samples, but 
not the other.  Weird. 

The default visualization for a Gray/Undefined/Undefined file in Carmenta 
Engine, when using our GdalDataSet
class (based on you-know-what), is to just show the first channel as a 
grayscale. I think this is faithful to the
declared Photometric Interpretation, but for these mis-tagged files I noticed a 
risk: a Red channel displayed
as grayscale can show enough of the map features that you don't notice 
something is wrong - you think you
are seeing a grayscale map correctly. If the brightness contrasts between 
foreground and background are
strong, it looks pretty good. But if you are really unlucky, I guess there 
could be a text "Danger! Minefield!"
that is colored so that it becomes invisible when only showing the Red channel. 

ER> There are MinSampleValue and MaxSampleValue tags in the TIFF spec, but those
ER> are not really used by GDAL and are just reported as metadata.

OK, but for the record, I checked them in the TIFF specification, and I think 
you misremember the purpose
of these tags. GDAL seems to be doing the right thing already, since they are 
supposed to give the min and
max of the range of values that occur in the file - they don't give the 
representations of min and max intensity. 
They are not supposed to alter the display, but maybe some GIS systems use them 
for non-standard contrast
enhancement or something.

The TIFF specification does seem to say that for RGB, the min and max 
intensities are always 0 and 255 for 8-bit
data, and 0 and 65535 for 16-bit data.  I think I finally figured out how the 
data provider documented that they
used 255 for the max intensity in their 16-bit data: they had a Raster 
Attribute Table in a .tif.aux.xml file, where
channel values in the range 0 to 255 had an attribute named Contrast of type 
Double, with the value b/255 for
each value b. Now that's unusual, I think - I have never seen anything like 
this before.

ACA> Sounds like different default gamma correction values.

That may be a useful clue. I don't know much about gamma correction but I think 
it may be a part of the problem,
but perhaps not the main one.

Kind regards,

Mikael Rittri
Carmenta Geospatial Technologies
http://www.carmenta.com

________________________________________
From: Even Rouault [[email protected]]
Sent: Thursday, November 15, 2018 9:20 PM
To: [email protected]
Cc: Mikael Rittri
Subject: Re: [gdal-dev] Unusual RGB Tiff files with misleading 
PhotometricInterpretation: valid or not?

Mikael,

> 1.  If an RGB Tiff file doesn't have PhotometricInterpretation = RGB, can it
> really be claimed that the file adheres to the Tiff standard, or is it
> corrupt?

If it has 2 values for ExtraSamples, then I believe is technically legal (the
TIFF spec is not really clear but libtiff interprets PhotometricInterpretation
= MinIsBlack as meaning one nominal channel, all the other ones being extra
samples), but of course, readers are not expected to interpret such 3-channel
files as being RGB.

> 2.  If the min and max intensities are not the same as the min and max
> representable numbers for the integer type, then how are they specified in
> Tiff?

There are MinSampleValue and MaxSampleValue tags in the TIFF spec, but those
are not really used by GDAL and are just reported as metadata.

$ cp byte.tif test.tif
$ tiffset -s MinSampleValue 1 0 test.tif
$ tiffset -s MaxSampleValue 1 255 test.tif
$ gdalinfo test.tif
[...]
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_MAXSAMPLEVALUE=255
  TIFFTAG_MINSAMPLEVALUE=0

Even

--
Spatialys - Geospatial professional services
http://www.spatialys.com
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to