cad_defect_to_cad — CADMAP defect op

데이터 종류: mesh × labelstable

호출: import cadmap; cadmap.cad_defect_to_cad(mesh, labels, K=None, R=None, t=None, cull_backfaces=True, min_pixels=1, background=0, strict=False)(또는 opscadmap.get("cad_defect_to_cad"))

사용법

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):

• `label` ラベル値。

• `n_pixels` そのラベルの画素数。

• `n_hit CAD に当たった画素数。hit_fraction` = その比。

• `area` 面上の実面積(mesh の長さ単位の 2 乗)。当たった画素分

だけの和で、当たらなかった画素は足さない

• `area_naive Z^2/(fx*fy)` だけの和(= 傾きを無視した値)。両方

返すのは、傾き補正が効いているかを利用者が自分で確かめられるようにする

ため。

• `face_ids` 当たった面の昇順一意リスト(int64 配列)。

• `face_areas face_ids` と同じ並びの面ごとの面積。

• `centroid 面積重みの 3-D 重心(世界座標)。当たり 0 なら NaN`。

• `depth_mean 当たった画素の平均 Z。当たり 0 なら NaN`。

• `winding_fixed` bool — 内向きに巻かれた閉メッシュを検出して直したか。

全レコードに同じ値が入る(mesh 単位の性質なので)。

`min_pixels 未満の領域は落とす。当たり 0 の領域は**消さずに** `area =

0.0`, hit_fraction = 0.0` で残す — 消すと「CAD の外にあった欠陥」が

表から静かに消えるため。

巻き方向の扱いは他の op と同じ(`cull_backfaces=True` で閉じた内向き

メッシュを検出 → 既定は自動修正 + `winding_fixedstrict=True` で

`ValueError)。**正直な限界**: 返るのがレコードの list なので、labels`

が全部背景だったり全領域が `min_pixels` 未満だったりして list が空

なると、修正の事実を載せる先が無い。その場合はそもそも 1 つも欠陥を写して

いない(誤った数を返しようがない)。載せる先が要るなら `strict=True` に

するか、同じ mesh で :func:cad_pixel_to_surface を 1 画素だけ引くこと。

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

defect_to_cadpy -3.11 examples/defect_to_cad.py

타입이 이어지는 다음 연산자(table 를 입력으로 받는 것)

같은 카테고리(defect)


*Provenance: cadmap.py — CADMAP 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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