도트 정리 · 안티앨리어싱과 튀는 픽셀 제거
모든 것을 먼저 후보로 보고합니다. 이미지에 표시하고 개수를 세며, 체크한 것만 바꿉니다. 안티앨리어싱 제거는 사이에 낀 픽셀을 그 양쪽 팔레트 색 중 하나로 맞춥니다.
도트 정리는 가장자리가 딱딱하고 색이 제한된 스프라이트에 어울리지 않는 것을 없애는 일입니다. 가장자리의 안티앨리어싱 중간색, 외톨이 픽셀, 작은 덩어리, 한 칸 구멍, 외곽선 틈이 그 대상입니다. Nerulio 픽셀 랩은 모든 후보를 먼저 표시하고 개수를 센 뒤 체크한 것만 바꿉니다. 안티앨리어싱 제거는 중간색 픽셀을 그 양쪽 팔레트 색 중 하나로 맞추므로 실루엣이 움직이지 않습니다. 입력은 1배 PNG 프레임, 출력은 정리된 PNG 프레임과 공유 팔레트 하나입니다.

- PNG frames측정 확인· Pillow
- Palette측정 확인· re-import
- pixel-lab.json미검증
무엇이 지저분한 것이고, 각각 어떻게 고치나
안티앨리어싱은 일러스트에는 도움이 되지만 스프라이트에는 해가 됩니다. 외곽선과 채움이 섞인 가장자리 픽셀은 둘 다 아닌 새 색이며, 16색 팔레트용 시험 프레임에는 색이 271개 있었습니다. 그런 픽셀을 가장 가까운 팔레트 색으로 맞추는 것만으로는 부족합니다. 어두운 외곽선과 주황 채움 사이 중간색이 엉뚱한 갈색에 가장 가까울 수 있기 때문입니다. 픽셀 랩은 그 픽셀이 놓인 Oklab 선분을 이루는 이웃 색 쌍에서 가까운 쪽으로 맞추고, 그런 쌍이 없을 때만 전체에서 가장 가까운 팔레트 색을 씁니다.
외톨이·덩어리·구멍은 같은 팔레트 색이 이어진 영역(4방향 연결)을 한 번 훑어 찾습니다. 외톨이는 1픽셀짜리 영역, 작은 덩어리는 지정한 크기보다 작은 영역, 구멍은 이미지 가장자리에 닿지 않고 불투명 픽셀로 둘러싸인 투명 영역입니다. 각각 주변 색으로 채우며, 한 번의 검사로 세 목록을 만들기 때문에 개수가 서로 어긋나지 않습니다.
외곽선 점검은 네 이웃 중 정확히 하나만 실루엣 밖인 직선 가장자리만 봅니다. 모서리에서는 두께를 한 가지로 말할 수 없어 건너뜁니다. 자동 수정은 틈만 메우고 두 겹 외곽선을 얇게 만들지는 않습니다. 픽셀을 지우면 실루엣이 움직이기 때문입니다.
- 안티앨리어싱 픽셀
- 그 자리에서 만나는 두 팔레트 색 사이의 색을 가진 가장자리 픽셀.
- 외톨이 픽셀
- 1픽셀짜리 영역. 네 이웃 중 같은 색이 없음.
- Oklab
- 지각 기반 색 공간. 이 공간의 거리가 RGB보다 눈에 보이는 차이에 가깝습니다.
예시: 안티앨리어싱된 48 × 48 프레임 8개
부드럽게 그린 통통 튀는 공을 모든 프레임에 팔레트 하나로 정리했습니다.
입력 프레임 8개, 서로 다른 색 271개 (가장자리 안티앨리어싱)
팔레트 16색, 8프레임 전체에서 함께 추출
안티앨리어싱 제거, 기준값 0.08 (Oklab 거리)
색 수 271 → 16, 내보낸 모든 색이 팔레트 안
알파 픽셀 0개 바뀜 — 실루엣이 움직이지 않음
외곽선과 채움 사이 중간 픽셀 → 둘 중 가까운 쪽, 세 번째 색은 절대 아님판단은 이미 바뀐 픽셀이 아니라 원래 픽셀에서 읽으므로 이미지를 훑는 순서에 따라 결과가 달라지지 않습니다.
이렇게 작동합니다
- 안티앨리어싱 제거: 두 팔레트 색 사이의 픽셀을 그 쌍의 가까운 쪽으로 맞춥니다. 원본 픽셀로 판단하므로 훑는 순서가 결과를 바꾸지 않습니다.
- 튀는 픽셀, 작은 덩어리(크기 조절), 한 칸 구멍을 한 번의 연결 요소 검사로 찾습니다.
- 외곽선 점검: 직선 가장자리의 틈·겹침·두께. 자동 수정은 틈만 메웁니다.
- 알파는 기준값을 정하지 않으면 건드리지 않고, 정하면 0이나 255로만 반올림합니다.
사용 방법
- 프레임을 끌어다 놓습니다.
- 후보 개수를 읽고 표시된 픽셀을 봅니다.
- 원하는 수정(안티앨리어싱·튀는 픽셀·덩어리·구멍·외곽선 틈)을 체크합니다.
- 정리한 프레임을 내보냅니다.
결과 확인
- 체크하기 전에 개수를 읽습니다. 외톨이·덩어리·구멍·안티앨리어싱 후보가 따로 나오고 이미지에 표시됩니다.
- 내보낸 뒤 색을 확인합니다. 프레임의 모든 색이 팔레트 안에 있어야 합니다.
- 검사 단계에서 정리 전후 실루엣을 비교합니다. 모양이 같아야 합니다.
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| 디더링한 부분이 외톨이 수백 개로 보고됨 | 디더링은 일부러 한 픽셀씩 찍은 무늬 | 변환 단계에서 디더링이 켜져 있는지 확인 | 정리 전에 디더링을 없음으로 두거나 외톨이를 체크하지 않기 |
| 눈이나 1픽셀 하이라이트가 사라짐 | 외톨이 후보였고 외톨이를 체크함 | 적용 전에 표시된 후보 확인 | 외톨이 체크를 풀거나, 되돌리기(Ctrl+Z) 후 그 픽셀을 손으로 고치기 |
| 가장자리 픽셀이 반대쪽 색으로 감 | 기준값이 넓어서 어느 쌍에도 속하지 않는 색까지 잡힘 | 안티앨리어싱 기준값(기본 0.08) 낮춰 보기 | 기준값을 낮추거나 도트 편집기에서 손보기 |
| 수정 후에도 외곽선이 두 겹 | 수정은 틈만 메움. 얇게 하면 실루엣이 움직임 | 외곽선 보고서에 두 겹 구간 수가 나옴 | 원하는 곳만 손으로 얇게 |
| 확대되거나 생성된 그림이라 정리하기엔 잡음이 너무 많음 | 아직 1배가 아님 | 검사기가 정수 배율이나 크기 변경을 보고함 | 먼저 1배 복원으로 줄인 뒤 정리 |
다른 방법
출력 파일과 검증 방법
"측정 확인"은 내려받은 파일을 페이지 밖에서(Pillow·numpy·별도 파서) 다시 열어 그 속성을 측정했다는 뜻입니다. 게임 엔진에서 불러오는 것은 시험하지 않았습니다.
| 대상 | 파일 | 검증 |
|---|---|---|
| PNG frames | anim_N.png · 1×–8× nearest | 측정 확인 Pillow내보낸 PNG를 다시 읽어 모든 색이 고정 팔레트 안에 있는지 확인했습니다. |
| Palette | .gpl · .hex (Lospec) · .json | 측정 확인 re-import각 형식을 내보내고 UI로 다시 가져와 16 → 16색을 확인했습니다. |
| pixel-lab.json | generic frames + palette | 미검증일반 JSON이며 어떤 엔진에서도 불러오지 않았습니다. |
검증 근거
안티앨리어싱된 프레임 8개 → 16색 팔레트 하나, 팔레트 밖 색 0개. 디더링 없음과 Bayer 4×4 모두에서 변하지 않은 영역이 8프레임 모두 동일. 안티앨리어싱 제거로 271색 → 16색, 실루엣 픽셀 이동 0. 정수 배율·오프셋·2.5배 비정수 배율을 정확히 감지.
한계
- 외곽선 문제 중 자동으로 고치는 것은 틈뿐이며, 두 겹 픽셀은 보고만 하고 지우지 않습니다.
- 프레임 전체 면적이 4메가픽셀을 넘으면 개수는 보이는 프레임만 셉니다.
- 4096 × 4096보다 큰 프레임은 거부합니다. 모든 처리가 메인 스레드에서 돌고 아직 취소 버튼이 없습니다.
- 스프라이트 시트는 이미지 하나로 다룹니다. 먼저 프레임으로 자르세요(스프라이트 시트 자르기).
- 디더링을 켜면 정리 개수에 디더 픽셀이 포함됩니다. 먼저 디더링을 없음으로 두세요.
- 내보내는 JSON은 일반 형식이며 Godot·Unity 가져오기는 시험하지 않았습니다.
버전과 출처
수치는 Chromium의 픽셀 랩 브라우저 시험에서 내보낸 파일을 페이지 밖에서 다시 열어 잰 것입니다(Firefox·WebKit은 실행하지 않음).
자주 묻는 질문
스프라이트 외곽선이 움직이나요?
아니요. 시험 프레임에서 안티앨리어싱 제거가 271색을 팔레트의 16색으로 줄이는 동안 알파 픽셀은 0개 바뀌었습니다.
디더링된 그림에도 되나요?
디더 패턴은 한 칸 픽셀로 이루어져 개수에 포함됩니다. 정리 전에 디더링을 없음으로 두세요.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).