0
我试图在Richardson-Lucy解卷积算法中实现停止标准described in this paper。我的测试图像有2.2 Mpx。我需要计算:在scipy Python中使用稀疏矩阵进行计算
estimator = numpy.dot(P_e_ortho, im_deconv.flatten())
其中
im_deconv = [[]] # Image L channel as a 2D array
m = 2.2E6 # im_deconv.size
P_e_ortho = scipy.sparse.identity(m, dtype='int8') - \
1/m * np.ones((m, m), dtype='int8')
所以基本上,P_e_ortho
有1 - 1/m
对角和其他地方- 1/m
。
现在这段代码返回一个内存错误(需要4.8×10 12个单元)。我怎样才能避免在计算中处理整个矩阵?
scipy.sparse.identity(m, dtype='int8') * (1 - 1/m)
可以很好地设置对角线,但如何更改非对角元素?
发现
我很惊讶这不会给你一个内存错误。您已将矩阵的所有元素设置为非零值。总存储量将大于相应的密集阵列,尽管分割成多个阵列。 '.dot'也会慢很多。 – hpaulj
@hpaulj是的,它不适用于这个问题,我放弃了这种方法。这篇论文展示了这种技术在小图片上的实现,对大图片来说并不可行。我改用正规化因素。但是该解决方案仍然适用于构建稀疏矩阵。 –