ArUco マーカーを使用して遠近法を修正し、画像のサイズを計算しています。この画像では、マーカーの外縁間の正確な距離を知っており、それを使用して黒い四角形のサイズを計算しています。
私の問題はaruco::detectMarkers
、マーカーの真のエッジを常に識別するとは限らないことです(詳細画像に示されているように)。マーカーの角に基づいて遠近法を修正すると、画像内のオブジェクトのサイズ計算に影響を与える歪みが発生します。
のエッジ検出精度を向上させる方法はありaruco::detectMarkers
ますか?
ボード全体の縮小写真は次のとおりです。
エッジ検出の不正確さを示す左下のマーカーの詳細を次に示します。
同じマーカー ID の正確なエッジ検出を示す右上のマーカーの詳細を次に示します。
この縮小された画像ではわかりにくいですが、左上のマーカーは正確で、右下のマーカーは不正確です。
呼び出す私の関数detectMarkers
:
bool findMarkers(const Mat image, Point2d outerMarkerCoordinates[], Point2d innerMarkerCoordinates[], Size2d *boardSize) {
Ptr<aruco::Dictionary> theDictionary = aruco::getPredefinedDictionary(aruco::DICT_4X4_1000);
vector<vector<Point2f> > markers;
vector<int> ids;
aruco::detectMarkers(image, theDictionary, markers, ids);
aruco::drawDetectedMarkers(image, markers, ids);
return true; //There's actually more code here that makes sure there are four markers.
}