fullseye

cad_defect_to_cad — CADMAP defect op

使い方

2-D の欠陥ラベル画像 → CAD 面上の表(面 ID / 面上の面積 / 3-D 重心)。

labels は (H, W) の整数ラベル画像(background は無視、bool マスクも 可)。ラベルごとに全画素の視線を撃ち、当たった面と、その画素が面の上で 占める実面積を積む。面積は画素数ではなく

dA = Z^2 * cosα / (fx * fy * |cosθ|)

で、cosα は光軸からの傾き、cosθ は視線と面法線のなす角。斜めから 見た面ほど 1 画素が広い面積を覆うという透視投影のヤコビアンそのもので、 ここを Z^2/(fx*fy) のままにすると傾いた面の欠陥が小さく出る(60 度で ちょうど半分になる)。

返りはラベルごとの dict の list(table sort):

min_pixels 未満の領域は落とす。当たり 0 の領域は消さずに area = 0.0, hit_fraction = 0.0 で残す — 消すと「CAD の外にあった欠陥」が 表から静かに消えるため。

巻き方向の扱いは他の op と同じ(cull_backfaces=True で閉じた内向き メッシュを検出 → 既定は自動修正 + winding_fixedstrict=TrueValueError)。正直な限界: 返るのがレコードの list なので、labels が全部背景だったり全領域が min_pixels 未満だったりして list が空に なると、修正の事実を載せる先が無い。その場合はそもそも 1 つも欠陥を写して いない(誤った数を返しようがない)。載せる先が要るなら strict=True に するか、同じ mesh で :func:cad_pixel_to_surface を 1 画素だけ引くこと。

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

同カテゴリ(defect)


Provenance: cadmap.py — CADMAP operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.