cad_defect_to_cad — CADMAP defect op

• 데이터 종류: mesh × labels → table

• 호출: import fullseye as fs; fs.ledger.cad_defect_to_cad(mesh, labels, K=None, R=None, t=None, cull_backfaces=True, min_pixels=1, background=0, strict=False)(구현을 직접 호출하려면 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_fixed, strict=True이면 ValueError). 정직한 한계: 반환되는 것이 레코드의 list이므로, labels 가 전부 배경이거나 모든 영역이 min_pixels 미만이어서 list가 비게 되면, 수정 사실을 실을 곳이 없다. 그 경우는 애초에 1개도 결함을 찍지않은 것이다(틀린 수를 반환할 수가 없다). 실을 곳이 필요하면 strict=True로하거나, 같은 mesh로 cad_pixel_to_surface를 1 화소만 조회할 것.

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

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

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

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

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

• defect_to_cad — py -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.