[gdal-dev] JP2OpenJPEG Driver Reads 4th Band of NITF as Alpha

EVANS, JAMES R GS-13 USAF ACC 84 RADES/SCZE james.evans.4 at us.af.mil
Tue May 19 16:06:27 PDT 2015


Claire,
About a year ago I had a similar issue reading NAIP imagery.  I was able to use Global Mapper to convert the images.  After that MapServer using GDAL could serve the images correctly.  I don't know if that will help you, but it worked for me.  Converting  4.3 TB of imagery took a while....

-----Original Message-----
From: gdal-dev-bounces at lists.osgeo.org [mailto:gdal-dev-bounces at lists.osgeo.org] On Behalf Of Claire Porter
Sent: Tuesday, May 19, 2015 4:54 PM
To: gdal-dev at lists.osgeo.org
Subject: [gdal-dev] JP2OpenJPEG Driver Reads 4th Band of NITF as Alpha

Hello,

I use the OpenJPEG 2.0 driver to decode the JP2 images within NITF files (1B level NITF images from DigitalGlobe).  For 4 band images, the driver interprets the 4th band as Alpha.  When I warp the imagery using gdalwarp, the 4th band in the output is all zeros. If I convert the image using gdal_translate, the 11 bit values in the 4th band are truncated to 255.  Using GTiff creation options of PHOTOMETRIC=RGB or MINISBLACK and ALPHA=NO do not change the results.

I found this only occurs with the OpenJPEG driver. The Jasper, Kakadu, and ECW drivers interpret the 4th band as Undefined and the 4th band behaves normally in gdalwarp and gdal_translate.  I've tried gdal versions from 1.9.0 to 1.11.1.  I thought perhaps the issue would be solved in OpenJPEG 2.1, and so I tried compiling GDAL 1.11.1 with OpenJPEG 2.1.0.  But, that still resulted in the 4th band being read as Alpha.

I'd really like to continue using OpenJPEG since it will be so well supported in GDAL 2.0.  Anyone know a work around for this?  Is this a GDAL issue or an OpenJPEG issue?

Thanks,
Claire


gdalinfo using the OpenJPEG driver and GDAL 1.11.1:


OPENJPEG: info: Start to read j2k main header (0).
OPENJPEG: info: Main header has been correctly decoded.
GDAL: GDALOpen(/vsisubfile/3935_198497332,output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=0x948760) succeeds as JP2OpenJPEG.
GDAL: NITFDataset::Open() wasn't able to derive a first order geotransform.  It will be returned as GCPs.
GDAL: GDALDefaultOverviews::OverviewScan()
GDAL: GDALOpen(output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=0x8bfd10) succeeds as NITF.
Driver: NITF/National Imagery Transmission Format
Files: output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf
       output/WV02_12OCT082110317-M1BS-103001001B68B600.xml
Size is 9216, 8192
Coordinate System is `'
GCP Projection =
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563, ...........
  SAMP_OFF=4409
  SAMP_SCALE=4410
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 8192.0)
Upper Right ( 9216.0,    0.0)
Lower Right ( 9216.0, 8192.0)
Center      ( 4608.0, 4096.0)
Band 1 Block=1024x1024 Type=UInt16, ColorInterp=Blue
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Overviews: arbitrary
  Image Structure Metadata:
    NBITS=11
Band 2 Block=1024x1024 Type=UInt16, ColorInterp=Green
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Overviews: arbitrary
  Image Structure Metadata:
    NBITS=11
Band 3 Block=1024x1024 Type=UInt16, ColorInterp=Red
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Overviews: arbitrary
  Image Structure Metadata:
    NBITS=11
Band 4 Block=1024x1024 Type=UInt16, ColorInterp=Alpha
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Overviews: arbitrary
  Image Structure Metadata:
    NBITS=11
GDAL: GDALClose(/vsisubfile/3935_198497332,output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=0x94d3f0)
GDAL: GDALClose(/vsisubfile/3935_198497332,output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=0x948760)
GDAL: GDALClose(output/WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=0x8bfd10)


gdalinfo using ECW and 1.11.1 (Jasper and Kakadu are similar):

ECW: NCScbmOpenFileView(/vsisubfile/3935_198497332,Z:\claire\debug_ortho\output2\WV02_12OCT082110317-M1BS-103001001B68B600.ntf): eErr=2, will try VSIL stream.
ECW: Got mutex.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_0.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_1.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_2.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_3.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_4.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_5.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_6.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_7.ntf' for temporary directory determination purposes.
ECW: Using filename 'C:\Users\porte254\AppData\Local\Temp\99544_8.ntf' for temporary directory determination purposes.
ECW: FileInfo: SizeXY=9216,8192 Bands=4
       OriginXY=0,0  CellIncrementXY=1,1
       ColorSpace=3, eCellType=1


GDAL: GDALOpen(/vsisubfile/3935_198497332,Z:\claire\debug_ortho\output2\WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=000000000032FBA0) succeeds as JP2ECW.
GDAL: NITFDataset::Open() wasn't able to derive a first order
geotransform.  It will be returned as GCPs.
GDAL: GDALDefaultOverviews::OverviewScan()
GDAL: GDALOpen(Z:\claire\debug_ortho\output2\WV02_12OCT082110317-M1BS-103001001B68B600.ntf, this=000000000031EC40) succeeds as NITF.
Driver: NITF/National Imagery Transmission Format
Files: output2\WV02_12OCT082110317-M1BS-103001001B68B600.ntf
         output2\WV02_12OCT082110317-M1BS-103001001B68B600.XML
Size is 9216, 8192
Coordinate System is `'
GCP Projection = 
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
        .....................................................
  SAMP_OFF=4409
  SAMP_SCALE=4410
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 8192.0)
Upper Right ( 9216.0,    0.0)
Lower Right ( 9216.0, 8192.0)
Center      ( 4608.0, 4096.0)
Band 1 Block=256x256 Type=UInt16, ColorInterp=Blue
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Image Structure Metadata:
    NBITS=11
Band 2 Block=256x256 Type=UInt16, ColorInterp=Green
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Image Structure Metadata:
    NBITS=11
Band 3 Block=256x256 Type=UInt16, ColorInterp=Red
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Image Structure Metadata:
    NBITS=11
Band 4 Block=256x256 Type=UInt16, ColorInterp=Undefined
  Overviews: 4608x4096, 2304x2048, 1152x1024, 576x512, 288x256
  Image Structure Metadata:
    NBITS=11



More information about the gdal-dev mailing list