« 携帯サイトで動的にswfを生成する(その1) | トップページ

actionscriptで画像処理

最近自分の周りで、画像処理ニーズが高まってきたので、画像処理を勉強しようと思ってます!



どの言語で画像処理をしようか悩んでいましたが、ハードルが低そうなactionscript3.0で試してみることにしました。



とりあえず、サンプルコードを調べて動かしたところ、Webカメラの画像をリアルタイムで表示しながら、色認識をするアプリができました。いやー、簡単ですね。



自分は、下記コードをASファイルで作成して、これをFlashドキュメントと同じ階層に保存しました。



後はドキュメントクラスの設定を、fla上でプロパティを表示し、ステージ外をクリック、そうするとプロパティにドキュメントクラスを設定するボックスが表示され、そこにASファイルと同名のクラス名を入力するという手順で設定しました。



以下、コードです。

1ピクセルごとのRGB値を取得して、HSV色空間に変換して、Hの値が0~30の値を肌色として、認識しています。

環境にもよりますが、ぼちぼちの認識率ですね。色々と改善してみます!



package {
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.media.Camera;
  import flash.media.Video;

  [SWF(backgroundColor=0xFFFFFF, frameRate=1)] // フレームレートを下げておく
  public class ColorProcessing extends Sprite
  {
    public function ColorProcessing()
    {
    var camera:Camera = Camera.getCamera();

      var video:Video = new Video(camera.width, camera.height);
      video.attachCamera(camera);

      var bitmapData:BitmapData = new BitmapData(
                                            camera.width, camera.height);

            

        addChild(new Bitmap(bitmapData));

          addEventListener(Event.ENTER_FRAME, function(e:Event):void {
            bitmapData.draw(video);

            for (var x:int = 0; x < bitmapData.width; x++) {
              for (var y:int = 0; y < bitmapData.height; y++) {
                var rgb:uint = bitmapData.getPixel(x, y);
                var r:int = (rgb & 0xff0000)/0x10000;
                var g:int = (rgb & 0x00ff00)/0x100;
                var b:int = (rgb & 0x0000ff);

                var R:Number  = r/255;
                var G:Number  = g/255;
                var B:Number  = b/255;

                var max:Number  = Math.max(R,G,B);
                var min:Number  = Math.min(R,G,B);

                var H:Number ;
                var S:Number ;
                var V:Number  = max;

                var Cr:Number ;
                var Cg:Number ;
                var Cb:Number ;

                if(V==0){
                    H = max;
                  S = max;
                }
                else{
                  S = (max-min)/max;
                  Cr = (max-R)/(max-min);
                  Cg = (max-G)/(max-min);
                  Cb = (max-B)/(max-min);
                  if(max==R){
                    H = Cb-Cg;
                  }
                  else if(max==G){
                    H = 2+Cr-Cb;
                  }
                  else{
                    H = 4+Cg-Cr;
                  }
                  H = H*60;
                  if(H<0){
                    H = H+360;
                  }
                }
                if ((H > 9)&&(H < 26)) { // 白い部分を赤く塗りつぶす。
//                  bitmapData.setPixel(x, y, 0xFF0000);
                }
                else if ((H > 0)&&(H <= 9)) { // 白い部分を緑に塗りつぶす。
//                  bitmapData.setPixel(x, y, 0x00FF00);
                }
                else if ((H >= 26)&&(H < 30)) { // 白い部分を青に塗りつぶす。
//                  bitmapData.setPixel(x, y, 0x0000FF);
                }
                else{
                  bitmapData.setPixel(x, y, 0xFFFFFF);
                }
              }
                trace(H, S, V);
          }
      });
    }
  }
}

|

« 携帯サイトで動的にswfを生成する(その1) | トップページ

コメント

もし色認識をするならRGBよりHSVで判定したほうが良いのでは?

ちなみにRGBからHSVへの変換は、すごく簡単な式でできます。
以下参照
http://ja.wikipedia.org/wiki/HSV色空間

if ((p 0xC9C97F)) { //認識する色を設定

この範囲って、色というより明るいところ辺くらいの認識にしかなって
ないんじゃないかなぁ。

投稿: pools | 2010年3月14日 (日) 01時07分

確かに。

とりあえず、AS3.0を初めてさわったので、RGBがとれるか程度のソースを書いたのですが、
HSV変換して、Hの値が0~30のピクセルを抽出することで、肌色検出ができました。
(まだまだだいぶ荒いですが。。。)

YCbCrを併用することで精度を上げたり、面積を利用してノイズを除去したりと、
色々試してみようと思います。

一番大事な肌色検出を使って、どんなアプリを作るかをまだ考えてないので、
まずはそこですね。

何か進捗があったら、また書きこみます!

投稿: | 2010年3月26日 (金) 13時10分


舐められたりイジられたり、あんなに股間もてあそばれたの初めてDA!!

しかも目隠し&四つんばいで、後ろから手 コ キ攻めされる始末!!

オレのドM魂に火ぃ着いちまったじゃないかぁぁぁぁ!!!!( ;∀;)

http://rkc.proteinwater.info/8b-2ega/

投稿: オレは家畜かよ!? | 2010年7月17日 (土) 22時35分


コレまぢでやべェーーー!!!!ヽ(・∀・)ノ
http://irap.rameee.com/vl-5wi8/

おにゃのこに誘われてハメまくってたら、1週間で30万も稼いじまった!
今まで安月給の工場で働いてたのが馬鹿みたいじゃねェか!!笑

投稿: 仕事やめちまおうかな? | 2010年7月24日 (土) 12時44分


う"お"お"お"お"お"お"お"!!!!
ホ テ ル入ったら即行でぬがされて、ち○ぽイかされまくり!!
しかもザ一メソ全部ゴックン!マジすげぇ女だったぞぉぉぉ!!(苦笑)
http://welps.net/dew/cw5msbu/

投稿: ちゃべぇぇぇぇ!! | 2010年10月30日 (土) 23時52分


Gカップの迫力やべぇ!
お ○ ぬ こ突くたびに、ブルンブルンってお ぱ ぁ い揺れんの♪
このサイト教えてもらってから、マジで人生変わっちまいそうだ(^^)/
http://jkg3hx1.karl.houtyu.com/

投稿: ドドドドド・・・ | 2010年11月 6日 (土) 12時08分


看護婦はやっぱり、アソコの扱いにも慣れてるのか、アレが最高に気持ちよかったwwww

スペ●マを大量に飲まれて 5万円もらった。おいしすぎるwwwww♪♪

http://n2z8wua.pen.vecter7.net/

投稿: やびゃらコリャァァ!!! | 2010年11月20日 (土) 02時17分


寝てるだけ!!俺やってたのそれだけ!!!
相手の女に好きにさせてただけ!なのに「超イイ~!」って
そいつ一人で勝手に満足して10万ゲトした!!
これボロくね?マジ楽すぎじゃね??
http://iphone5.net/rd5/efepm1o/

投稿: トッ、れびア~ン!! | 2010年11月27日 (土) 22時59分


あ、あ、んなディープにされたら我慢ムリっす!!!!
ダイソンの吸引力?!ってかんじで根こそぎ(笑)
頂くモンはきっちり頂いたからOKスけど(* ̄ー ̄)v
http://otdp2ux.less.g-killing.net/

投稿: 部屋中に響いたかもな!!!! | 2010年11月30日 (火) 21時07分


触る前からとろっとろでしたよ、あの子のオマンチョスは!!
ぬゅぷぬゅぷ気持ち良くて5分もたなかったわww
http://4ihdkxc.less.g-killing.net/4ihdkxc/

投稿: たまんねぇ~♪ | 2010年12月 3日 (金) 18時17分


何か感じすぎたみたいで半べそにさせちったww
ちょっといぢめすぎてゴメンチャイww
http://r8g4jf1.pai.fedrick.net/
突っ込んだ瞬間ビクククゥ、とかなるしさww

投稿: うんと焦らしたら | 2010年12月 5日 (日) 11時58分


「練習したい」なんてウソだ~!!!
コイツマジで上手すぎるってば!!!
http://tsi-6m4.less.g-killing.net/
ギンギンにされて、そのまま玩ばれたぁあ!!!

投稿: ぜってーコイツ慣れてるって! | 2010年12月11日 (土) 16時27分


後ろもこんなに気持ち良かったんだなww
舌入れてきてゾクゾクッッと震えが止まらなくて失神してたわ(汗
目が覚めたら俺の息子をパックンチョ!ご褒美に中にドックンですわ(^o^)
http://eqs68km.yes.snapknap.com/

投稿: 脅威の後ろ攻め♪ | 2010年12月17日 (金) 10時23分


http://wmaz4ao.pr.teacap.net/
10万でオレが売れちったた!!!!!

つか生でするのって俺が想像してたよりすげぇ!!!!
肉マンみたいに柔らかくて温かいし、溶けるかと思ったwwwww
「テンガと同じ」とか考えてたオレバカスwww(ノ∀`*)

投稿: すげえな、マジ売れた。 | 2010年12月20日 (月) 06時03分


コレまじぱねェわ…
http://-zc8-4v.tee.navitime.me/
色んなオネエ様から誘われてご奉仕してたら、10日で50万になったしwwww

投稿: オティンコスが痛ェよww | 2010年12月24日 (金) 03時11分


http://qtm352b.on.teacap.net/
昨日このサイトで7万ゲッツしたですよ!!!!
初めはおなに一見るだけだったんですけど、ボクが我慢できなくなってきたら
笑顔で足広げてお迎えしてくれました~!(ノ*゚∀゚)ノ

投稿: 激アツなお姉たま!! | 2010年12月26日 (日) 03時45分


3日やっただけでオレの月給を越えちまった!!!!
てか働くよりコッチで食ってけるわオレwwうははwww
http://-fjfels.high.nurupopo.net/

投稿: 辞表出してきますたw | 2011年1月 1日 (土) 21時32分


諦めるもんじゃないね、人生何事もさ。
http://yqs173z.das.murapon.net/
↑余裕で魔法使いだった私も卒業できたからね。
いい体験だったし、自分に自信もつけられたよ。

投稿: 凄い!!どんどん奥まで・・・ | 2011年1月 5日 (水) 22時37分


気持ちいいとか言う次元じゃないのよこれ。
なんかもう、全身泡になったっていうか・・・
貴重な体験+ギャラで、ホントイイこと尽くしだったなぁ。
http://ju-3md6.gim.uerock.net/

投稿: ふわふわしてる感じ | 2011年1月10日 (月) 05時51分


だってねぇ、延々ぶっ続けなんだよ?4時間も。
そりゃ俺も限界来るだろ。ねえ?来るだろ?!
ホ〒ノレ出た時にはもう足月要ガクガクだったわ……
http://jasdavis.com/03/2w4psdw/

投稿: これって何の耐久レース?? | 2011年1月13日 (木) 20時05分


今まで縁なんてないと思ってた…ホントに諦めかけてたけど、
ここでとうとうチェリーさんをプレゼントできたぜ!
もう誰にも半人前なんて呼ばせねえZE!!
http://8zr24yw.pen.vecter7.net/

投稿: ありがとう…ありがとう!! | 2011年1月16日 (日) 23時22分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1165602/33709948

この記事へのトラックバック一覧です: actionscriptで画像処理:

« 携帯サイトで動的にswfを生成する(その1) | トップページ