I have three thermal IR images of a boat acquired by a drone as it flew overhead. The images were taken at one second intervals, are GeoTIFF files and overlap one another. I don't know exactly how the GeoTIFFs were generated from raw drone imagery or how they were georeferenced, but the files contain metadata that allows them to be projected and displayed by QGIS as a mosaic: . The problem is that the georeferencing has about 10 meters of down-track error, which I'd like to correct (the boat was stationary while the drone was moving at about 15 kts).
How to do this?
I assume I could use the center image as a reference, and shift the other two images about 10 meters so that there's just one boat in the three-image mosaic.
Is that a reasonable approach?
How can I do this with QGIS or GDAL?
I'm running QGIS 2.8.6, and tried the following approach:
a) Define nine reference points on the boat (engines, bow, etc) and defining their "true" lat/lon as those in the center image, shown here:
b) Run georeferencer plugin on the right-most image, picking the same nine GCP points as in the center image and assigning them the same "true" lat/lon values from step a (remember, the boat is stationary).
c) Run the georeferencer. Then display the output GeoTIFF on QGIS map view. I would expect it now to mosaic properly with the center image, i.e. just one boat in the mosaic. But for some reason it is always rotated about 90 deg from true orientation. The input and output image have the same CRS.
Anyone know why QGIS georeferencer is generating a rotated map tile?
Am I missing a step, or is my basic approach wrong?
Here is the output of gdalinfo -stats for one of the right-most boat image before running georeferencer:
gdalinfo -stats 20170510_120937.tif Driver: GTiff/GeoTIFF Files: 20170510_120937.tif 20170510_120937.tif.aux.xml Size is 640, 512 Coordinate System is `' GCP Projection = GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] GCP[ 0]: Id=1, Info= (0,0) -> (-121.937911184221,36.8735119581209,0) GCP[ 1]: Id=2, Info= (640,512) -> (-121.937906441865,36.8740747288361,0) GCP[ 2]: Id=3, Info= (640,0) -> (-121.938183408615,36.8738548301738,0) GCP[ 3]: Id=4, Info= (0,512) -> (-121.937634217471,36.8737318567832,0) Metadata: AREA_OR_POINT=Area Image Structure Metadata: INTERLEAVE=BAND Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left ( 0.0, 512.0) Upper Right ( 640.0, 0.0) Lower Right ( 640.0, 512.0) Center ( 320.0, 256.0) Band 1 Block=640x3 Type=Float32, ColorInterp=Gray Min=11.605 Max=16.896 Minimum=11.605, Maximum=16.896, Mean=12.444, StdDev=0.217 NoData Value=0 Metadata: STATISTICS_MAXIMUM=16.896173477173 STATISTICS_MEAN=12.444132800982 STATISTICS_MINIMUM=11.60532283783 STATISTICS_STDDEV=0.21682018789798
And here is gdalinfo -stats for the image after georeferencer:
Driver: GTiff/GeoTIFF Files: 20170510_120937-adj.tif 20170510_120937-adj.tif.aux.xml Size is 630, 565 Coordinate System is: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] Origin = (-6.687509268522263,22.007802724838257) Pixel Size = (0.966007629874689,-0.966007629874689) Metadata: AREA_OR_POINT=Area Image Structure Metadata: INTERLEAVE=BAND Corner Coordinates: Upper Left ( -6.6875093, 22.0078027) Lower Left ( -6.688, -523.787) Upper Right ( 601.897, 22.008) Lower Right ( 601.897, -523.787) Center ( 297.605, -250.889) Band 1 Block=630x3 Type=Float32, ColorInterp=Gray Min=11.638 Max=16.894 Minimum=11.638, Maximum=16.894, Mean=12.444, StdDev=0.211 NoData Value=0 Metadata: STATISTICS_MAXIMUM=16.894006729126 STATISTICS_MEAN=12.443944212619 STATISTICS_MINIMUM=11.63795375824 STATISTICS_STDDEV=0.21132949929318
Can anyone enlighten me?