忍者ブログ
ADMIN / ENTRY
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
新刊カレンダー
ブログ内検索
プロフィール
HN:
Nina.A
性別:
男性
趣味:
麻雀、ラノベ、漫画
自己紹介:
MJ4や天鳳等でよく麻雀やってます。もし会ったらよろしくです。
ブログは単なるメモ帳となる予定。
C/C++勉強中の大学生雑記
<<  2024/04  >>
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
[15]  [14]  [13]  [12]  [11]  [10]  [9]  [8]  [7]  [6]  [5
2024/04/20  19:48:04
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2008/11/12  20:30:42

肌色検出にはYIQ表色系がいいらしいのでそれを使って肌色検出プログラムを作ってみた。しかし、私の部屋では背景も検出されてしまって使い物にならない。まあ壁の色が悪いんですが。実際の演習は、カメラ固定ではないので背景差分を使うことも出来ないし…あーでも演習の背景は風景だからこれでもいいのか…。とりあえず他の表色系での検出を併用する、輪郭情報を利用するなど何か他の方法を考えないといけないかな…。

以下、プログラム抜粋

void FreshDetect(IplImage* img, IplImage* detect_img, int max, int min){
    const int maxpx(img->width*img->height);
    unsigned char b, g, r, i;

    // BGR -> YIQ
    // Y = 0.2990 * R + 0.5870 * G + 0.1140 * B
    // I = 0.5959 * R - 0.2750 * G + 0.3210 * B
    // Q = 0.2065 * R - 0.4969 * G - 0.2904 * B
    for(int a = 0; a < maxpx; ++a){
        b = static_cast<unsigned char>(img->imageData[a*3+0]);
        g = static_cast<unsigned char>(img->imageData[a*3+1]);
        r = static_cast<unsigned char>(img->imageData[a*3+2]);
        i = static_cast<unsigned char>(0.5959*r - 0.2750*g + 0.3210*b);
        if( min <= i && i <= max ){
            detect_img->imageData[a*3+0] = b;
            detect_img->imageData[a*3+1] = g;
            detect_img->imageData[a*3+2] = r;
        }else{
            detect_img->imageData[a*3+0] = 0;
            detect_img->imageData[a*3+1] = 0;
            detect_img->imageData[a*3+2] = 0;
        }
    }
}

PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Powerd by NINJAブログ / Designed by SUSH
Copyright © メモ帳ブログ All Rights Reserved.
忍者ブログ [PR]