marutan
AI × ChArUco 丸太計測システム
計測画面へ

Manual

marutan 取扱説明・動作原理

marutanは、写真からAIで丸太を検出し、ChArUcoボードを既知寸法の基準として実寸を推定するWebベースの丸太計測システムです。このページでは、計測の考え方、ChArUco校正、カメラキャリブレーション、Auto / Manualの使い分けを説明します。

1. 全体の動作

写真を読み込む ↓ AIが丸太を検出 ↓ ChArUcoを検出・校正 ↓ カメラキャリブレーションがあればPnPで姿勢推定 ↓ ChArUcoの既知寸法から画像と実寸の対応を計算 ↓ 透視変換(ホモグラフィ)で位置による遠近差を補正 ↓ 丸太ごとの短辺・長辺をcmへ変換 ↓ 径級・材積を表示

ポイントは、ChArUcoを単なる「物差し」として使うのではなく、写真の中の既知寸法の平面として扱うことです。

2. ChArUcoとは

ChArUcoは、ArUcoマーカーとチェスボードを組み合わせた基準ボードです。marutanでは、ボードのマス数・マスの実寸・マーカー寸法・使用する辞書を指定して検出します。

標準設定
  • マス数:5 × 7
  • マス1辺:34.7 mm
  • マーカー1辺:20.8 mm
  • 辞書:DICT_6X6_1000
検出するもの
  • ArUcoマーカー
  • ChArUco交点
  • 交点IDと画像上の座標
  • ボード上の既知座標

3. Auto Detectの動作原理

Auto Detectでは、ユーザーが交点を一つずつクリックする必要はありません。OpenCV.jsのChArUco検出器が写真から交点を自動検出し、検出した交点IDからボード上の位置を特定します。

写真上のChArUco交点 ↓ 自動検出したID ↓ 「この点はボード上の何cm地点か」を取得 ↓ 対応する画像座標 ↔ 実座標を作る ↓ ホモグラフィを計算
基本はAuto Detectを使用してください。
ボードが十分写っていて、印刷サイズと設定値が一致していれば、通常はこちらが簡単です。

4. 4点とホモグラフィ

marutanでは、検出したChArUco交点からボードの4隅に対応する4点を自動的に選び、画像座標をボード上の実寸座標へ写す変換を作ります。

画像上 実寸上 P1────────P2 (0,0)──────(W,0) │ │ │ │ │ ChArUco │ → │ │ │ │ │ │ P4────────P3 (0,H)────(W,H) 4点の対応関係から射影変換を求める

この変換によって、画面の上側と下側で丸太が違う大きさに写るような透視(遠近)による縮尺の違いを考慮できます。

5. 地面にChArUcoを置く場合

現在の透視補正版は、ChArUcoを地面上の基準平面として使用することを想定しています。例えば次のように配置します。

カメラ ↓ ↓ 丸太 ○ │ │ ┌──────────────┐ │ ChArUco │ ← 地面上 └──────────────┘ ──────────────────────── 地面

ChArUcoと丸太が離れていても計測値は出せます。ただし、ホモグラフィが直接正確に扱えるのは基本的に同一平面上の距離です。丸太の断面は地面から浮いているため、距離が大きい場合や丸太の向きが斜めの場合には追加の誤差が生じます。

重要:「遠くても数値が出る」ことと「遠くても高精度である」ことは別です。実用距離・誤差は、実測値との比較試験で確認してください。

6. 丸太とChArUcoを同一平面に置く場合

丸太断面とChArUcoを同一平面上に配置できる場合、ホモグラフィの前提と非常によく一致します。ChArUcoと測定対象が同じ平面にあるため、透視補正を利用しやすい配置です。

カメラ ↓ ┌──────────────────┐ │ ChArUco ○ │ ← 丸太断面 │ │ └──────────────────┘ 同一平面

一方、ChArUcoが地面、丸太断面が別の高さにある場合は、同一平面ではありません。その場合は今回の地面基準方式として扱い、精度を実験的に評価する必要があります。

7. Camera Calibration

Camera Calibrationには、カメラの内部パラメータを入力します。入力した値はChArUcoのPnPによるカメラ姿勢推定に使用できます。

項目意味
fx / fy焦点距離を画素単位で表した値
cx / cy主点(画像中心付近)の座標
k1 / k2 / k3放射方向のレンズ歪み係数
p1 / p2接線方向のレンズ歪み係数
解像度に注意:キャリブレーションを行った画像とmarutanで使う画像の解像度・リサイズ条件が異なる場合、fx・fy・cx・cyはそのまま使えるとは限りません。特に画像を縮小して利用する場合は、内部パラメータを画像サイズに合わせる必要があります。

8. Manualの使い方

  1. まず丸太写真を読み込みます。
  2. ChArUco設定が、実際に撮影したボードと一致していることを確認します。
  3. Manualを押します。
  4. ChArUcoボードの外周4隅を、左上 → 右上 → 右下 → 左下の順番でクリックします。
  5. 4点が揃うと、ホモグラフィを計算して校正します。
  6. Auto Detectがうまくいかない場合の救済手段として使用します。
Manualの4点は、ボードの「外周4隅」を指定する操作です。
ChArUco交点を一つずつ大量にクリックする必要はありません。

9. 推奨する撮影方法

推奨

  • ChArUco全体を写真に入れる
  • ボードが小さくなりすぎないようにする
  • 丸太断面をできるだけ正面から撮影
  • ボードの印刷寸法を設定値と一致させる
  • レンズ・撮影解像度がキャリブレーション時と一致するようにする

避けたい条件

  • ChArUcoの一部が隠れる
  • 強い反射・ブレ・ピンぼけ
  • 極端に斜めから撮影する
  • キャリブレーション時と違う解像度で内部パラメータをそのまま使用
  • 地面上のChArUcoから大きく離れた丸太を、検証なしに高精度とみなす

10. まず行うとよい精度検証

地面にChArUcoを置いて遠距離の丸太を測る運用を想定する場合、次の試験が有効です。

ChArUco ─ 1 m ─ 丸太 ChArUco ─ 2 m ─ 丸太 ChArUco ─ 3 m ─ 丸太 ChArUco ─ 5 m ─ 丸太 各距離で 「marutanの測定値 − 実測値」 を比較する。

これにより、marutanを何m程度まで実用的に使えるか、径の誤差がどの程度になるかを定量的に評価できます。