私は同様の質問を見つけました emgu Calculate histogram with matrices ...しかし、いくつかのステップがありません!ビンの値を浮動小数点配列のdensehistogramにロード
私はSQL Serverのvarbinary型(最大)に保存されているいくつかのイメージの一つの画像を比較しようとしているEmgu 3/C#の/ SQLサーバー2014
。
いくつかの画像(オブジェクト)が類似しているかもしれないが色が異なるため、ヒストグラムを比較することです。比較アルゴリズムでは、比較するオブジェクトの色も考慮する必要があります。
私はここの他の記事に基づいて一緒にいくつかのコードを入れてうまく管理しました、と私は画像に基づいてヒストグラムを計算する場合、私は、首尾よくそれをやってすることができるよ:
histBlueSource.Calculate(new Image<Gray, byte>[] { imgBlueSource }, true, null);
histBlueTarget.Calculate(new Image<Gray, byte>[] { imgBlueTarget }, true, null);
double cBlue = CvInvoke.CompareHist(histBlueSource, histBlueTarget, HistogramCompMethod.Correl);
ため、パフォーマンスの問題のヒストグラムからBinValuesを抽出し、SQL Serverデータベースに保存してDenseHistogramに戻すことを考えました。
私は正常にbinvaluesを抽出します、私はシリアライズ
//** problem may be here - dont know if i should SAVE/LOAD bin value to a 1d FLOAT[256]
float[] BlueHist = new float[256];
BlueHist = histBlue.GetBinValues();
SQL Serverに保存します。私は、SQL Serverからの読み取り、deserializeと私のビンの値を正確に抽出されたものとフロート[256]に戻って取得することができます。バックDensehistogramにデータをロードするために
私はこれをやっている:
DenseHistogram histBlue = new DenseHistogram(256, new RangeF(0.0f, 255.0f));
BlueHist = (float[])bformatterBlue.Deserialize(memStreamBlue);
//**Other problem may be here
Matrix<float> mtx = new Matrix<float>(BlueHist);
を私は行列データは{フロート[256,1]}であることを奇妙見つけます。 binvaluesの値は[0,0]から[255,0]にロードされます。
私は最後のステップ
histBlue.Calculate(new Matrix<float>[] { mtx }, false, null);
を行うと、問題がヒストグラムbinvaluesが正しくロードされないで、のみ[0] 135の値と他の人を持っている[255]は0
です誰かが同じことをするためにこれや他の提案をお願いしますか?