相关疑难解决方法(0)

用Python在Nan中高斯滤波图像

从2D坐标列表和第三个变量(速度),我创建了一个覆盖整个采样区域的2D numpy数组.我的目的是创建一个图像,其中每个像素包含其中的点的平均速度.之后用高斯滤波器过滤该图像.

问题是该区域未被均匀采样.因此,我Nan在图像中间有几个没有信息()的像素.当我尝试通过高斯滤波器过滤数组时,Nan传播会破坏整个图像.

我需要过滤此图像,但拒绝所有没有信息的像素.换句话说,如果像素不包含信息,则不应将其考虑用于过滤.

以下是我的平均代码示例:

Mean_V = np.zeros([len(x_bins), len(y_bins)])

for i, x_bin in enumerate(x_bins[:-1]):
    bin_x = (x > x_bins[i]) & (x <= x_bins[i+1])
    for j, y_bin in enumerate(y_bins[:-1]):
        bin_xy = (y[bin_x] > y_bins[j]) & (y[bin_x] <= y_bins[j+1])
        if (sum(x > 0 for x in bin_xy) > 0) :
            Mean_V[i,j]=np.mean(V[bin_x][bin_xy])
        else:
            Mean_V[i,j]=np.nan
Run Code Online (Sandbox Code Playgroud)

编辑:

网上冲浪我已经结束了我在2013年提出的这个问题.这个问题的解决方案可以在astropy库中找到:

http://docs.astropy.org/en/stable/convolution/

Astropy的卷积用来自邻居的内核加权插值替换NaN像素.

谢谢大家!

python numpy image-processing matplotlib imagefilter

14
推荐指数
2
解决办法
5455
查看次数