【发布时间】:2017-11-14 15:31:54
【问题描述】:
我有一个名为“立方体”的数据立方体。我需要将每个二维切片与高斯核进行卷积。
但是,使用下面的代码,这会使用归一化的高斯核,它会稀释每个切片中较弱的像素。
有没有办法将每个像素高斯除以“max(Gaussian)”,以便每个像素相对于像素强度进行卷积?
import numpy as np
from astropy.convolution import convolve, Gaussian2DKernel
std = 2
gauss_kernel = Gaussian2DKernel(std)
for i in range(len(cube[:,0,0])):
cube[i,:,:] = convolve(cube[i,:,:], gauss_kernel/np.max(gauss_kernel))
【问题讨论】:
-
在卷积之后将结果除以切片,难道不会得到几乎相同的效果吗?
-
我不确定。我相信这里发生的是,对于每个元素(或像素),然后对分布在相邻元素上的卷积高斯进行归一化。因此,较高值元素对较低值像素的影响不同。但我需要的是元素保留其原始值,然后以高斯方式将模糊散布到其他元素中。卷积后除以切片只会将每个元素设置为一个,不是吗?
-
您发布的解决方案已经说明了如何与峰值归一化高斯进行卷积。默认值是与积分归一化高斯卷积。你还想要什么?您可能希望将spectral-cube.readthedocs.io/en/latest/… 用于平滑立方体中每个通道的一般用例
标签: python gaussian cube astropy