arcgis双线性插值双线性插值法


arcgis双线性插值双线性插值法

文章标签ArcGISArcMap重采样重采样算法空间插值文章分类软件研发私藏项目实操分享

本文介绍在ArcMap软件中,实现栅格图像重采样的具体操作,以及不同重采样方法的选择依据。

在文章ArcPy批量掩膜、重采样大量遥感影像中,我们介绍了基于Python中Arcpy模块对栅格图像加以批量重采样的方法;而在ArcMap软件中,我们可以实现不需要代码的栅格重采样操作;本文就对这一操作方法加以具体介绍。

首先,如下图所示,是我们待重采样的栅格图像的属性界面。其中,可以看到此时栅格像元的边长为0.4867左右(由于图层是地理坐标系,所以单位就是度)。

接下来,我们即可开始重采样操作。首先,在ArcMap软件中,依次选择“SystemToolboxes”→“DataManagementTools.tbx”→“Raster”→“RasterProcessing”→“Resample”选项;如下图所示。

随后,即可弹出“Resample”窗口。在窗口的第一个选项中,输入我们待重采样的栅格文件;在第二个选项中,配置输出结果的路径与文件名称;随后,第三个选项是设置重采样后栅格像元大小的参数,可以直接通过其下方X与Y的数值来指定像元大小,也可以通过其他栅格文件来指定;最后,第四个选项就是重采样所采用的方法。

上述窗口中的参数整体也都很简单,也非常好理解;但主要是最后一个选项,也就是重采样方法的选择值得进一步探究。在实际应用过程中,我们究竟该选择哪一个方法呢?我们来看一下ArcGIS官网对不同方法的介绍;如下图所示。

可以看到,ArcGIS官方一共提供了4种栅格数据重采样的方法,分别是最邻近分配法(NEAREST)、众数算法(MAJORITY)、双线性插值法(BILINEAR)与三次卷积插值法(CUBIC)。

首先,最邻近分配法是速度最快的插值方法。这一方法主要用于离散数据(如土地利用分类数据),因为这一方法不会更改像元的值。使用这一方法进行重采样,最大空间误差将是像元大小的一半。

其次,众数算法根据过滤器窗口中频率最高的数值来作为像元的新值。其与最邻近分配法一样,主要用于离散数据;但与最邻近分配法相比,众数算法通常可生成更平滑的结果。众数算法将在与输出像元中心最接近的输入空间中查找相应的4x4像元,并使用4x4相邻点的众数作为像元的新值。

再次,双线性插值法基于四个最邻近的输入像元中心的加权平均距离来确定像元的新值。这一方法对连续数据非常有用(且只能对连续数据使用),且会对数据进行一些平滑处理。

最后,三次卷积插值法通过拟合穿过16个最邻近输入像元中心的平滑曲线确定像元的新值。这一方法仅适用于连续数据,但要注意其所生成的输出栅格可能会包含输入栅格范围以外的值。如果大家不想出现这种情况,按照官方的说法,就需要转而使用双线性插值法。与通过运行最邻近分配法获得的栅格相比,三次卷积插值法的输出结果的几何变形程度较小。三次卷积插值法的缺点是需要更多的处理时间。

了解上述原理,我们就对选择哪一个方法有了比较清楚地认识。例如,我这里需要进行重采样操作的是一个类别数据,因此就只能选择最邻近分配法与众数算法;而后,我们可以结合实际需要进行2种方法的二选一即可(或者直接用2种方法运行一遍,看看哪一个方法对应的结果更符合自己的需要)。如果大家需要进行重采样操作的是连续数据,那么4种方法理论上都是可以的,但是后2种方法相对更适合一些;大家结合需要选择或者分别运行一次,找到最合适的结果即可。

线性插值先讲一下线性插值:已知数据(x0,y0)与(x1,y1),要计算[x0,x1]区间内某一位置x在直线上的y值(反过来也是一样,略):y−y/0x−x0=y1−y0/x1−x0y−y0/x−x0=y1−y0/x1−x0y=(x1−x/x1−x0)*y0 (x−x0/x1−x0)*y1上面比较好理解吧,仔细看就是用x和x0,

#Java双线性插值##简介双线性插值是一种常用的图像处理技术,通过在图像中插入额外的像素点,可以实现图像的缩放和旋转等操作。在Java中,我们可以使用双线性插值算法来实现图像的平滑缩放。本文将介绍双线性插值的原理、实现方法以及代码示例。##原理双线性插值是一种基于线性插值的方法,它通过在原图像的像素点之间插入新的像素点,来计算目标图像中的像素值。具体而言,双线性插值算法通过

双线性插值实现在上一篇文章里,介绍了「最邻近差值」的原理与实现这篇想总结一下学到的高级方法「双线性差值」的原理,再比较一下这两种方法的最大不同在哪里双线性差值如图:“双”体现在插值公式在不同轴x,y上的计算次数,简单来说就是:1)找到一个区间(x1,x2)之间的值x;2)找到另一个区间(y1,y2)之间的值y;最后确定点P(x,y)。第一个问题来了,“什么情况下才需要用到双线性差值呢

方法一:Opencv自带的用插值办法做的图像缩放dst_cvsize.width=(int)(scr->width*scale);dst_cvsize.height=(int)(scr->height*scale);dst=cvCreateImage(dst_cvsize,scr->depth,scr->nChannels);

假设有一张4*4的图像.如下图:我们想缩放成3*3的图像,计算如下(以缩放后的像素点B为例):根据如下计算公式:srcX=dstX*(srcWidth/dstWidth)srcY=dstY*(srcHeight/dstHeight)以E点坐标为例计算坐标点在原图对坐标位置如下:取原图像的X坐标=1*(4/3)1.3取原图像的Y坐标=1*(4/3)1.3使用双线性插值法:对

双线性插值(Matlab实现)
一、原理三次样条插值时仿真速度太慢,于是采用算法简单的线性插值。本篇主要介绍一下双线性插值的实现方法。
1.线性插值x0,y0)与(x1,y1),要得到[x0,x1]区间内某一位置xxy求x的过程与以上过程相同,只是x与