Згладжування / реінтерполяція растра за допомогою GDAL?


15

Коротко:
я хочу змінити роздільну здатність растру і згладити сірий пандус, як показано на зображеннях нижче. Перевагою є використання GDAL, PIL або Numpy.

Опис:
Я розбиваю точки на растри з роздільною здатністю 20 метрів за допомогою високопродуктивної геостатистичної бібліотеки . Я не хочу змінювати вихідну роздільну здатність, оскільки час інтерполяції збільшується експоненціально.
З цією роздільною здатністю вихідне зображення є некрасивим (піксельним і псевдонімом). Я не знаю, чи це концептуально правильно, але я хочу, щоб зображення було більш гладким, як у наведеному нижче прикладі. Це щось на кшталт "перевтілення" зображення у кращу роздільну здатність. Я використовую python, тому моїми перевагами є GDAL, Python Imaging Library або Numpy. Відповідь може бути теоретичною, як вказівка ​​назви алгоритму чи концепції цього виду операції.

Джерело:
введіть тут опис зображення

Місце призначення:
введіть тут опис зображення

Результати EDIT з кубічним сплайном gdalwarp:
введіть тут опис зображення


Я не отримую результатів настільки добре, як зображення "після", яке ви опублікували з gdalwarp. Чи можете ви опублікувати точну команду, яку ви використовували?
Грант Хамфріс

Відповіді:


7

1) Важкий спосіб: за допомогою трохи кодування реалізувати білінеарну інтерполяцію (відносно) просто для досягнення гідного перекомпонування.

2) Найпростіший спосіб: використовувати GDAL, як пояснено в попередньому дописі GISSE , але зворотним (зменшення розміру пікселів).


2
Це спрацювало. Найкращі результати були з кубічним сплайном. Я опублікував результати вище. Спасибі.
Пабло

5

Використовуйте GDALReprojectImage , який відкритий в Python:

from osgeo import gdal
help(gdal.ReprojectImage)

Для плавної інтерполяції використовуйте білінеарний або кубічний методи. Ця функція є незручною, оскільки вона не бере аргументи ключових слів, тому вам потрібно знайти позицію:

gdal.ReprojectImage(src_ds, dst_ds, None, None, gdal.GRA_Bilinear)

Ймовірно, складна частина - це налаштування dst_ds, яке має мати геотрансформу, подібну src_ds, але зі зміненими розмірами комірок.


+1. Я не впевнений, що це за "кубічний" метод. Якщо це кубічний сплайн, він, швидше за все, буде більш плавним, ніж білінеарний; але якщо це кубічна згортка, вона буде менш гладкою, ніж білінеарна. Кубічний сплайн був би приблизно ідеальним.
whuber

1
@whuber правда, є два варіанти "кубічних" алгоритмів : GRA_CubicSpline(спробуйте це спочатку) проти GRA_Cubic(згортання).
Майк Т

0

Щоб згладити варіації, вам потрібен фільтр низьких частот. Ви можете написати своє власне користування GDAL, або там, де використовується GRASS. Я не пробував цього, але ось посібник http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31

Ви можете спочатку зробити вибірку растру перед тим, як застосувати фільтр низьких частот, щоб отримати кращий вихід з роздільною здатністю.


1
Я не думаю, що ОП хоче згладити варіанти: інакше навіщо взагалі докладати зусиль кригінгу? Усі його переваги були б втрачені. Натомість, як показують зображення, питання вимагає проведення плавної процедури перекомпонування для створення версії вже отриманих результатів з більшою роздільною здатністю (що є розумним та ефективним способом прискорити кригінг).
whuber

-1

Ви можете використовувати рейтинг / серединний фільтр з радіусом = 5, тобто розмір ядра = 11, (для кожного каналу rgb).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.