PCB ボード上の 2D バーコードの検出に取り組んでいます。環境は Visual Studio 2012 です。
いくつかの問題が発生したため、2D バーコード イメージを正常に除外できません。
図の読み込み: 元の画像サイズは 1600*1200 です。
Figure を読み込んで、次の手順で一連の処理を開始します。
1. 自動しきい値法によるしきい値の検索。
2. イメージにバイナリしきい値を適用します。
3. イメージを明確にするためのオープニングを行います。
オープニング: dst = open(src,element) = dilate(erode(src, element))
4. 正方形以外の長方形をフィルターで除外します。 次に、正方形のコレクションを取得できます。次の画像のように、手順 1 ~ 4 の後、画像上に正方形を見つけることができます。
5. 同様の Data Matrix Template を使用して、ヒストグラム分析によってそれぞれ正方形と比較します。
5.1 ヒストグラムの計算
void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** range, bool uniform=true, bool Accumulate=false );
5.2 配列の値の範囲を正規化する
void normalize( InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray());
5.3 相関のある 2 つのヒストグラムを比較します。
double compareHist( InputArray H1, InputArray H2, CV_COMP_CORREL );
6. 処理後、正方形のコレクションから正しい画像をフィルタリングできません。
6.1 ヒストグラムのビンを 256 から 64/32 に調整しましたが、ロバスト性のない結果、相関値は非常に低く、0.5 未満です。
6.2 また、EMD (Earth Mover's Distance) を使用して 2 つの正方形の類似性を推定しようとしましたが、この問題は解決されません。
[[質問]]: 検出方法を改善するための提案を共有できますか?