ocr アルゴリズムを書きたいとしましょう。したがって、バイナリイメージを作成したいと思います。私が思いついたclojureとquilを使用して:
(defn setup []
(load-pixels)
(let [pxls (pixels)
]
(letfn [(pxl-over-threshold? [idx] (if (> (red (aget pxls idx)) 128) true false))
]
(time (dotimes [idx 25500] (aset pxls idx (color (rem idx 255)))))
(time (dotimes [idx 25500] (if (pxl-over-threshold? idx)
(aset pxls idx (color 255))
(aset pxls idx (color 0)))))))
(update-pixels))
(defn draw [])
(defsketch example
:title "image demo"
:setup setup
:draw draw
:size [255 100]
:renderer :p2d)
;"Elapsed time: 1570.58932 msecs"
;"Elapsed time: 2781.334345 msecs"
コードはグレースケールを生成し、その後、すべてのピクセルを繰り返し処理して黒または白に設定します。要求された動作を実行しますが、そこに到達するまでに約 4.3 秒かかります (1.3 デュアル コア)。4.3秒を文脈に入れるための参照はありません。しかし、より大きな画像を処理することを考えると、これは信じられないほど遅くなるに違いありません。
私は何かひどく間違ったことをしていますか、それとも物事を固定する方法はありますか? clojure と quil の組み合わせは、ピクセル変換をより高速に実行できますか、それとも別の言語/環境を選択する必要がありますか?
また、コードで奇妙なことをしている場合はお知らせください。私はまだclojureに慣れていません。
前もって感謝します。