Я работаю над программой генерации тепловой карты, которая, надеюсь, заполнит цвета на основе образцов значений, предоставленных из макета здания (это не основано на GPS).
Если у меня есть только несколько известных точек данных, таких как эти, в большой матрице неизвестных, как мне получить промежуточные значения, интерполированные в Python?:
0,0,0,0,1,0,0,0,0,0,5,0,0,0,0,9 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,0,0,2,0,0,0,0,0,0,0,0,8,0,0,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,8,0,0,0,0,0,0,0,6,0,0,0,0,0,0 0,0,0,0,0,3,0,0,0,0,0,0,0,0,7,0
Я понимаю, что билинейный метод этого не сделает, а гауссовский сведет все пики к низким значениям из-за огромного количества окружающих нулей. Это, очевидно, предложение обработки матрицы, и мне не нужно, чтобы кривая Безье была гладкой, просто достаточно близко, чтобы графическое представление было в порядке. Моя матрица в конечном итоге будет размером около 1500 × 900 ячеек с примерно 100 известными точками.
После того, как значения интерполированы, я написал код, чтобы преобразовать все это в цвета, без проблем. Просто сейчас я получаю одиночные цветные пиксели, разбросанные по черному фону.
Я считаю, что interp2d (docs.scipy.org/doc/scipy/reference/generated/…) Scipy может решить вашу проблему, к сожалению, я не могу проверить это прямо сейчас, поэтому я не буду публиковать это как ответ, но взгляните
Да, похоже, что interp2D - это ИМЕННО то, что мне нужно. Большое спасибо.






Предлагаю наивное решение:
Шаг 1: интерполируйте и экстраполируйте существующие точки данных на окружающую среду. Это можно сделать с помощью алгоритма типа «распространение волны». Известные точки «размазывают» свои значения по окружению до тех пор, пока вся сетка не будет «затоплена» некоторыми известными значениями. В конце этого этапа у вас есть ряд пересекающихся «дисков», и нулей не осталось.
Шаг 2: сглаживаем результат (используя билинейная фильтрация или другую фильтрацию).
Если вы можете использовать ScyPy, то интерп2д делает именно то, что вам нужно. Возможная проблема заключается в том, что кажется, что по этому вопросу не экстраполируется плавно. Это означает, что все значения вблизи стен будут такими же, как у ближайших к ним соседних точек. Это можно решить, поставив термометры во все 4 угла :)
Да, похоже, что interp2D - это ИМЕННО то, что мне нужно. Большое спасибо.
Каков контекст вашего приложения? Можете ли вы добавить в приложение такую библиотеку, как SciPy?