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

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

うまく動いていたんだけど、はまってしまった。 以下の情報を参考に、SparkPiをクラスタにつ

記事を読む

Scalaで誤差逆伝播法を実装(行列計算版)

githubにアップしました。 前回実装した誤差逆伝播法を行列で実装しました。 breeze-n

記事を読む

no image

scala 多重ループ

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

記事を読む

no image

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

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

記事を読む

Github EvolutionalComputation で Rosenbrockを実験してみた

https://github.com/yawaip/EvolutionalComputation

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

Sparkでhdfsに出力 その1

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

記事を読む

no image

scalaで複数ファイルをコンパイルして実行する方法

scalaで複数ファイルを作って、実行する方法がわからなくて2時間ほど時間を無駄にした。(無職なんだ

記事を読む

no image

Sparkでhdfsに出力 その2

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

記事を読む

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 ↑