是否有一种方法可以通过GDAL(使用Python API)使用移位向量来扭曲图像?
按移位向量,我的意思是带有以下列的CSV(或numpy)文件:starting_x,starting_y,target_x,target_y
。该图像是例如。一个Tiff(或GeoTiff)文件。
我在文档(https://www.gdal.org/gdalwarp.html,https://gdal.org/gdal_translate.html)中找不到支持多个移位向量的东西,但是也许有人知道该怎么做。
编辑
我生成了带有一些示例坐标的VRT文件。这是我使用的命令:
gdal_translate -gcp 100 100 200 200 -gcp 200 200 300 300 -gcp 500 500 600 600 -of VRT original.tif original.vrt
这是输出文件:
<VRTDataset rasterXSize="16285" rasterYSize="8251">
<Metadata>
<MDI key="TIFFTAG_RESOLUTIONUNIT">1 (unitless)</MDI>
<MDI key="TIFFTAG_XRESOLUTION">1</MDI>
<MDI key="TIFFTAG_YRESOLUTION">1</MDI>
</Metadata>
<Metadata domain="IMAGE_STRUCTURE">
<MDI key="INTERLEAVE">BAND</MDI>
</Metadata>
<GCPList>
<GCP Id="" Pixel="100.0000" Line="100.0000" X="2.000000000000E+02" Y="2.000000000000E+02" />
<GCP Id="" Pixel="200.0000" Line="200.0000" X="3.000000000000E+02" Y="3.000000000000E+02" />
<GCP Id="" Pixel="500.0000" Line="500.0000" X="6.000000000000E+02" Y="6.000000000000E+02" />
</GCPList>
<VRTRasterBand dataType="Byte" band="1">
<Metadata domain="IMAGE_STRUCTURE">
<MDI key="NBITS">1</MDI>
</Metadata>
<Metadata>
<MDI key="STATISTICS_MAXIMUM">1</MDI>
<MDI key="STATISTICS_MEAN">0.074397271632616</MDI>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_STDDEV">0.26241630590769</MDI>
</Metadata>
<ColorInterp>Palette</ColorInterp>
<ColorTable>
<Entry c1="255" c2="255" c3="255" c4="255" />
<Entry c1="0" c2="0" c3="0" c4="255" />
</ColorTable>
<SimpleSource>
<SourceFilename relativeToVRT="1">original.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SourceProperties RasterXSize="16285" RasterYSize="8251" DataType="Byte" BlockXSize="16285" BlockYSize="4" />
<SrcRect xOff="0" yOff="0" xSize="16285" ySize="8251" />
<DstRect xOff="0" yOff="0" xSize="16285" ySize="8251" />
</SimpleSource>
</VRTRasterBand>
</VRTDataset>
现在,我尝试将其用作变形的输入:
import gdal
InputImage = 'original.vrt'
OutTileName = 'warped.tif'
OutTile = gdal.Warp(OutTileName, InputImage, options=gdal.WarpOptions(tps=True))
OutTile = None
它没有破裂,但是结果是我得到了完全相同的图像-就像它完全没有翘曲一样。另一件事是输入图像的大小为16 MB,结果图像的大小为140 MB。我在做什么错了?
答案 0 :(得分:1)
您可以为文件分配gpc
,其中gdal_translate -gcp x1 y1 x2 x2
用于指定班次。将输出写入VRT文件可以使您看到格式,因此,如果您有gcp
的数量,那么从某些模板生成VRT可能会更容易,而不是使用命令行。
一旦分配了gcp
,就可以使用gdalwarp“应用”转换。如果输入文件已指定投影,则可能需要添加-tps
标志才能强制使用gcp
代替投影。我不确定最后一部分。