From 0ec0b6849268a07e686f496164222cd4954adb00 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 1 Nov 2026 23:19:44 +0900 Subject: [PATCH] =?UTF-8?q?fix(642):=20=EC=A0=90=EC=A7=84=20TIN=20?= =?UTF-8?q?=EC=B2=98=EC=A7=90=20=EC=B9=B8=20=EC=94=A8=EC=95=97=20=EB=AC=B6?= =?UTF-8?q?=EC=9D=8C=20=EA=B1=B7=EC=9D=8C=20=C2=B7=20=EB=A9=B4=20=EC=9C=84?= =?UTF-8?q?=20=ED=8C=90=EC=A0=95=200.12=20m=20=E2=80=94=20=EA=B2=80?= =?UTF-8?q?=EC=82=AC=EC=A0=90=20RMS=201.008=20=E2=86=92=200.496=20m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 굵게 → 가늘게 다짐에서 「간격 절반보다 높이 뜬 칸 제외」 묶음을 걷음 — 급한 볼록 비탈이 계속 처져 implicit 검사점 RMS 가 CSF(0.587)보다 나빴음 - 마지막 판정 면 위 문턱 0.2 → 0.12 m — 덤불 점을 덜 받음 - 용화(분류 숨김) 업체 분류 대비 맞음 83.4 · 놓침 16.6 · 잘못 넣음 11.8 % · implicit 검사점 RMS 0.496 m · 4,900 만 점 205 초 · +1.2 GB Co-Authored-By: Claude Opus 5.5 --- B04_PreProcess/B04_PreProcess_Engine_Filter_PTD.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/B04_PreProcess/B04_PreProcess_Engine_Filter_PTD.py b/B04_PreProcess/B04_PreProcess_Engine_Filter_PTD.py index c5a1cc2c1..d55c209ba 100644 --- a/B04_PreProcess/B04_PreProcess_Engine_Filter_PTD.py +++ b/B04_PreProcess/B04_PreProcess_Engine_Filter_PTD.py @@ -7,7 +7,7 @@ 굵게 → 가늘게: 후보가 모두 면 위로 뜬 칸(면이 처짐)에 반 간격 씨앗을 더해 다시 다짐. 끝에 둘레보다 최대 거리 넘게 튀거나 꺼진 외딴 꼭짓점(가시 · 잡점)을 걷음. 3. 마지막 지면 TIN 을 후보 칸 격자로 굳히고 모든 점을 면까지 연직 거리로 판정 — - 면 아래 최대 거리 · 면 위 0.2 m(꼭짓점 = 칸 최저라 땅은 면 곁 · 위는 덤불). + 면 아래 최대 거리 · 면 위 0.12 m(꼭짓점 = 칸 최저라 땅은 면 곁 · 위는 덤불). 장면 셋(DJI Terra 꼴) = 평지 3° · 0.3 m / 완경사 6° · 0.5 m / 급경사 10° · 0.7 m · 기본 급경사(임도). @@ -157,7 +157,7 @@ def filter_ptd( seed_spacing: float = SURFACE_PTD_SEED_SPACING_M, max_angle: float | None = None, max_distance: float | None = None, - above_distance: float = 0.2, + above_distance: float = 0.12, candidate_cell: float = 0.5, max_candidates: int = 3_000_000, max_iterations: int = 60, @@ -210,8 +210,7 @@ def filter_ptd( pending = np.flatnonzero(~is_ground) dz[pending] = _tin_dz(cand[is_ground], cand[pending]) gx, gy, pick = _lowest_per_cell(np.column_stack([cand[:, :2], dz]), origin, spacing) - # 간격 절반보다 높이 뜬 칸 = 땅이 안 보이는 수관 · 덤불 → 씨앗으로 안 씀 - sag = pick[(dz[pick] > max_distance) & (dz[pick] <= spacing / 2)] + sag = pick[dz[pick] > max_distance] if len(sag): is_ground[sag] = True _densify(cand, is_ground, max_angle, max_distance, max_iterations)