gpt4 book ai didi

python - 在 python 中滑动 Gabor 过滤器

转载 作者:行者123 更新时间:2023-11-28 22:49:05 25 4
gpt4 key购买 nike

取自 skimage 的 gabor 过滤器示例,计算图像的 gabor 过滤器很容易:

import numpy as np

from scipy import ndimage as nd

from skimage import data
from skimage.util import img_as_float
from skimage.filter import gabor_kernel

brick = img_as_float(data.load('brick.png'))

kernel = np.real(gabor_kernel(0.15, theta = 0.5 * np.pi,sigma_x=5, sigma_y=5))

filtered = nd.convolve(brick, kernel, mode='reflect')

mean = filtered.mean()
variance = filtered.var()

brick 只是一个 numpy 数组。假设我有一个 5000*5000 的 numpy 数组。我想要实现的是生成两个新的 5000*5000 numpy 数组,其中像素是以它们为中心的 15*15 窗口的 gabor 滤波器的均值和 var 值。

谁能帮我实现这个目标?

编辑

¿为什么我被否决了?无论如何,为了澄清,我展示了一个关于如何在单个图像上计算 gabor 滤波器的示例。我想简单地计算一个非常大图像的小方形子集的 gabor 滤波器(因此滑动窗口)。

最佳答案

没有标准方法可以做到这一点(据我所知),但您可以直接自己做。

卷积中的每个像素都是 shift gabor 滤波器的值乘以图像像素的总和。也就是说,卷积中的每个像素基本上都是在常量归一化因子内的均值,因此filtered 基本上就是您的均值。

方差有点难,因为它是平方和,当然,你需要在计算和之前先计算平方。但是,您可以通过对图像和内核进行预平方来轻松完成此操作,即:

N = kernel.shape[0]*kernel.shape[1]
mean = nd.convolve(brick, kernel, mode='reflect')/N
var = nd.convolve(brick*brick, kernel*kernel, mode='reflect')/N - mean*mean

关于python - 在 python 中滑动 Gabor 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com