초기 커밋: 스테이션(측점) 기반 주행영상 플레이어

- 클라이언트(React/Vite): Video.js 플레이어, 하단 스테이션바, POI/구조물 영상 오버레이, 카메라 파라미터 보정, 미니맵/RoutePanel
- 서버(Express): Range 스트리밍, HLS 변환, 프레임 추출, tus 업로드, 주석 API
- 최근 작업: 스테이션바 종점역 표출/양끝 정렬/미도착(재생불가) 표시, POI 라벨 '구분' 우선·컴팩트 팝업·겹침제외 토글·동일좌표 다중행, 진행방향(상/하) 우선 표출, 커서 배지 크기·픽셀 떨림 개선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-25 16:37:57 +09:00
co-authored by Claude Opus 4.8
commit 78fc090360
214 changed files with 27897 additions and 0 deletions
@@ -0,0 +1,313 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>발명신고서 — 측점표고 기반 영상정합(B) · 슬랜트거리 보존 위치보정(C)</title>
<style>
:root{
--bg:#ffffff; --ink:#1a1d23; --muted:#5b6472; --line:#d8dde6; --soft:#f4f6f9;
--accent:#1c5fd6; --accent2:#0a7d52; --warn:#b4690e; --bad:#c0362c;
--chip:#eef2f8;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#e9edf2;color:var(--ink);
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Noto Sans KR",Roboto,"Malgun Gothic",sans-serif;
line-height:1.72;font-size:14.5px}
.page{max-width:900px;margin:24px auto;background:var(--bg);padding:54px 60px 80px;
box-shadow:0 2px 18px rgba(0,0,0,.12);border-radius:4px}
.doc-head{border-bottom:3px solid var(--ink);padding-bottom:16px;margin-bottom:8px}
.doc-head .t1{font-size:13px;letter-spacing:.3em;color:var(--muted);font-weight:700}
h1{font-size:25px;margin:8px 0 4px;line-height:1.35}
.doc-head .sub{color:var(--muted);font-size:13.5px}
.formrow{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:16px 0}
.formrow .cell{flex:1 1 50%;display:flex;border-bottom:1px solid var(--line)}
.formrow .cell .k{flex:0 0 120px;background:var(--soft);padding:7px 12px;font-weight:600;font-size:12.5px;color:var(--muted);border-right:1px solid var(--line)}
.formrow .cell .v{padding:7px 12px;font-size:13px;flex:1}
.fill{color:var(--bad);font-weight:600}
nav{background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:10px 16px;margin:18px 0 26px;font-size:12.5px}
nav b{color:var(--muted);font-weight:700;margin-right:8px}
nav a{color:var(--accent);text-decoration:none;margin-right:14px;white-space:nowrap}
nav a:hover{text-decoration:underline}
section{margin:30px 0;scroll-margin-top:14px}
h2{font-size:19px;margin:0 0 6px;padding:7px 0 7px 12px;border-left:5px solid var(--accent);background:linear-gradient(90deg,var(--soft),transparent)}
h2.inv{border-left-color:var(--accent2)}
h3{font-size:15.5px;margin:20px 0 6px;color:#2a3340}
h4{font-size:13.5px;margin:14px 0 4px;color:var(--muted);letter-spacing:.02em}
p{margin:9px 0}
.lead{color:var(--muted)}
ul,ol{margin:8px 0;padding-left:22px}
li{margin:5px 0}
code{background:#f0f3f8;border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:12.5px;
color:#0d47a1;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace}
pre{background:#0f1320;color:#dfe6f2;border-radius:8px;padding:14px 16px;overflow-x:auto;font-size:12.5px;
font-family:"SFMono-Regular",Consolas,Menlo,monospace;line-height:1.6;margin:10px 0}
pre .c{color:#7f8aa3}
table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
th,td{border:1px solid var(--line);padding:8px 11px;text-align:left;vertical-align:top}
th{background:var(--soft);font-weight:600;color:#2a3340}
.callout{border-left:4px solid var(--warn);background:#fdf6ec;padding:11px 15px;border-radius:0 8px 8px 0;margin:14px 0;font-size:13.5px}
.callout.bad{border-color:var(--bad);background:#fcefee}
.callout.ok{border-color:var(--accent2);background:#ecf7f1}
.callout.key{border-color:var(--accent);background:#eef3fc}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--chip);color:var(--accent);border:1px solid #cfe0f7}
.tag.g{background:#e6f5ee;color:var(--accent2);border-color:#bfe6d2}
.num{display:inline-block;min-width:26px;height:26px;line-height:26px;text-align:center;background:var(--accent);color:#fff;border-radius:50%;font-weight:800;font-size:12px;margin-right:8px}
.num.g{background:var(--accent2)}
.fig{border:1px dashed #b9c2d0;background:var(--soft);border-radius:8px;padding:12px 16px;margin:12px 0;font-size:12.8px;color:var(--muted)}
.fig b{color:var(--ink)}
footer{margin-top:50px;border-top:1px solid var(--line);padding-top:16px;color:var(--muted);font-size:12px}
.chk{color:var(--warn);font-weight:600}
@media print{body{background:#fff}.page{box-shadow:none;margin:0;max-width:100%;padding:0 8mm}nav{display:none}}
</style>
</head>
<body>
<div class="page">
<div class="doc-head">
<div class="t1">발 명 신 고 서 · INVENTION DISCLOSURE</div>
<h1>① 측량 측점 표고 기반 DEM-free 영상정합 방법<br>② 슬랜트거리 보존 역투영에 의한 단일 제스처 위치보정</h1>
<div class="sub">변리사(특허사무소) 제출용 발명 설명자료 — 명세서·청구범위 작성 기초자료 · 대상 시스템: GhiVideo</div>
</div>
<!-- 행정 정보 (출원인이 채울 것) -->
<div class="formrow">
<div class="cell"><div class="k">발명자</div><div class="v"><span class="fill">[성명/생년/주소 기재]</span></div></div>
<div class="cell"><div class="k">출원인</div><div class="v"><span class="fill">[개인/법인/공동출원 — 권리귀속 확정 후 기재]</span></div></div>
<div class="cell"><div class="k">작성일</div><div class="v">2026-06-23</div></div>
<div class="cell"><div class="k">발명 완성일</div><div class="v"><span class="fill">[코드 최초 동작 확인일 기재]</span></div></div>
<div class="cell" style="flex-basis:100%"><div class="k" style="flex-basis:120px">공개 여부</div><div class="v"><span class="fill">[미공개 / 공개일·공개처 기재]</span> &nbsp;<b>출원 전 외부공개·시연·납품·논문 발표 여부를 반드시 확인(신규성 직결)</b></div></div>
</div>
<div class="callout bad"><b>⚠️ 출원 전 필수 확인 2가지.</b>
<b>(1) 신규성</b> — 이 발명을 출원 전에 외부에 공개(시연·납품·논문·블로그·판매)했다면 신규성 상실 위험. 공개 사실이 있으면 변리사에게 즉시 고지.
<b>(2) 권리귀속</b> — 발주·용역 과제라면 발명자(개인)와 출원인(회사/발주처)의 권리 귀속, 직무발명·공동출원 여부를 출원 전에 정리.</div>
<nav>
<b>목차</b>
<a href="#field">기술분야</a>
<a href="#bg">배경·종래문제</a>
<a href="#prior">선행기술 조사</a>
<a href="#invB">발명 ① (B)</a>
<a href="#invC">발명 ② (C)</a>
<a href="#figs">도면 목록</a>
<a href="#claimpts">청구 포인트</a>
<a href="#todo">변리사 인계 체크리스트</a>
</nav>
<!-- 기술분야 -->
<section id="field">
<h2>1. 기술분야</h2>
<p>본 발명은 이동체(드론·차량)가 철도·도로 노선을 따라 촬영한 <b>주행영상</b> 위에 측량 측점·시설물(POI)·선로중심선 등
<b>지리객체를 실시간 정합(증강현실 오버레이)</b>하여 표시하는 영상 플레이어 기술에 관한 것이다. 구체적으로,
① 대상의 표고/수치표고모델(DEM)이 없는 상황에서 정합 정확도를 확보하는 <b>고도 정합 방법</b>(발명 B)과,
② 정합된 객체의 위치 오차를 사용자가 화면에서 <b>단일 드래그 제스처로 3차원 보정</b>하는 방법(발명 C)에 관한 것이다.</p>
</section>
<!-- 배경 -->
<section id="bg">
<h2>2. 배경기술 및 종래기술의 문제점</h2>
<p>프레임별 카메라 위치·자세(GPS/IMU)를 이용해 GIS 객체를 영상에 투영하는 정합 기술은 공지되어 있다(아래 §3 선행기술 참조).
그러나 철도·도로 시설점검용 주행영상 정합에서는 다음의 구체적 문제가 남는다.</p>
<h4>문제 1 — 대상 표고/DEM 부재로 인한 수직 정합 오차 (발명 B가 해결)</h4>
<ul>
<li>화면에 표시할 시설물(POI)은 주소 기반 데이터가 많아 <b>표고(높이) 값이 없는</b> 경우가 대부분이다.</li>
<li>표고가 없으면 카메라와 대상 간 수직각(부각)을 산출할 수 없어, 종래기술은 <b>지면을 평평한 면(flat plane)으로 가정</b>한다.</li>
<li>노선은 실제로 기복이 있어(예: 정표고 41.6m→57.5m로 상승), 평면 가정 시 라벨이 화면 밖/지면 아래로 이탈한다.
실측에서 잘못된 고도(≈0) 사용 시 <b>부각오차가 42.7°</b>에 달했다.</li>
<li>별도 DEM/LiDAR를 취득·정합하는 것은 비용·datum 정합 부담이 크다.</li>
</ul>
<h4>문제 2 — 정합 객체 위치오차의 3차원 수동보정 곤란 (발명 C가 해결)</h4>
<ul>
<li>주소 지오코딩 POI는 ±수십 m 오차가 있어, 정합 후에도 객체가 실제 위치와 어긋난다.</li>
<li>사용자가 화면에서 드래그로 고치려 해도, <b>2D 화면 이동만으로는 카메라로부터의 거리(깊이)를 결정할 수 없다</b>(깊이 모호성).
따라서 종래에는 수평위치와 높이를 따로 조정하거나, 별도의 깊이맵(LiDAR)을 요구한다.</li>
<li>종래 정합 연구는 사용자 수동보정을 "부담이 커서 비현실적"이라며 포기하기도 한다.</li>
</ul>
</section>
<!-- 선행기술 -->
<section id="prior">
<h2>3. 선행기술 조사 결과 (요약)</h2>
<p class="lead">글로벌(Google Patents·USPTO·Esri·논문) 및 한국(Google Patents KR) 조사 후 교차검증한 결과. 상세·출처는
별첨 <a href="특허_스테이션기반_주행영상_플레이어.html">특허 발굴 기술문서 §6</a> 참조. <b>KIPRIS 전문검색은 변리사 단계에서 보강 필요.</b></p>
<table>
<thead><tr><th style="width:24%">선행기술</th><th>개시 내용</th><th style="width:30%">본 발명과의 차이(신규 지점)</th></tr></thead>
<tbody>
<tr><td>Esri ArcGIS Pro FMV · US9996976B2 · Sensors 2018(PMC6263998)</td>
<td>프레임별 카메라자세로 GIS 객체를 영상에 정합(AR 오버레이)하는 일반 기술 — <b>공지</b></td>
<td>"정합 일반"은 공지. 본 발명은 그 위에서 <b>고도원(B)·보정수단(C)</b>이라는 구체적 개량.</td></tr>
<tr><td>Sensors 2018 (DEM-free 처리)</td>
<td>DEM 없을 때 <b>평면으로 대체</b>, 지오이드/정표고 변환 안 함</td>
<td><b>측점 정표고 수열을 지면모델로 전용 + 지오이드 datum 정합</b> 미개시 → 발명 B 신규.</td></tr>
<tr><td>Google US9188444B2 ("3D object positioning in street view")</td>
<td>스트리트뷰에서 객체 드래그→lat/lon, 단 <b>저장된 픽셀별 depth map(LiDAR) 조회</b>로 깊이 결정. <b>한국 패밀리 없음</b></td>
<td>본 발명은 <b>depth map 없이 슬랜트거리 보존</b>으로 깊이 해소 → 발명 C 신규.</td></tr>
<tr><td>KR102422292B1 (김동욱)</td>
<td>역투영 + 사용자보정이나 <b>두 영상 + 높이값 반복조정</b>으로 깊이 결정</td>
<td>본 발명은 <b>단안·단일 제스처·거리보존</b> → 메커니즘 상이.</td></tr>
<tr><td>KR102268318B1(트라웍스)·KR100411587B1(ETRI)·ENSCO VTW</td>
<td>위치 동기 비교재생 / 위치→영상 색인 / milepost 영상색인</td>
<td>발명 B·C와 직접 관련 낮음(이들은 후보 A 관련 — 본 신고서 범위 외).</td></tr>
</tbody>
</table>
</section>
<!-- 공통: 투영 파이프라인 -->
<section>
<h2>4. 공통 기반 — 영상정합 투영 파이프라인</h2>
<p>발명 B·C가 공통으로 사용하는 좌표 변환(검증 완료). 발명자 자체 구현이며, Python 원본과 1:1 일치 검증됨.</p>
<pre><span class="c"># 입력: 프레임별 드론 위치(lat/lon/alt)·자세(yaw/pitch/roll), 대상(lat/lon/z)</span>
1) WGS84(lat,lon) → EPSG:5186 TM(easting,northing[m]) <span class="c"># proj4</span>
2) rel = target_ENU drone_ENU <span class="c"># 상대벡터[m]</span>
3) R_b2w = Rz(-yaw)·Rx(pitch)·Ry(roll), R_w2c = R_align·R_b2wᵀ
4) (Xc,Yc,Zc) = R_w2c · rel <span class="c"># 카메라좌표</span>
5) px = 0.5 + (Xc/Zc)·(f/sensorW), py = 0.5 + (Yc/Zc)·(f/sensorH) <span class="c"># 핀홀 투영</span></pre>
<p class="lead">실시 카메라(검증 데이터): 3840×2160, 29.97fps(=30000/1001), focal 24mm, sensor 36×20.25mm, pitch 29.8°(고정).</p>
</section>
<!-- 발명 B -->
<section id="invB">
<h2 class="inv"><span class="tag g">발명 ①</span> 측량 측점 표고 기반 DEM-free 영상정합 방법 <span class="tag g">특허성: 상</span></h2>
<h3>4-1. 해결하고자 하는 과제</h3>
<p>대상(POI)의 표고/DEM이 없을 때, 별도 DEM 취득 없이 <b>노선 기복을 반영한 지면고도</b>를 부여하여 카메라 고도와
datum을 정합함으로써 수직 정합오차를 제거한다.</p>
<h3>4-2. 해결수단 (구성)</h3>
<ol>
<li><span class="num g">1</span><b>측점 표고 수열 보유:</b> 노선을 따라 실측된 복수의 측점에 대해 위치(lat/lon)와
<b>정표고(EL, 해수면 기준)</b>를 보유한다. (실데이터: 측점 47개, 정표고 41.6→57.5m로 노선 진행에 따라 가변)</li>
<li><span class="num g">2</span><b>최근접 측점 지면고도 선택:</b> 표고 미상 대상에 대해, 노선상 <b>가장 가까운 측점의 정표고</b>
그 대상의 지면고도로 채택한다. 프레임 진행에 따라 최근접 측점이 바뀌므로 <b>지면고도가 노선 기복을 따라 갱신</b>된다.</li>
<li><span class="num g">3</span><b>지오이드 datum 정합:</b> 정표고(EL)에 <b>지오이드고 N</b>을 가산하여 타원체고로 변환,
드론/차량 GPS의 타원체고와 동일 기준으로 맞춘다. <code>rel[2] = (targetZ + N) droneAlt</code></li>
<li><span class="num g">4</span><b>정합 투영:</b> datum 정합된 고도로 §4 파이프라인을 수행해 화면에 표지를 중첩한다.</li>
<li><span class="num g">5</span><b>(종속) 대상별 표고보정 핸들:</b> 건물높이·지반차 보정을 위한 대상 전용 오프셋(poiZOffset)을 별도 제공하되,
측점·중심선의 정확 표고에는 미적용한다.</li>
</ol>
<h4>핵심 수식·실시값</h4>
<pre><span class="c"># 지오이드 보정(전체 대상 공통)</span>
타원체고 = 정표고(EL) + 지오이드고(N) <span class="c"># 대전지역 N ≈ 25.8m (검증)</span>
rel_up = (targetZ + N) droneAlt_ellipsoidal
<span class="c"># 검증(측점 157K900, frame0, 수평거리 91.3m)</span>
정표고≈0 사용 → 수직차 −84.2m, 부각 42.7° ❌
정표고 41.5 사용 → 수직차 42.7m, 부각 25.1°
정표고+N≈67 사용 → 수직차 −17.7m, 부각 11.0° ✅ (드론 rel_alt 16.85m와 일치)</pre>
<h3>4-3. 효과 (정량·검증됨)</h3>
<table>
<thead><tr><th>지표</th><th>종래(평면/표고0)</th><th>본 발명</th><th>비고</th></tr></thead>
<tbody>
<tr><td>부각오차</td><td>42.7°</td><td><b>11.0°</b></td><td>드론 실측 고도와 일치</td></tr>
<tr><td>지면고도 정확도</td><td></td><td><b>구글어스 DEM 대비 0.2m</b></td><td>신대천교: 측점방식 41.26m vs 구글 41.4566m (≈0.13°, 2160p에서 ~6px)</td></tr>
<tr><td>DEM 취득비용</td><td>DEM 필요</td><td><b>불필요</b></td><td>측량 산출물(측점) 재활용</td></tr>
</tbody>
</table>
<h3>4-4. 실시예</h3>
<p>(하행)회덕–대전조차장 구간, 드론 SRT 텔레메트리(프레임별 lat/lon/alt/yaw/pitch/roll) + 측량 측점 CSV(<code>Z좌표_한국</code>=정표고)
+ POI CSV(표고 없음). 측점 정표고를 지면모델로, 지오이드 25.8m 가산하여 정합 → 부각 11° 달성, 구글 DEM과 0.2m 일치.
공개 DEM(SRTM 30m)보다 측량 측점이 더 정밀하여 회귀 위험도 없음.</p>
</section>
<!-- 발명 C -->
<section id="invC">
<h2><span class="tag">발명 ②</span> 슬랜트거리 보존 역투영에 의한 단일 제스처 위치보정 <span class="tag">특허성: 상</span></h2>
<h3>5-1. 해결하고자 하는 과제</h3>
<p>정합된 객체가 지오코딩 오차로 어긋났을 때, 사용자가 <b>단일 화면 드래그</b>로 객체의 수평·수직(3D) 위치를
동시에 보정하도록 한다. 단, 별도 깊이맵(LiDAR)에 의존하지 않는다.</p>
<h3>5-2. 해결수단 (구성)</h3>
<ol>
<li><span class="num">1</span><b>슬랜트거리 보존:</b> 객체 표지의 드래그 개시 시점에 카메라–객체 간 <b>슬랜트 거리(range)를 고정값으로 보존</b>한다.
이것이 2D→3D 깊이 모호성을 해소하는 핵심 구속이다.</li>
<li><span class="num">2</span><b>역투영:</b> 드롭한 화면 픽셀을 카메라 방향벡터로 환산하고 보존된 거리만큼 투사하여 카메라좌표를 정한다.</li>
<li><span class="num">3</span><b>월드좌표 복원:</b> 자세 회전·평행이동의 역변환으로 lat/lon/z를 복원한다(투영 시 가산한 지오이드를 역으로 환원).
<b>한 번의 드래그로 수평·수직이 동시 복원</b>된다.</li>
<li><span class="num">4</span><b>영속·재적용:</b> 복원 좌표를 객체 식별자에 연계해 외부 보정파일(override)로 저장, 차기 로드시 자동 적용한다.</li>
<li><span class="num">5</span><b>(종속) 가시영역 한정:</b> 화면에 보이는(카메라 전방, Zc&gt;0) 객체에만 보정을 허용한다.</li>
</ol>
<h4>핵심 수식 (역투영, 왕복오차 ≈0 검증)</h4>
<pre>dir_cam ∝ ((px0.5cx0)·sW/f, (py0.5cy0)·sH/f, 1) <span class="c"># 픽셀→카메라 방향</span>
cam = dir_cam/|dir_cam| · <b>range</b> <span class="c"># ★거리 보존(드래그 시작값)</span>
rel = R_w2cᵀ · cam <span class="c"># 회전 역변환</span>
E = droneE + offX + rel.x, N = droneN + offY + rel.y
z = droneAlt + offZ + rel.up N_geoid <span class="c"># 정표고로 복원</span>
(lat,lon) = TM⁻¹(E,N)</pre>
<h3>5-3. 효과</h3>
<ul>
<li>2D 드래그 한 번으로 <b>3D(수평+수직) 동시 보정</b> → 보정 단계 절반.</li>
<li>역투영 왕복오차 <b>≈0</b>(가시영역 Zc&gt;0 검증).</li>
<li>깊이맵(LiDAR) 불요 — 단안 영상 + 자세만으로 동작.</li>
<li>보정의 파일 영속·가져오기/내보내기로 <b>재현성</b> 확보.</li>
</ul>
<h3>5-4. 실시예</h3>
<p>지오코딩 오차로 선로 위에 잘못 표시된 POI(예: "88자원")를 편집모드에서 드래그 → 드롭 픽셀을 보존거리로 역투영하여
올바른 lat/lon/z 복원 → <code>&lt;base&gt;_poi_overrides.json</code> 저장 → 폴더 재로드 시 자동 반영.</p>
</section>
<!-- 도면 -->
<section id="figs">
<h2>6. 도면 목록 (변리사 제도용 — 발명자 확인)</h2>
<div class="fig"><b>도 1.</b> 시스템 구성도 — 영상소스, 텔레메트리, 측점/POI 카탈로그, 정합부, 표시부.</div>
<div class="fig"><b>도 2.</b> 투영 파이프라인 순서도 — WGS84→TM→ENU→카메라→핀홀(§4).</div>
<div class="fig"><b>도 3. (발명 B)</b> 측점 정표고→최근접 선택→지오이드 가산→타원체고 datum 정합 흐름도 + 부각오차 42.7°→11° 비교 기하도.</div>
<div class="fig"><b>도 4. (발명 B)</b> 노선 진행에 따른 최근접 측점 갱신 개념도(지면고도가 기복을 따라감).</div>
<div class="fig"><b>도 5. (발명 C)</b> 슬랜트거리 보존 역투영 기하도 — 드래그 개시점 거리 R 고정, 드롭픽셀 방향벡터 × R.</div>
<div class="fig"><b>도 6. (발명 C)</b> 드래그→역투영→override 저장→재적용 시퀀스도.</div>
<div class="fig"><b>도 7.</b> 정합 화면 예시(라벨 중첩 캡처) — <span class="chk">[실제 스크린샷 첨부 필요]</span></div>
</section>
<!-- 청구 포인트 -->
<section id="claimpts">
<h2>7. 청구범위 핵심 포인트 (변리사 작성 가이드)</h2>
<div class="callout key"><b>발명 B 독립항 필수요소:</b> ① 노선 측점의 <b>실측 정표고 수열 보유</b> → ② 표고미상 대상에 <b>최근접 측점 정표고를 지면고도로 채택</b>(노선기복 반영) → ③ <b>지오이드고 가산으로 타원체고 변환·카메라 datum 정합</b> → ④ 정합 투영. <b>※ ②+③ 결합을 반드시 한 청구항에</b>(개별요소는 공지).</div>
<div class="callout key"><b>발명 C 독립항 필수요소:</b> ① 드래그 개시 시 <b>슬랜트거리 보존</b> → ② 드롭픽셀 역투영(보존거리 투사) → ③ <b>단일 제스처로 수평·수직 동시 복원</b> → ④ 식별자 연계 영속. <b>※ "depth map 없이 거리보존"</b>을 명시하여 US9188444B2와 구별.</div>
<ul>
<li><b>카테고리:</b> B = 방법항 + 매체항, C = 시스템(장치)항 (필요시 방법항 병행).</li>
<li><b>종속항 후보(방어용):</b> 비등방 거리필터(앞/옆 분해, 60m/40m), 사전계산 labelMap+보간, title-키 보간·이상치거부, 대상별 표고오프셋, 가시영역(Zc&gt;0) 한정.</li>
<li><b>미국 병행 시(§101 대비):</b> 부각오차 42.7°→11°, DEM 대비 0.2m 등 <b>구체적 기술개선 효과</b>를 명세서에 명시.</li>
</ul>
</section>
<!-- 체크리스트 -->
<section id="todo">
<h2>8. 변리사 인계 전 체크리스트 (발명자 작업)</h2>
<table>
<thead><tr><th style="width:34px"></th><th>항목</th></tr></thead>
<tbody>
<tr><td></td><td><b>권리귀속 확정</b> — 발명자/출원인, 직무발명·공동출원 여부(발주처 계약서 확인)</td></tr>
<tr><td></td><td><b>공개이력 확인</b> — 출원 전 시연·납품·논문·전시 여부와 일자(신규성 직결)</td></tr>
<tr><td></td><td><b>발명 완성일</b> — 코드 최초 동작·검증 확인 일자(증빙: 커밋 로그·히스토리 문서)</td></tr>
<tr><td></td><td><b>실시예 스크린샷</b> — 정합 화면(도 7) 캡처 1~2장</td></tr>
<tr><td></td><td><b>검증 데이터</b> — 부각 42.7→11°, 0.2m 일치 산출 근거(이미 히스토리 문서에 있음)</td></tr>
<tr><td></td><td><b>변리사 선임</b> — 첫 출원은 변리사 강력 권장. 비용지원: 특허청 공익변리·지자체/TP 출원비 지원·중소기업 감면</td></tr>
<tr><td></td><td><b>KIPRIS 전문검색 의뢰</b> — 변리사에 정밀 선행기술조사(특히 KRRI·코레일·국가철도공단·도로공사·LX 명의) 요청</td></tr>
<tr><td></td><td><b>출원 우선순위</b> — B+C 1건 우선. A는 별건·좁은 청구로 후속 검토</td></tr>
</tbody>
</table>
<div class="callout ok"><b>일정 감각(참고):</b> 변리사 선임→자료전달→명세서 초안→검토·보정→출원까지 통상 <b>3~6주</b>.
출원 후 심사청구(출원일로부터 3년 내, 보통 동시), 심사·등록까지 <b>1~2년</b>. 해외출원 필요 시 <b>최초 출원일로부터 12개월 내</b> PCT/개별국(우선권).</div>
</section>
<footer>
발명신고서 (변리사 제출용) · 발명 B(측점표고 DEM-free 정합)·C(슬랜트거리 보존 역투영 보정) · 작성 2026-06-23 ·
기술근거: 구현 코드 및 개발 히스토리(POI 투영오차 개선 등) · 별첨: <a href="특허_스테이션기반_주행영상_플레이어.html">특허 발굴 기술문서(후보 A·D·E 및 선행기술 상세 포함)</a> ·
본 문서는 변리사 명세서 작성을 위한 기술 설명자료이며 법적 의견이 아님. <span class="fill">[ ]</span> 부분은 발명자/출원인이 기재.
</footer>
</div>
</body>
</html>