Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/04/17 (月)

画像色取得が遅いよー(ToT)・・・とゆう話し(?)

| 09:32 | 画像色取得が遅いよー(ToT)・・・とゆう話し(?) - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 画像色取得が遅いよー(ToT)・・・とゆう話し(?) - 雪乃☆雫のなでしこ日和 画像色取得が遅いよー(ToT)・・・とゆう話し(?) - 雪乃☆雫のなでしこ日和 のブックマークコメント

 何気に触発されて、動体検知的なことを調べてみたのだけれど・・・

 ・・・なんだかさっぱり分からないヽ(;´Д`)ノ

 それでも、画素値分検出ってゆうのは、なんとかワタシの知恵でもできそうだ。

http://www2.wisnet.ne.jp/~daddy/LC3/CaptureAlgorithm.html

 定期的に静止画を取得して、の画像からピクセルごと色を取得して、前後の画像を比較。色が違っていたら、のピクセルは動いたよってことだね。

 出来そうだけど、画像色取得点取得)や点描画が遅すぎて、死にたくなる予感。

 以前、ノベルを作ってた時に、記事にはなってないけど、アルファ値付きのマスクでの合成が出来ないかと思って試作したんだけども、あまりの遅さに挫折したんだよね。

 なにしろ640*480の画像で、20~30秒もかかるんだもん!

 この問題と、セーブデータの仕様を考えるのがめんどーってゆうのが、ノベルに飽きちゃった原因ですかね;;;

(いやむしろ、完成させたところで、絵も描けなけりゃ文章も書けんだろ! って事実に気付いちゃった・・・w)


 それはさておき、動体検知です。

 方針としては、

1,タイマーして、クリップボードコピーでフレームを取得。

2,それを、イメージ0とイメージ1に、交互に振り分ける。

3,イメージからピクセルごと画像色取得して、値を配列に保持。

4,イメージ0とイメージ1の値を比較。

 ・・・的な?

 して、

5,感度値とゆうのを設定して、それよりが大きければ、のピクセルを検知と認定するらしい。

 動いていない背景も、ようく見たら結構ちらつきがあって、全く色が変化してないわけじゃないから、幅を持たすんだね。

6,閾値を設定して、検知となったピクセル数が閾値をえたら、の画像は動いたよと判断する。

 コレでちょこっと、監視カメラっぽい機能を搭載してみようと思う。

 よくある、動くモノが映ったらシャッターを切ったり、メールで送ったり、録画を保存したりする的なコトだね。とりあえず簡単に、静止画保存を呼び出す感じで。


 さらに・・・加えて、動いたところをモニターしたい(?)とゆう野望なのです。

 それをリアルタイムでやろうとすると、コレがまた予想どうりなかなかキビシイ。

 たぶんだけど、なでしこの点取得画像色取得)と点描画は、WindowsAPIのGetPixelとSetPixelが元になってると思われ、コレ自体が遅いとゆう評判なので、もはやどうしようもないっぽいんですよね~(--;

 何か、他に手立ては無いのかなあ・・・

 とりあえず、画像色取得でやるとすると、高速化するには画像を縮小してピクセル数を減らすしかない

 3の前にイメージを縮小するとして、縮小すると精度が下がる。速度を取るか、精度を取るかの二択・・・でもないけど、妥協点を見いださなきゃならいって話になる。

 これは、縮小率を色々変えて、お試ししてみるしかないね。

#-----------------------------------------------------------
精度=20
精度=精度/100

動体検知モニターとはフォームこれについて
  可視はオン。
  スタイルは「枠固定」
  オフに最大化ボタン有効変更。
  タイトルは「動体検知的な?」
  クライアント幅はCW幅。
  クライアント高さはCW高さ。

表示用とはイメージこれについて
  可視はオン。
  親部品は動体検知モニター。
  幅はCW幅。
  高さはCW高さ。
  位置は「0,0」
表示用を黒色画面クリア。

2
  比較用[回数-1]をイメージとして作成。
  比較用[回数-1]→可視はオフ。
  比較用[回数-1]→位置は「0,0」
  比較用[回数-1]→幅はCW幅。
  比較用[回数-1]→高さはCW高さ。

Tとはタイマーの値はフレームレート。
の時満ちた時は~
  C=C+1。D=0。
  CWハンドルをクリップボードコピー。
  比較用[C%2]→画像は「クリップボード」。
  比較用[C%2]を画像グレイスケール。
  比較用[C%2]をCW幅*精度,CW高さ*精度へ画像高速リサイズ。
  yで0からCW高さ*精度-1まで繰り返す。
    xで0からCW幅*精度-1まで繰り返す。
      比較用[C%2]のx,yから画像色取得。
      P¥(C%2),D=それ/$10000を切り下げ。
      D=D+1。
  表示用の画像は「クリップボード」。
#-----------------------------------------------------------

 精度は、何パーセントまで画像を縮小するかの値となってます。

 うーん、画像色取得を終えて、単にクリップボードの画像を表に転送しているだけなんだけどね~。

 ストレス無く動くと言ったらせいぜい20%・・・(´д`;

 リアルタイム感を出そうと思ったら、10%とか・・・Σ(゜д゜;

 の上、動いたピクセルに点描画かなんかすることを考えたら・・・あああ(ToT)

 点描画より四角の方が早いなんてオチはないよね?(汗)

 いや、どっちにしても、画像色取得が最大のネックなんだから、しようがない


 しかしまー、動いたよ→静止画保存・・・くらいなら、出来そう感があるんで、とりあえずはそれかな;;;

 この場合は、細かい動きは無視して、大きく動くものを侵入者(?!)としてとらえるわけだから、ちっちゃこい画像からの検出でもいけそう(たぶん)

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170417