我正在尝试计算更高维度的“图像”的熵。显而易见的方法:
from scipy.stats import entropy
kernel_radius=2
entropy_stack = np.zeros(Stack.shape)
for ii in range(kernel_radius,entropy_stack.shape[0]-kernel_radius):
for jj in range(kernel_radius,entropy_stack.shape[1]-kernel_radius):
for kk in range(kernel_radius,entropy_stack.shape[2]-kernel_radius):
entropy_stack[ii,jj,kk]=entropy(Stack[ii-kernel_radius:ii+kernel_radius,jj-kernel_radius:jj+kernel_radius,kk-kernel_radius:kk+kernel_radius].flatten())
工作正常,但速度非常慢。
有没有计算高维图像熵的实现技巧?更好的是,有没有带有此函数优化版本的软件包?
我知道scikit-image的entropy
在2D中表现良好。同样,我知道matlab的entropyfilt
比我当前的实现快几百倍。
scipy.stats
中的entropy
函数需要概率作为输入,而不是数值。 - Paul Brodersenentropy
实现了符号流的熵计算,而不是序数流的熵计算。我建议您研究无箱估计器的熵或者至少将图像堆栈中的值分成少于256个不同的类/符号(假设您正在将图像保存在 uint8 数组中)。 - Paul Brodersen