Raster to Vector Graphics Converter
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<div align="center">
<img src="docs/images/visioncortex-banner.png"> <h1>VTracer</h1>
<p> <strong>래스터를 벡터 그래픽으로 변환하는 도구</strong> </p>
<h3> <a href="https://www.visioncortex.org/vtracer-docs">문서</a> <span> | </span> <a href="https://www.visioncortex.org/vtracer/">웹 앱</a> <span> | </span> <a href="https://github.com/visioncortex/vtracer/releases">다운로드</a> </h3>
<sub>🦀로 제작됨, <a href="https://www.visioncortex.org/">Vision Cortex 연구 그룹</a></sub> </div>
visioncortex VTracer는 래스터 이미지(jpg, png 등)를 벡터 그래픽(svg)으로 변환하는 오픈 소스 소프트웨어입니다. 그래픽과 사진을 벡터화하고 곡선을 추적하여 간결한 벡터 파일을 출력할 수 있습니다.
이진화된 입력(흑백 픽스맵)만 허용하는 Potrace와 달리, VTracer는 컬러 고해상도 스캔을 처리할 수 있는 이미지 처리 파이프라인을 갖추고 있습니다. 요약: Potrace는 O(n^2) 피팅 알고리즘을 사용하는 반면, vtracer는 전체가 O(n)입니다.
Adobe Illustrator의 Image Trace와 비교하여, VTracer는 스태킹 전략을 채택하고 구멍이 있는 모양을 생성하지 않으므로 출력이 훨씬 더 간결합니다(더 적은 수의 도형).
VTracer는 원래 기가픽셀 단위의 고해상도 역사적 청사진 스캔을 처리하기 위해 설계되었습니다. 동시에 VTracer는 저해상도 픽셀 아트도 처리할 수 있으며, 레트로 게임 아트워크를 위해 image-rendering: pixelated를 시뮬레이션합니다.
추적 알고리즘 및 클러스터링 알고리즘에 대한 기술적 설명.
VTracer와 그 핵심 라이브러리는 Rust로 구현되었습니다. 이는 강력하고 효율적인 알고리즘을 개발하고 대화형 애플리케이션에 쉽게 적용할 수 있는 견고한 기반을 제공합니다. 웹 앱은 Rust + wasm 플랫폼의 능력을 완벽히 보여줍니다.
!스크린샷
!스크린샷
visioncortex VTracer 0.6.0
이미지를 벡터 그래픽으로 변환하는 명령줄 앱
사용법:
vtracer [옵션] --input <입력> --output <출력>
플래그:
-h, --help 도움말 출력
-V, --version 버전 정보 출력
옵션:
--colormode <color_mode> 트루 컬러 이미지 `color` (기본값) 또는 이진 이미지 `bw`
-p, --color_precision <color_precision> RGB 채널에 사용할 유효 비트 수
-c, --corner_threshold <corner_threshold> 코너로 간주할 최소 순간 각도(도)
-f, --filter_speckle <filter_speckle> X 픽셀보다 작은 패치를 버림
-g, --gradient_step <gradient_step> 그라데이션 레이어 간 색상 차이
--hierarchical <hierarchical>
계층적 클러스터링 `stacked` (기본값) 또는 비스태킹 `cutout`. 컬러 모드에만 적용.
-i, --input <입력> 입력 래스터 이미지 경로
-m, --mode <mode> 곡선 피팅 모드 `pixel`, `polygon`, `spline`
-o, --output <출력> 출력 벡터 그래픽 경로
--path_precision <path_precision> 경로 문자열에 사용할 소수점 자릿수
--preset <preset> 사전 설정 구성 사용 `bw`, `poster`, `photo`
-l, --segment_length <segment_length>
모든 세그먼트가 이 길이보다 짧아질 때까지 반복적으로 세분화 평활화 수행
-s, --splice_threshold <splice_threshold> 스플라인을 접합할 최소 각도 변위(도)
Releases에서 미리 빌드된 바이너리를 다운로드할 수 있습니다.
crates.io/vtracer에서 소스로부터 프로그램을 설치할 수도 있습니다:
cargo install vtracer
다른 타사 소스에서 다운로드하지 않는 것을 강력히 권장합니다.
vtracer를 Rust 라이브러리로 설치할 수 있습니다.
cargo add vtracer
0.6부터 vtracer는 Python 네이티브 확장으로도 패키징되었습니다. 이는 훌륭한 pyo3 프로젝트 덕분입니다.
pip install vtracer
VTracer는 다음 제품에서 사용됩니다 (자신의 제품을 추가하려면 PR을 열어주세요):
<table> <tbody> <tr> <td><a href="https://logo.aliyun.com/logo#/name"><img src="docs/images/aliyun-logo.png" width="250"/></a> <br>스마트 로고 디자인 </td> <td></td> </tr> </tbody> </table>
VTracer는 컴퓨터 그래픽스/비전 연구 분야의 여러 학술 논문에서 인용되었습니다. 저희 작업을 인용하셨다면 알려주시기 바랍니다:
+ SKILL 2023 Framework to Vectorize Digital Artworks for Physical Fabrication based on Geometric Stylization Techniques + arXiv 2023 Image Vectorization: a Review + arXiv 2023 StarVector: Generating Scalable Vector Graphics Code from Images + arXiv 2024 Text-Based Reasoning About Vector Graphics + arXiv 2024 Delving into LLMs' visual understanding ability using SVG to bridge image and text
다음 내용은 미출간 회고록에서 발췌한 것입니다.
십대 시절, 벡터 그래픽 분야의 두 오픈 소스 프로젝트인 Potrace와 Anti-Grain Geometry (AGG)가 저에게 큰 영감을 주었습니다.
수년 후인 2020년, 저는 비디오 처리 엔진을 개발하고 있었습니다. 그리고 상업적으로 실현 가능하려면 훨씬 더 많은 투자가 필요하다는 것이 분명해졌습니다. 그래서 프로젝트를 포기하기 전에, 후세를 위해 무언가를 오픈 소스로 공개하고 싶었습니다. 그 당시 저는 이미 프로토타입 벡터 그래픽 추적기를 개발해 두었습니다. 손으로 그린 청사진의 고해상도 스캔을 벡터로 변환할 수 있었지만, 흑백 이미지만 처리할 수 있었고 폴리곤만 출력할 수 있었으며 스플라인은 출력할 수 없었습니다.
계획은 벡터라이저를 완전히 개발하여 컬러 이미지를 처리하고 스플라인을 출력하는 것이었습니다. 저는 매우 재능 있는 인턴 @shpun817을 영입하여 VTracer 작업을 맡겼습니다. 비디오 처리 엔진의 프론트엔드인 "클러스터링 알고리즘"을 전처리기로 접목했습니다.
3개월 후, 우리는 첫 번째 버전을 Reddit에 공개했습니다. 놀랍게도, 이렇게 보잘것없는 프로젝트에 대한 반응은 압도적이었습니다.
몇 가지 생각해 둔 것이 있습니다:
이러한 작업에 관심이 있거나 개발을 후원하고 싶다면 연락 주시기 바랍니다.