docs: 발표·특허·AI영상요약 자료 및 작업기록 추가

- 발표자료(좌표투영·측점기반재생) 갱신 + 그림/PDF
- 특허 출원 초안 및 도면
- AI 영상요약 서비스 작업기록(docs/history)
- 관련 scripts 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 11:20:03 +09:00
co-authored by Claude Opus 4.8
parent 5c8b499979
commit fe25ce00f1
78 changed files with 6186 additions and 15 deletions
@@ -212,14 +212,20 @@ h2{border-top:3px solid #e7e0d2;padding-top:14px;margin-top:34px;}
<circle cx="300" cy="51" r="10" fill="#374151"></circle>
<text x="45" y="82" font-size="11" fill="#374151">0:00</text><text x="330" y="82" font-size="11" fill="#374151">03:12</text><text x="632" y="82" font-size="11" fill="#374151">09:28</text>
<text x="350" y="104" text-anchor="middle" font-size="11" fill="#6b7280">&quot;3분 12초 지점&quot; — 여기가 어디 선로인지 모름 😵</text>
<p><text x="350" y="150" text-anchor="middle" font-size="13" font-weight="bold" fill="#166534">GhiVideo (측점 축)</text> <rect x="40" y="164" width="620" height="26" rx="6" fill="#fde9c8" stroke="#e0a94f"></rect> <rect x="40" y="164" width="300" height="26" rx="6" fill="#f59e0b"></rect> <circle cx="340" cy="177" r="11" fill="#ea580c"></circle><text x="340" y="181" text-anchor="middle" font-size="9" fill="#fff" font-weight="bold">160k</text> <line x1="200" y1="160" x2="200" y2="194" stroke="#0284c7" stroke-width="2"></line><text x="200" y="210" text-anchor="middle" font-size="9" fill="#0369a1">회덕터널</text> <line x1="470" y1="160" x2="470" y2="194" stroke="#0284c7" stroke-width="2"></line><text x="470" y="210" text-anchor="middle" font-size="9" fill="#0369a1">회덕천교</text> <text x="45" y="228" font-size="11" fill="#166534">대전조차장</text><text x="600" y="228" font-size="11" fill="#166534">신탄진</text> </svg></p>
<text x="350" y="150" text-anchor="middle" font-size="13" font-weight="bold" fill="#166534">GhiVideo (측점 축)</text>
<rect x="40" y="164" width="620" height="26" rx="6" fill="#fde9c8" stroke="#e0a94f"></rect>
<rect x="40" y="164" width="300" height="26" rx="6" fill="#f59e0b"></rect>
<circle cx="340" cy="177" r="11" fill="#ea580c"></circle><text x="340" y="181" text-anchor="middle" font-size="9" fill="#fff" font-weight="bold">160k</text>
<line x1="200" y1="160" x2="200" y2="194" stroke="#0284c7" stroke-width="2"></line><text x="200" y="210" text-anchor="middle" font-size="9" fill="#0369a1">회덕터널</text>
<line x1="470" y1="160" x2="470" y2="194" stroke="#0284c7" stroke-width="2"></line><text x="470" y="210" text-anchor="middle" font-size="9" fill="#0369a1">회덕천교</text>
<text x="45" y="228" font-size="11" fill="#166534">대전조차장</text><text x="600" y="228" font-size="11" fill="#166534">신탄진</text>
</svg>
<figcaption>시간 축은 &quot;몇 분&quot;만 안다. 측점 축은 &quot;지금 어느 선로 위치(측점)&quot;&quot;무슨 구조물 근처&quot;인지 바로 보인다.</figcaption>
</figure>
<h2 id="2-2-측점이-뭐예요-">2-2. 측점이 뭐예요? 📍</h2>
<p>철도에서 <strong>출발점부터 몇 미터 왔는지</strong>를 나타내는 &#39;거리 이정표&#39;예요. <code>160k130</code> = 출발점에서 <strong>160km + 130m</strong> 지점. (도로의 &#39;km 표지판&#39;과 똑같아요!)</p>
<h2 id="2-3-어떻게-만들었나--시간측점-지도-">2-3. 어떻게 만들었나 — &quot;시간↔︎측점 지도&quot; 🗺️</h2>
<h2 id="2-3-어떻게-만들었나--시간측점-대응표-">2-3. 어떻게 만들었나 — &quot;시간↔︎측점 대응표&quot; 🗺️</h2>
<p>비밀은 <strong>드론 GPS</strong>예요. 영상의 <strong>매 프레임(사진 한 장)</strong> 마다 두 가지를 계산해 <strong>짝지어</strong> 둬요:</p>
<figure class="fig">
<svg viewBox="0 0 700 250" role="img" aria-label="프레임마다 시간과 측점을 짝짓기">
@@ -238,10 +244,10 @@ h2{border-top:3px solid #e7e0d2;padding-top:14px;margin-top:34px;}
<line x1="200" y1="134" x2="330" y2="170" stroke="#7c3aed" stroke-width="2" marker-end="url(#ad)"></line>
<line x1="505" y1="134" x2="370" y2="170" stroke="#7c3aed" stroke-width="2" marker-end="url(#ad)"></line>
<rect x="210" y="172" width="280" height="46" rx="8" fill="#fef3c7" stroke="#ca8a04"></rect>
<text x="350" y="193" text-anchor="middle" font-size="12" font-weight="bold" fill="#854d0e">시간 ↔ 측점 지도 완성!</text>
<text x="350" y="193" text-anchor="middle" font-size="12" font-weight="bold" fill="#854d0e">시간 ↔ 측점 대응표 완성!</text>
<text x="350" y="210" text-anchor="middle" font-size="10" fill="#a16207">&quot;192초 = 160k130&quot; 처럼 서로 변환 가능</text>
</svg>
<figcaption>프레임마다 (시간)과 (측점)을 계산해 짝지으면, 시간↔측점을 자유롭게 오갈 수 있다.</figcaption>
<figcaption>프레임마다 (시간)과 (측점)을 계산해 짝지으면, 시간↔측점을 자유롭게 오갈 수 있다 — 재생 기준을 &#39;시간&#39;에서 &#39;스테이션(측점)&#39;으로 전환하기 위한 색인 구조.</figcaption>
</figure>
<p><strong>GPS를 측점으로 바꾸는 법(②):</strong> 드론 GPS 점을 <strong>선로(측점들을 이은 선)에 수직으로 툭 떨어뜨려</strong>, 그 발자국이 몇 측점인지 읽어요. (코드: <code>projectToChain</code> / <code>projectChainage</code>)</p>
@@ -275,7 +281,7 @@ h2{border-top:3px solid #e7e0d2;padding-top:14px;margin-top:34px;}
<h3 id="③-구조물을-제자리에--교량터널역은-측점값에-배치">③ 구조물을 제자리에 — 교량·터널·역은 &#39;측점값&#39;에 배치</h3>
<p>교량·터널·역사를 각자의 <strong>측점값 위치</strong>에 표시해서, &quot;이 구조물이 어디쯤인지&quot; 막대만 봐도 알 수 있어요.</p>
<h2 id="2-5-측점으로-찾아가기seek">2-5. 측점으로 &#39;찾아가기&#39;(Seek)</h2>
<p>측점값을 입력하거나 막대를 누르면 → <strong>그 측점이 나오는 시간을 지도에서 찾아 → 그 시간으로 이동</strong>해요. (시간↔︎측점 지도가 있으니 가능한 일!)</p>
<p>측점값을 입력하거나 막대를 누르면 → <strong>그 측점이 나오는 시간을 지도에서 찾아 → 그 시간으로 이동</strong>해요. (시간↔︎측점 대응표가 있으니 가능한 일!)</p>
<figure class="fig">
<svg viewBox="0 0 700 90" role="img" aria-label="측점 입력으로 이동">
<defs><marker id="as" markerWidth="10" markerHeight="10" refX="7" refY="3.5" orient="auto"><path d="M0,0 L7,3.5 L0,7 Z" fill="#7c3aed"></path></marker></defs>
@@ -308,7 +314,7 @@ h2{border-top:3px solid #e7e0d2;padding-top:14px;margin-top:34px;}
<td>VideoPlayer.tsx <code>effectiveFps</code></td>
</tr>
<tr class="odd">
<td>시간↔︎측점 지도</td>
<td>시간↔︎측점 대응표</td>
<td>프레임별 precompute</td>
<td><a href="../client/src/stationbar/StationBar.tsx">StationBar.tsx</a></td>
</tr>
@@ -328,7 +334,7 @@ h2{border-top:3px solid #e7e0d2;padding-top:14px;margin-top:34px;}
<h2 id="마무리--한-문장씩-">마무리 — 한 문장씩 🎁</h2>
<ul>
<li><strong>Part 1 (좌표 투영):</strong> &quot;드론이 <strong>어디서·어느 쪽</strong>을 보는지 알기 때문에, 지도 속 터널이 <strong>영상 화면 어디</strong>에 보일지 계산해 이름표를 딱 붙인다.&quot;</li>
<li><strong>Part 2 (측점 기반):</strong> &quot;드론 <strong>GPS로 매 프레임의 측점</strong>을 계산해 <strong>시간↔︎측점 지도</strong>를 만들어, <strong>시간이 아니라 측점으로</strong> 영상을 탐색한다.&quot;</li>
<li><strong>Part 2 (측점 기반):</strong> &quot;드론 <strong>GPS로 매 프레임의 측점</strong>을 계산해 <strong>시간↔︎측점 대응표</strong>를 만들어, <strong>시간이 아니라 측점으로</strong> 영상을 탐색한다.&quot;</li>
</ul>
<blockquote>
<p>두 기술 모두 <strong>드론의 GPS·자세 데이터</strong>를 똑똑하게 활용한 결과예요. 그래서 GhiVideo는 단순 영상이 아니라 <strong>&quot;선로 위 어디를 보고 있는지 아는&quot; 주행영상 플레이어</strong>가 됩니다. 🚁📏</p>