OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
検出システムのカスタマイズとデバッグ

チャートの検出には多くのハイパーパラメータが関与する。デフォルト値は平均的なケースで検出を最大化するように選ばれている。しかしこれらはあなたの用途には最適でないかもしれない。これらの値は特定の用途に合わせて精度を高めるように設定できる。そのためには、DetectorParametersのインスタンスを作成する必要がある。

mcc::Ptr<DetectorParameters> params = mcc::DetectorParameters::create();
  • mcc:: が重要である。

これには多くの値が含まれており、完全な一覧はDetectorParametersのドキュメントで確認できる。このチュートリアルではmaxErrorの値を扱う。他の値も同様に設定できる。

maxError は検出においてどれだけの誤差を許容するかを制御する。たとえば一部のチャートセルが遮蔽されている場合、誤差が増加する。デフォルト値はある程度の遮蔽への許容を持っており、maxErrorを増やす(または減らす)と、この許容範囲が増加(または減少)する。

その値は次のように簡単に変更できる。

params.maxError = 0.5;

これを検出システムで使用するには、process関数に渡す必要がある。

Ptr<CCheckerDetector> detector = CCheckerDetector::create();
detector->process(image, chartType, params = params);

値をいじるのはこのように簡単である。ただし注意点がある。検出パイプラインには多くの部分がある。単純にこのように実行しただけでは、この変更の効果を単独で確認できない。先行する部分でカラーチェッカーの候補が一つも検出されておらず、その結果maxErrorの値を変更しても効果がないという可能性もある。幸い、OpenCVはこれに対する解決策を提供している。コードに複数の画像を出力させ、それぞれがパイプラインの一部分の効果を示すようにできる。これはデフォルトでは無効になっている。

  • これはソースからコンパイルしている場合にのみ使用できる。ソースからビルドできず、それでもこの機能が必要な場合は、OpenCVのリポジトリでissueを立てることを検討してほしい。

これを行うには: ファイル opencv/modules/objdetect/include/opencv2/objdetect/mcc_checker_detector.hpp を開く。先頭付近に次の行がある。

// #define MCC_DEBUG

この行のコメントを外してopencvを再ビルドする。その後、検出器を実行するたびに、パイプラインの各部分に対応する複数の画像が表示される。また、最初にThresholding Outputが表示され、次にいくつかの画像が続き、再び同じ画像に対応するThresholding Outputが前回とは少し異なる形で表示されるといった繰り返しが見られることがある。これは、カラーチェッカーのさまざまな可能なサイズに合わせて調整するために、内部で異なるパラメータを使って画像が複数回しきい値処理されるためである。