0

布の色などの柔らかな特徴に基づいて、人物を再識別したいプロジェクトを作成しています。そのため、画像のHSV と RGB のヒストグラムを取得し、後で比較して同一人物かどうかを確認したいと考えています。

これまでに作成したコード:

//This is small part of the project
        float[] hueHists=new float[255];
        float[] satHists = new float[255];


        DenseHistogram dh = new DenseHistogram(255, new RangeF(0, 255));
        DenseHistogram dh2 = new DenseHistogram(255,new RangeF(0, 255));
        Image<Hsv, byte> hsvImage = image.Convert<Hsv, byte>();

        for (int i = 0; i < 8; i++)
        {
            hsvImage.ROI = new Rectangle(0, i * 16, 64, 16);

            Image<Gray, byte>[] channels = hsvImage.Copy().Split();
            Image<Gray, byte> hue = channels[0];  
            Image<Gray, byte> sat = channels[1];  


            dh.Calculate<byte>(new Image<Gray, byte>[] { hue }, true, null);
            dh2.Calculate<byte>(new Image<Gray, byte>[] { sat }, true, null);

            float[] huehist = dh.GetBinValues();
            float[] sathist = dh2.GetBinValues();

            if(i==0)
            {
                huehist.CopyTo(hueHists,0);
                sathist.CopyTo(satHists,0);
            }
            else
            {
                hueHists = hueHists.Concat<float>(huehist).ToArray<float>();
                satHists = satHists.Concat<float>(sathist).ToArray<float>();
            }

        }

また、完全な画像の HSV および RGB ヒストグラムを抽出するか、画像のセグメンテーション後に抽出する必要があります。

[編集] personA のヒストグラムを抽出し、他の人のヒストグラムと照合しました (彼/彼女が personA であるかどうかを確認するため)。 問題 問題は精度にあります。私のプログラムは同じ人を正しく見つけることができません。また、良い方法をお聞きしたいのですが...

opencv 担当者からのヘルプも大歓迎です

よろしくお願いします。

4

0 に答える 0