滤波是图像中常用的处理方法,如常见的均值滤波、中值滤波、双边滤波以及高斯滤波等。本博客主要使用高斯滤波,并在此基础上对图像进行锐化处理。至于高斯低通滤波的原理,在此不再累述,网上很多也很详细。
高斯低通滤波是对图像做平滑处理,那我怎么说还能够做图像锐化呢?因为,原始的图像 + 原始图像 - 高斯低通滤波后的图像 = 锐化后的图像。很自然的道理,不再累述,直接上代码,以下是用在了16位的遥感影像上,采用GDAL库读取影像。
<pre name="code" class="cpp">bool GaussLowFilter( const char *inFilename,const char *smoothedFilename,const char *pszFormat,double dSigma )
{
GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO"); //为了支持中文路径
GDALDataset *poIn = (GDALDataset *)GDALOpen(inFilename,GA_ReadOnly); //打开影像
//获取影像大小
int InXsize = poIn ->GetRasterXSize();
int InYsize = poIn ->GetRasterYSize();
//获取影像波段数
int InBands = poIn ->GetRasterCount();
//获取影像格式
GDALDataType eDataType = poIn -> GetRasterBand(1) -> GetRasterDataType();
//定义存储影像的