私は(とりわけ)RGB画像にデルタフィルターを適用しなければならないデコンプレッサーを書いています。つまり、最初のピクセルのみが絶対(R1、G1、B1)で、他のすべてのピクセルが(R [n] -R [n-1]、G [n] -G [n-1)の形式である画像を読み取ります。 ]、B [n] -B [n-1])、それらを標準RGBに変換します。
現在、私は次のようにnumpyを使用しています。
rgb = numpy.fromstring(data, 'uint8')
components = rgb.reshape(3, -1, order='F')
filtered = numpy.cumsum(components, dtype='uint8', axis=1)
frame = numpy.reshape(filtered, -1, order='F')
どこ
- 1行目は、元の画像の1D配列を作成します。
2行目はそれを形に変えます
[[R1, R2, ..., Rn], [G1, G2, ..., Gn], [B1, B2, ..., Bn]]
3行目は実際のデフィルタリングを実行します
- 4行目は再び1D配列に変換されます
問題は、それが私のニーズには遅すぎるということです。プロファイルを作成したところ、アレイの再形成にかなりの時間が費やされていることがわかりました。
だから私は疑問に思います:形を変えるのを避けるか、それをスピードアップする方法はありますか?
ノート:
- このためにC拡張機能を作成する必要はありません。
- 私はすでにマルチスレッドを使用しています