본문으로 건너뛰기

도트 정리 · 안티앨리어싱과 튀는 픽셀 제거

모든 것을 먼저 후보로 보고합니다. 이미지에 표시하고 개수를 세며, 체크한 것만 바꿉니다. 안티앨리어싱 제거는 사이에 낀 픽셀을 그 양쪽 팔레트 색 중 하나로 맞춥니다.

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

스프라이트 프레임(PNG)을 끌어다 놓으세요. 여러 프레임이 하나의 팔레트를 씁니다
픽셀 랩 열기
브라우저에서 처리하며 파일은 업로드되지 않습니다.
픽셀 랩: 추출한 팔레트 하나에 고정된 CC0 스프라이트 프레임과 색별 픽셀 비율
CC0 에셋(OpenGameArt)을 연 실제 픽셀 랩 화면입니다.
출력
  • 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. 프레임을 끌어다 놓습니다.
  2. 후보 개수를 읽고 표시된 픽셀을 봅니다.
  3. 원하는 수정(안티앨리어싱·튀는 픽셀·덩어리·구멍·외곽선 틈)을 체크합니다.
  4. 정리한 프레임을 내보냅니다.

결과 확인

  • 체크하기 전에 개수를 읽습니다. 외톨이·덩어리·구멍·안티앨리어싱 후보가 따로 나오고 이미지에 표시됩니다.
  • 내보낸 뒤 색을 확인합니다. 프레임의 모든 색이 팔레트 안에 있어야 합니다.
  • 검사 단계에서 정리 전후 실루엣을 비교합니다. 모양이 같아야 합니다.

문제 해결

증상유력한 원인확인 방법해결
디더링한 부분이 외톨이 수백 개로 보고됨디더링은 일부러 한 픽셀씩 찍은 무늬변환 단계에서 디더링이 켜져 있는지 확인정리 전에 디더링을 없음으로 두거나 외톨이를 체크하지 않기
눈이나 1픽셀 하이라이트가 사라짐외톨이 후보였고 외톨이를 체크함적용 전에 표시된 후보 확인외톨이 체크를 풀거나, 되돌리기(Ctrl+Z) 후 그 픽셀을 손으로 고치기
가장자리 픽셀이 반대쪽 색으로 감기준값이 넓어서 어느 쌍에도 속하지 않는 색까지 잡힘안티앨리어싱 기준값(기본 0.08) 낮춰 보기기준값을 낮추거나 도트 편집기에서 손보기
수정 후에도 외곽선이 두 겹수정은 틈만 메움. 얇게 하면 실루엣이 움직임외곽선 보고서에 두 겹 구간 수가 나옴원하는 곳만 손으로 얇게
확대되거나 생성된 그림이라 정리하기엔 잡음이 너무 많음아직 1배가 아님검사기가 정수 배율이나 크기 변경을 보고함먼저 1배 복원으로 줄인 뒤 정리

다른 방법

방법이럴 때 더 낫습니다
Studio 픽셀 작업 공간의 정리 패널(확대·생성 그림용)그림이 1배가 아닐 때. 격자를 다시 잡고 가장자리 번짐을 한 번에 없애며, 계속 편집할 수 있는 새 스프라이트를 만듭니다.
아무 도트 편집기에서 손으로프레임이 몇 개뿐이고 모든 픽셀을 직접 정하고 싶을 때. 검토할 자동 후보는 없습니다.
팔레트 추출기모양은 바꾸지 않고 여러 프레임이 함께 쓸 팔레트 하나만 필요할 때.

출력 파일과 검증 방법

"측정 확인"은 내려받은 파일을 페이지 밖에서(Pillow·numpy·별도 파서) 다시 열어 그 속성을 측정했다는 뜻입니다. 게임 엔진에서 불러오는 것은 시험하지 않았습니다.

대상파일검증
PNG framesanim_N.png · 1×–8× nearest측정 확인 Pillow내보낸 PNG를 다시 읽어 모든 색이 고정 팔레트 안에 있는지 확인했습니다.
Palette.gpl · .hex (Lospec) · .json측정 확인 re-import각 형식을 내보내고 UI로 다시 가져와 16 → 16색을 확인했습니다.
pixel-lab.jsongeneric 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 타일셋은 작은 편집기 스크립트).