【发布时间】:2017-06-30 09:47:27
【问题描述】:
我正在尝试计算高维“图像”的熵。显而易见的方法:
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期望概率,而不是值。 -
另外,
entropy实现了符号流的熵计算,而不是序数流。我建议您研究无二进制熵估计器,或者您 - 至少 - 将图像堆栈中的值分成少于 256 个不同的类/符号(假设您将图像保存在 uint8 数组中)。
标签: python image-processing scipy entropy