相关疑难解决方法(0)

填补numpy数组中的空白

我只想用最简单的术语插入3D数据集.线性插值,最近邻,所有这些就足够了(这是从一些算法开始,所以不需要准确的估计).

在新的scipy版本中,像griddata这样的东西会很有用,但是目前我只有scipy 0.8.所以我有一个"立方体"(data[:,:,:],(NixNjxNk))数组,以及一个相同大小的标志(flags[:,:,:,],TrueFalse)数组.我想插入数据元素的数据,其中flag的对应元素为False,例如使用数据中最近的有效数据点,或者"close by"点的某种线性组合.

数据集中至少有两个维度可能存在较大的间隙.除了使用kdtrees或类似编码完整的最近邻算法之外,我无法真正找到通用的N维最近邻插值器.

python interpolation numpy matplotlib scipy

12
推荐指数
2
解决办法
6767
查看次数

用numpy和scipy填充图像上的空白

附上图像(test.tif).np.nan值是最白的区域.如何使用一些使用邻居值的间隙填充算法填充那些最白的区域?

在此输入图像描述

import scipy.ndimage

data = ndimage.imread('test.tif')
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing scipy

11
推荐指数
3
解决办法
7215
查看次数

使用PIL用附近的颜色填充空图像空间(又称修复)

我用PIL创建一个图像:

示例图片

我需要填补空白区域(描绘为黑色).我可以很容易地用静态颜色填充它,但我想做的是用附近的颜色填充像素.例如,边界之后的第一个像素可能是填充像素的高斯模糊.或者可能是Lumigraph,Gortler等人所述的推挽式算法..

我需要一些不太慢的东西,因为我必须在许多图像上运行它.我可以访问其他库,比如numpy,你可以假设我知道边界或外部区域或区域内的掩码.有关如何处理此问题的任何建议?

更新:

正如belisarius所建议的那样,opencv的inpaint方法是完美的.这里有一些使用opencv来实现我想要的python代码:

import Image, ImageDraw, cv

im = Image.open("u7XVL.png")
pix = im.load()

#create a mask of the background colors
# this is slow, but easy for example purposes
mask = Image.new('L', im.size)
maskdraw = ImageDraw.Draw(mask)
for x in range(im.size[0]):
    for y in range(im.size[1]):
        if pix[(x,y)] == (0,0,0):
            maskdraw.point((x,y), 255)

#convert image and mask to opencv format
cv_im = cv.CreateImageHeader(im.size, cv.IPL_DEPTH_8U, 3)
cv.SetData(cv_im, im.tostring())
cv_mask = cv.CreateImageHeader(mask.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cv_mask, mask.tostring())

#do …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing python-imaging-library

10
推荐指数
1
解决办法
3446
查看次数

如何在图像中填充"洞"?

我有星系的照片.这些图像上有一些不需要的数据(如星星或飞机条纹)被屏蔽掉了.我不仅希望用一些平均值填充遮罩区域,而是根据周围数据对它们进行插值.我如何在python中做到这一点?

我们在SciPy.interpolate包中尝试了各种函数:RectBivariateSpline,interp2d,splrep/splev,map_coordinates,但它们似乎都在寻找现有像素之间的新像素,我们无法让它们填充数据中的任意"漏洞" .

python interpolation mask image-processing astronomy

7
推荐指数
1
解决办法
3871
查看次数