Коротко:
я хочу изменить разрешение растра и сгладить серую рампу, как показано на изображениях ниже. Предпочтение отдается использованию GDAL, PIL или Numpy.
Описание:
Я делаю точки в растры с выходным разрешением 20 метров с помощью высокопроизводительной геостатистической библиотеки . Я не хочу менять выходное разрешение, потому что время интерполяции увеличивается в геометрической прогрессии.
С этим разрешением выходное изображение выглядит некрасиво (с пикселями и псевдонимами). Я не знаю, является ли это концептуально правильным, но я хочу, чтобы изображение было более плавным, как в примере ниже. Это что-то вроде «реинтерполяции» изображения в лучшее разрешение. Я использую python, поэтому я предпочитаю GDAL, Python Imaging Library или Numpy. Ответ может быть теоретическим, например, указание имени алгоритма или концепции такого рода операций.
Источник:
Место назначения:
РЕДАКТИРОВАТЬ результаты с gdalwarp кубического сплайна:
Ответы:
1) Сложный путь: с небольшим количеством кодирования (относительно) легко реализовать билинейную интерполяцию для достижения достойной повторной дискретизации.
2) Простой способ: использовать GDAL, как описано в предыдущем посте GISSE , но в обратном порядке (уменьшение размера пикселя).
источник
Используйте GDALReprojectImage , который предоставляется в Python:
Для гладкой интерполяции используйте билинейный или кубический методы. Эта функция неудобна, поскольку она не принимает аргументы ключевых слов, поэтому вам нужно найти позицию:
Вероятно, сложная часть настраивается
dst_ds
, которая должна иметь геотрансформацию, подобнуюsrc_ds
, но с измененными размерами ячеек.источник
GRA_CubicSpline
(попробуйте сначала) противGRA_Cubic
(свертка).Чтобы сгладить вариации, вам нужен фильтр нижних частот. Вы можете написать свой собственный, используя GDAL, или есть один, использующий GRASS. Я не пробовал, но вот руководство http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31
Возможно, вы захотите сначала сэмплировать свой растр перед применением фильтра нижних частот, чтобы получить лучшее разрешение на выходе.
источник
Вы можете использовать фильтр ранга / медианы с радиусом = 5, то есть размер ядра = 11 (для каждого канала rgb).
источник