
130
5 章 疎行列を用いた分割表
べてみましょう。比較を公平にするため、
ndimage
には線形補間することを
order=1
で、元の形状
の外側のピクセルは無視することを
reshape=False
で指定します。
%timeit apply_transform(image, tf)
100 loops, average of 7: 3.35 ms +- 270 µs per loop (using standard deviation)
from scipy import ndimage as ndi
%timeit ndi.rotate(image, 30, reshape=False, order=1)
100 loops, average of 7: 19.7 ms +- 988 µs per loop (using standard deviation)
著者らのコンピュータでは、約
10
倍の高速化が見られます。この例では回転しか行いません
が、画像処理でレンズ歪みを補正したり、人の顔を変顔にするなどの複雑な変形処理も可能です。
一旦変換の計算ができれば、別の画像に繰り返し適用することも、疎行列代数のおかげで高速にで
きます。
SciPy
の疎行列の「標準的な」使い方がわかったところで、本章の着想をもたらした少し変わっ
た使い方を見てみましょう。
5.4
分割表再び
我々が、
SciPy
の疎行列形式を使って、疎な結合確率行列を手軽に構築しようとしていることを
思い出してください。
COO
形式は疎なデータを格納するのに、ゼロでない要素の行と列の座標と ...