2016-04-24 17 views
1

私はすでに肌の色に関するいくつかの質問を見てきましたが、rgbaの肌の色の範囲は正確ではありませんでした。誰かが中年のヨーロッパ人のために、例えば最小のrgba色が何であるかを伝えることができますか?rgbの肌の色の範囲は?

//Here should be scin min max rgba range 
static CvScalar min = cvScalar(0, 0, 130, 0);//BGR-A 
static CvScalar max= cvScalar(140, 110, 255, 0);//BGR-A 

public static void main(String[] args) { 
    //read image 
    IplImage orgImg = cvLoadImage("colordetectimage.jpg"); 
    //create binary image of original size 
    IplImage imgThreshold = cvCreateImage(cvGetSize(orgImg), 8, 1); 
    //apply thresholding 
    cvInRangeS(orgImg, min, max, imgThreshold); 
    //smooth filter- median 
    cvSmooth(imgThreshold, imgThreshold, CV_MEDIAN, 13); 
    //save 
    cvSaveImage("threshold.jpg", imgThreshold); } 

だから私はちょうどここにRGBA値を指定する必要があります。

私のコードは次のようです。

+0

なぜ測定しないのですか?写真を撮って、さまざまな肌の色のヒストグラムを描く – Maljam

+0

@Maljamこれはどうやって読むことができますか?どのように私は必要な色のみのヒストグラムを作成するのですか? –

+0

デジタル写真の束を選択し、写真の「スキン」の領域を手動で指定し、RGB値を抽出し、ヒストグラムを作成する必要があります。それはちょうどプログラミングです...プラス手作業の多く。 –

答えて

3

実際の答えはありません。肌の色調は非常に(中年の白人男性の場合でも)可変であり、照明効果(過度露出、低露出、色付き入射光)を投射すると、の皮膚のみを区別することはできませんピクセルのRGB値について

私の助言は、最初の近似を賢明なものとして選び、パラメータを調整することです。そして、は、がコンテキストを考慮に入れずに正確に皮膚を検出できると期待しています...何とかして。

グーグル「スキントーンカラーチャートrgb」から取得したカラーチャートの1つを見ることで、最初に近似することができます。お好きなところをお選びください...


@Stephen C uは「賢明な第一近似を選択して、パラメータを微調整する」とはどういう意味ですか?ただパレットから1色を選んで、それでは?

(照明効果の問題は無視します)RGBの色は3次元空間を定義しているので、色が「肌」色であるその領域の領域があることを提案します。問題は、その地域の妥当な近似値を得ることです。「肌」色調のカラーチャートから始まり、3次元でプロットし、それらを囲むシンプルな3次元船体を見つけ出すことができます。目に見えない色を囲みます。次に、船体に基づいて "肌検出"を試し、それに応じて調整してください。