4

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: boat imaged by drone. 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:

boat GCPs

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?

  • 1
    Have you reversed the Longitude/Latitude numbers in your GCP's? – Micha Jul 8 '18 at 16:04
  • 1
    QGIS can create a GDAL script for georeferencing. Can you add it to your question? – AndreJ Jul 9 '18 at 6:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.