Introduction
前面做宽动态成像(前面的文章)时遇到了运行瓶颈,主要是在计算量上,要计算的式子如下:
\[\begin{eqnarray}
I_{out}(x,y)=\sum_{i=1}^{n}\sum_{j=1}^{m}B_{ij}(x,y)U(x-rx_{ij},y-ry_{ij})I_{d_{ij}}(x,y)
\end{eqnarray}
\]
而Bij(x,y)的计算也有求和运算:
\[\begin{eqnarray}
B_{ij}(x,y)=\frac{e^{- \left( \frac{ (x-rx_{ij})^2 }{2\sigma^2_x} + \frac{ (y-ry_{ij})^2 }{2\sigma^2_y} \right) }}
{\sum_{p=1}^{m}\sum_{q=1}^{n}e^{- \left( \frac{ (x-rx_{pq})^2 }{2\sigma^2_x} + \frac{ (y-ry_{pq})^2 }{2\sigma^2_y} \right) } }
\end{eqnarray}
\]
做实验的时候设置m=20,n=15,H,W分别为597,397,结果一循环就回不来了。。。(对julia的循环优化也是充满信心)
后面试了下用空间换效率的办法:增加一维存储m×n个的矩阵,然后用内置求和,发现提升明显。。。
...
BM=zeros(H,W,M*N)*0.
X=collect(1:W)'.-zeros(H)
Y=collect(1:H).-zeros(W)'
for pn=1:N</