我正在开发一个热图生成程序,希望该程序可以根据建筑布局(不是基于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
我知道双线性不会做到这一点,由于周围零点的数量众多,高斯会将所有峰值降低到较低的值。显然这是一个矩阵处理命题,我不需要Bezier曲线平滑,只要足够接近以图形表示就可以了。我的矩阵最终将达到大约1500×900个细胞的大小,并具有大约100个已知点。
一旦对值进行插值,我将编写代码将其全部转换为颜色,这没问题。就是现在,我将单色像素洒在黑色背景上。
答案 0 :(得分:0)
提出幼稚的解决方案:
步骤1:将现有数据点内插和外推到周围环境。 这可以使用“波传播”类型算法来完成。 已知点将其值“散布”到周围环境中,直到所有网格都被某些已知值“淹没”为止。在此阶段结束时,您将有许多相交的“磁盘”,并且没有零。
第2步:使结果平滑(使用bilinear filtering或其他一些过滤器。)
如果您能够使用ScyPy,则interp2d会完全满足您的要求。一个可能的问题是,它似乎无法顺利地according to this issue进行推断。这意味着壁附近的所有值都将与最接近其相邻点的值相同。这可以通过将温度计放在所有四个角来解决:)