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倍以上の高速化です。

関連記事

Github EvolutionalComputationにCMA-ESのScala実装を追加

https://github.com/yawaip/EvolutionalComputation

記事を読む

no image

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

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

記事を読む

no image

Sparkでhdfsに出力 その2

前回のhdfsに出力するはなしの続き hdfsはnamenode(ネームノード)を経由して出力

記事を読む

no image

Sparkでhdfsに出力 その1

前の投稿の続き 出力の仕方が困った。ローカルに出してもいいんだけど、ローカルってどこ?わからな

記事を読む

no image

Scalaで配列同士の二乗誤差を出力する

配列 Tと配列 Xがあり、その二乗誤差を求める実装。 数式だと以下の様な感じ。誰もが見たことある。

記事を読む

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

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

記事を読む

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

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

記事を読む

no image

Scala言語でベクトルの単位ベクトルを生成

式はこれ メモ def main(args: Array) { val vec = L

記事を読む

no image

高滝湖 釣果情報ページの作成に悩む

高滝湖釣果情報ページ(http://www.chuokai-chiba.or.jp/takataki

記事を読む

Github EvolutionalComputationにjDEのScala実装を追加

https://github.com/yawaip/EvolutionalComputation

記事を読む

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 ↑