gpt4 book ai didi

python - 计算方差图像python

转载 作者:太空狗 更新时间:2023-10-30 00:28:21 26 4
gpt4 key购买 nike

有没有一种简单的方法可以使用 Python/NumPy/Scipy 计算图像上的运行方差滤波器?通过运行方差图像,我的意思是为图像中的每个子窗口 I 计算 sum((I - mean(I))^2)/nPixels 的结果。

由于图像非常大(12000x12000 像素),我想避免在格式之间转换数组的开销,只是为了能够使用不同的库然后再转换回来。

我想我可以通过使用类似的东西找到平均值来手动完成此操作

kernel = np.ones((winSize, winSize))/winSize**2
image_mean = scipy.ndimage.convolve(image, kernel)
diff = (image - image_mean)**2
# Calculate sum over winSize*winSize sub-images
# Subsample result

但是如果有像 Matlab 中的 stdfilt 函数这样的东西会更好。

任何人都可以指出具有此功能并支持 numpy 数组的库的方向,或者暗示/提供一种在 NumPy/SciPy 中执行此操作的方法吗?

最佳答案

更简单且更快的解决方案:使用 SciPy 的 ndimage.uniform_filter

import numpy as np
from scipy import ndimage
rows, cols = 500, 500
win_rows, win_cols = 5, 5

img = np.random.rand(rows, cols)
win_mean = ndimage.uniform_filter(img, (win_rows, win_cols))
win_sqr_mean = ndimage.uniform_filter(img**2, (win_rows, win_cols))
win_var = win_sqr_mean - win_mean**2

“跨步技巧”是个漂亮的技巧,但速度慢了 4 且可读性差。generic_filter 比 strides 慢 20 倍...

关于python - 计算方差图像python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15361595/

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