ScalaとOpenCV で並列画像処理

公開日: : 最終更新日:2016/01/23 プログラミング, 技術, 画像処理

ヤワイは画像処理を研究していたことがあります。

また、関数型言語であるScalaはアルゴリズムの検討に向いており、画像処理のスタンダードライブラリのOpenCVが使えるということもあり、最近少しずつ試しております。

ソースコードを貼り付けておきます。

たったpar3文字書くだけで並列化できるので、かなりいい感じがします。

import java.io.File
import org.opencv.core._
import org.opencv.highgui._
object Main {

  def main(args: Array[String]): Unit = {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//これを忘れるとリンクエラーが出る
    val dir = new File(".");//カレントディレクトリから
    val files = dir.list.filter( _.endsWith(".jpg"));//jpgファイルのリストを取得
    println("読み込みファイル数 " + files.length + " ファイル");

    /*画像を読み込み 処理時間を名前渡しパラメータで取得*/
    println("シングルプロセス");
    stopwatch( () => files.map(picname => Highgui.imread(picname)) );
    println("マルチコアプロセス " +  scala.collection.parallel.availableProcessors + " core");
    stopwatch( () => files.par.map(picname => Highgui.imread(picname)) );
  }

  def stopwatch(f:() => Unit) = {
    val start = System.currentTimeMillis();
    f();
    val end = System.currentTimeMillis();
    println("process time " + (end-start) + " msec");
  }
}

出力

読み込みファイル数 32 ファイル
シングルプロセス
process time 90 msec
マルチコアプロセス 4 core
process time 40 msec

4コアで2倍以上の高速化です。

関連記事

no image

scala 多重ループ

関数型言語のscalaで多重ループを表現する方法を教えて下さい。 書きかけ

記事を読む

no image

macのlsが死んでしまった。 ls : invalid line width: Fが出る問題。

基本的にlinuxで開発をすることが多いのですが、お茶でもしながらノマドワークしようと、macに開発

記事を読む

scalanlp/breeze-vizを使ってscalaでグラフ表示

scalaでグラフを書けないかなと探していたら、線形代数ライブラリのscalanlpでグラフが書ける

記事を読む

no image

fstabがうまくいかなかった

raspberry pi で radikoを録音しようと思って、まずはNASに接続しなきゃと思ったの

記事を読む

Github EvolutionalComputation で Rosenbrockを実験してみた

https://github.com/yawaip/EvolutionalComputation

記事を読む

Github EvolutionalComputationにwPSOのScala実装を追加

https://github.com/yawaip/EvolutionalComputation

記事を読む

no image

水中探索ロボット(水中ドローン)の決定版 OpenROV

以前も記事に書きましたが、私は水中探索カメラに興味があります。 先日、フランス人に釣りのことを

記事を読む

Githubに遺伝的アルゴリズム(Real Coded Genetic Algorithm)のScala実装をアップしました。

私のGithubです。 遺伝的アルゴリズムを用いて実数問題を解くということに、興味を持

記事を読む

no image

Sparkを最小労力で動かす その3

結局わかったことは、Cloudera manager難しいってことと、 Spark on Ya

記事を読む

no image

関数型言語のメリットである「アルゴリズムに集中できる」の意味がわからなかった

関数型言語のメリットである「アルゴリズムに集中できる」の意味がわからなかったので、C言語と比較して理

記事を読む

no image
メタニウムMGLとカシータスMGLの飛距離について

メタニウムMGLとカシータスMGLは飛距離については一緒らしいです。

no image
ゾディアス166m-2とクロノス662mbの比較

どうも2ピースロッドが大好きなヤワイです。 同じスペックの竿を2

no image
エリアトラウトで村田基さんの真似を辞めたら釣れるようになった

半年ぶりの更新です。 今年一年は、仕事が忙しくほとんど釣りに行け

上からクロノス、エアエッジ、ブレイゾン、ゾディアス
クロノス 672MHB 使ってみてのレビュー

クロノスロッドはかなりイケてるロッドの気がして、3月に購入してから2回

趣味にエリアフィッシング(ニジマス釣り)をおすすめする7つの理由

休みの日が雨だと何もやることがなくて嫌ですね。昔は雷さえならなければ釣

大好き片倉ダム(笹川湖)~ボート屋紹介~

亀山ダムの釣果情報を出しているページを運営しているものの、なんだかんだ

ピニオンギアのスペースチューニング
アルテグラチューニング

久しぶりの投稿です。 最近、エリアトラウトにどっぷりはまっており

素人がエリアトラウトで人並みに釣ることができるようになるまで

エリアトラウトに始めて2ヶ月が経ちました。完全にハマってます。 技量

王禅寺フィッシュオンへのアクセス1
初エリアトラウトにフィッシュオン王禅寺に行ってきた(公共交通機関でアクセス編)

前回の投稿以降、更新を忘れていたので書きます。 私は車やバイクを

【最安か?】上州屋渋谷の創業祭でジリオン SV TWが10%オフだった

なかなか今年の初バス釣りの予定がたちませんね。 グラフから釣行日

→もっと見る

PAGE TOP ↑