[Gdal-dev] Gdalwarp color corruption
matt.wilkie at gov.yk.ca
Tue Jan 16 19:58:09 EST 2007
After last talking to you on friday I pushed my discomfort with gdalwarp
out of the way and tackled learning it earnestly. I'm very happy to
report I've found a workflow which works well for us, unlike the
tortuous spaghetti route I told you about. :) So now I have output
images which are both colour-faithul and edge-sharp, unlike the ones I
put up for you to see last week.
The method is simple, but not very efficient:
- Convert 256 colour image to RGB,
- restore georeferencing,
- project and resample,
- convert back to 256c,
- restore georeferencing.
:: convert to rgb
pal2rgb -c lzw orig.tif orig-rgb.tif
:: restore lost georeferencing
listgeo -proj4 orig.tif orig.prj
geotifcp -g orig.prj orig-rgb.tif orig-rgb-geo.tif
:: project to albers
gdalwarp --optfile=utm2alb.opt orig-rgb-geo.tif out-rgb.tif
-t_srs "+proj=aea +lat_1=61.666666667 +lat_2=68.000000000
+lat_0=59.000000000 +lon_0=-132.500000000 +x_0=500000.000
+y_0=500000.000 +ellps=GRS80 +units=m"
:: convert back to 256 colours
rgb2pct -n 256 out-rgb.tif xx-out-256c.tif
:: compress 256c
gdal_translate -co compress=lzw xx-out-256c.tif out-256c.tif
:: delete intermediate files
del orig-rgb.tif orig-rgb-geo.tif orig.prj xx-orig-256c.tif
The final 256c images do have dithering artifacts at high zoom levels
and bright white is now a dim white (RGB:248,248,248).
If I use nconvert instead of pct2rgb to get back to 256c the colour
fidelity is perfect, although the index order changes. My nconvert
command is below. I don't know if all the options are needed, probably not:
:: use nconvert to get back to 256c instead of rgb2pct
nconvert -npcd 2 -ctype grey -corder inter -ratio -rtype lanczos \
-c 3 -colours 256 -out tiff -o xx-out-256c.tif out-rgb.tif
:: restore lost georefencing
listgeo -proj4 out-rgb.tif > out-rgb.prj
geotifcp -g out-rgb.prj out-256c.tif out-256c-geo.tif
I've asked nconvert author Pierre Gougelet about making it geotiff aware
and he's going to look into it. To keep the whole toolchain open source
though would require adding lanczos or some other colour reduction
algorithm to rgb2pct (I think).
Craig Miller wrote:
> I've been using gdalwarp to reproject USGS quads (single band geotif images
> with color table) from UTM zone 10/11 to geographic (EPSG:4326). If I use
> nearest neighbor sampling (-rn) the color table gets translated correctly,
> but if I use bilinear, cubic, or cubic spline resampling the color table is
> corrupted. For example, blue water turns brown. As nearest neighbor
> sampling doesn't always offer up the smoothest results I'm hoping to get
> cubic spline resampling working. Any suggestions on how to get this working
> w/o corrupting my color table?
> I'm using gdal out of CVS from a couple of weeks ago.
> Gdalwarp -rcs -co "COMPRESS=LZW" -co "TILED=YES" -wo "INIT_DEST=NO_DATA"
> -t_srs EPSG:4326 infile.tif ..\geo\outfile.tif
> I'd be happy to provide sample images, but they are a bit large so I didn't
> want to send them to the list.
> Thanks for the help,
> Gdal-dev mailing list
> Gdal-dev at lists.maptools.org
Information Management and Technology,
Yukon Department of Environment
10 Burns Road * Whitehorse, Yukon * Y1A 4Y9
867-667-8133 Tel * 867-393-7003 Fax
More information about the Gdal-dev