본문으로 건너뛰기

AI 도트 보정 · 생성된 그림을 진짜 픽셀 격자로

이미지 생성기가 만든 그림은 확대하기 전까지만 도트처럼 보입니다. "픽셀"은 크기가 제각각인 덩어리이고 색은 지저분하며 가장자리는 흐립니다. Studio의 정리 패널은 덩어리 크기를 재서 덩어리마다 깨끗한 픽셀 하나를 만들고 색을 줄이며, 믿을 만한 격자를 못 찾으면 그렇다고 분명히 말합니다.

이미지 생성기가 만든 그림은 도트를 흉내 낼 뿐 격자 위에 그려지지 않습니다. "픽셀"은 폭이 고르지 않은 덩어리이고 색에 잡음이 있으며 가장자리가 흐립니다. 고치려면 칸 크기 하나, 칸마다 색 하나, 줄인 팔레트가 필요한데, 생성 이미지 대부분은 그림 전체에 맞는 칸 크기가 하나로 정해지지 않습니다. Nerulio 정리 패널은 먼저 재고 믿을 수 있는 격자만 적용합니다. 시험한 실제 생성 이미지 7장은 모두 "불확실"로 판정되어 자동으로 적용된 것이 없습니다. 대신 가장 나은 후보를 보여 주므로 크기를 입력하고 결과를 직접 확인할 수 있습니다.

칠할 스프라이트·프레임·GIF·.aseprite 파일, 또는 정리할 확대된 그림을 끌어다 놓으세요
빈 Studio 열기
브라우저에서 처리하며 파일은 업로드되지 않습니다.
Studio 픽셀 작업 공간 정리 패널: 이미지 생성기로 만든 CC0 그림을 "불확실"로 측정하고 자동으로 적용하지 않는 화면
CC0 에셋(OpenGameArt)을 연 실제 Studio 화면입니다.
내보내기 대상
  • Palette files측정 확인· read back
  • .aseprite검증됨· Aseprite 1.3.18
  • Engine bundles검증됨· Godot 4.7.2 · Unity 6000.5
  • Frame PNG · .nerulio일반 파일

생성된 "도트"에 맞출 격자가 없는 이유

진짜 도트는 격자 위에 그리므로 그것을 확대하면 어디서나 블록 크기가 같습니다. 이미지 생성기는 자기 해상도로 그리면서 모양만 흉내 냅니다. 블록 폭이 조금씩 달라지고(우리 모의 데이터는 기준 크기의 80~120 %), 이웃한 "픽셀"끼리 색이 몇 단계씩 다르며, 가장자리가 흐리고, JPEG로 압축되거나 배경에 격자가 그려져 있는 경우도 많습니다.

맞추는 도구는 칸 크기를 하나 골라야 합니다. 폭이 흔들리면 규칙적인 격자가 그림 한쪽에는 맞고 다른 곳에서는 블록 한가운데를 자릅니다. Nerulio는 먼저 규칙 격자를 시도하고, 잡음이 있으면서 가장자리가 격자에서 0.1칸 이상 벗어난 그림이면 가장자리를 따라갑니다. 칸은 대표 크기의 0.7~1.35배, 경계가 가장자리 에너지의 97 % 이상에 놓이는 가장 큰 크기를 고르되, 그렇게 찾은 칸이 3px 이상이고 거의 정사각형일 때만 씁니다.

어느 것도 성립하지 않으면 패널은 "약 … px 격자를 찾았지만 너무 약해 믿을 수 없음"이라고 알리고 아무것도 적용하지 않습니다. 시험한 실제 생성 이미지 7장이 모두 그랬습니다. 630 × 500 미리보기들에서 Nerulio의 약한 후보는 약 3.3px였고, 그중 한 장에 unfake.js는 209 × 166(크기 3), Pixel Snapper는 106 × 84(약 6)를 내놓았습니다. 도구끼리 두 배나 다르다는 것이 추측을 몰래 적용하면 안 되는 이유입니다.

가짜 픽셀
픽셀 하나처럼 보이지만 이웃과 폭·색·가장자리 선명도가 다른 덩어리.
믹셀
한 그림 안에 크기가 다른 픽셀이 섞인 것. 생성 이미지는 구조상 이렇게 됩니다.
확실 · 가능성 높음 · 불확실
정리 패널이 보여 주는 확신 정도. 확실과 가능성 높음만 크기를 입력하지 않아도 적용됩니다.

벤치마크가 생성 그림에서 잰 것

모의 사례 10개는 1배 원본을 압니다(칸 5~10px, 폭 80~120 %, 색 흔들림과 잡음, 일부는 흐림이나 JPEG). 실제 이미지 7장은 정답이 없습니다.

모의 생성 그림 (10개)
  크기 정확히 맞음           20 %        1px 이내          80 %
  픽셀 정확히 일치           36.1 % (기본값)     70.3 % (배경 유지)
  ΔE 0.02 이내 픽셀          92.8 % (배경 유지)

실제 생성 이미지 (7장, 정답 없음)
  Nerulio      7장 모두 "불확실": 크기 그대로, 후보만 표시
  다른 도구    항상 추측을 내놓음. 예: 630 × 500 → 209 × 166 (unfake.js), 106 × 84 (Pixel Snapper)

크기가 1px 이내로 맞아도 픽셀이 정확히 맞지는 않습니다. 열이 하나 더 생기면 그 뒤의 경계가 전부 밀리기 때문입니다. 그래서 모의 사례에서 색 차이가 작은 픽셀은 92.8 %인데 정확히 같은 픽셀은 70.3 %에 그칩니다.

이렇게 작동합니다

  • 가장자리 추적이 폭이 고르지 않은 가짜 픽셀을 따라갑니다. 잡음보다 큰 가장자리만 쓰고, 가장자리 에너지의 97 % 이상에 경계가 놓이는 가장 큰 칸 크기를 고르며, 평평한 구간은 고르게 나눕니다. 색에 잡음이 있고 근거가 서로 맞을 때만 씁니다.
  • 원본을 아는 모의 생성 그림에서 크기를 1px 이내로 찾은 비율은 80 %(정확히는 20 %)였고, 배경 유지 시 픽셀 70.3 %가 정확, 92.8 %가 ΔE 0.02 이내였습니다.
  • 실제 생성 그림 7장은 모두 불확실로 판정해 크기를 그대로 두고 가장 나은 후보(어떤 미리보기 묶음에서는 약 3.3px)를 보여 줬습니다. 그 값을 입력해 직접 적용할 수 있습니다.
  • Oklab 색 합치기, 색 제한, 스프라이트 팔레트로 양자화, 안티앨리어스 가장자리와 외톨이 픽셀 제거. 결과는 연필로 손볼 수 있는 새 스프라이트입니다.

사용 방법

  1. 생성된 그림을 이 페이지에 끌어다 놓으면 픽셀 작업 공간에 열립니다.
  2. 정리 패널에서 측정을 누르고 판정과 확신 정도를 읽습니다.
  3. 불확실이라면 격자를 확대해 보이는 픽셀 크기를 입력하고 색 제한을 정합니다.
  4. 미리보기 후 새 스프라이트로 적용하고, 아직 어색한 픽셀을 다듬습니다.

결과 확인

  • 먼저 확신 정도를 읽습니다. 가장자리를 따라간 격자("고르지 않은 가짜 픽셀 약 6×6px", 가능성 높음)는 적용되고, "너무 약해 믿을 수 없음"은 적용되지 않습니다.
  • 크기를 입력했다면 "캔버스에 격자 표시"를 켜고 확대합니다. 경계가 한쪽 구석만이 아니라 그림 전체에서 블록 사이를 지나야 합니다.
  • 미리보기에서 2배나 4배로 전후를 비교합니다. 눈, 외곽선, 하이라이트가 한 픽셀로 살아 있어야 합니다.
  • 보고서의 색 수를 보고 여전히 많으면 색 제한(16~32)을 겁니다.

문제 해결

증상유력한 원인확인 방법해결
"약 3.3px 격자를 찾았지만 너무 약해 믿을 수 없음"블록 폭이 흔들리거나, JPEG 잡음과 배경에 그려진 격자가 실제 칸 크기를 가림800 %로 확대해 블록 몇 개를 재 보고 1픽셀 이상 차이 나는지 확인잰 크기를 입력. 블록 차이가 너무 크면 일부를 잘라 따로 정리하거나 다시 그리기
결과가 더 작고 흐린 복사본처럼 보임입력한 크기가 실제 블록의 절반이라 블록마다 섞인 2 × 2 픽셀이 됨캔버스 격자에서 한 블록 안에 경계가 두 개두 배 크기를 입력
눈이나 1픽셀 하이라이트가 사라짐입력한 크기가 너무 크거나 색 합치기가 지움미리보기와 보고서의 합치기·수정 목록크기를 줄이고, 색 합치기를 약하게나 끔으로, 외톨이 픽셀 제거는 끈 채로(기본값)
여전히 색이 수백 개블록마다 들어 있는 생성 색 잡음보고서의 색 수와 "잡음 있음" 표시색 제한 16~32, 또는 팔레트로 양자화(Lospec 팔레트)
배경이나 체크무늬가 남음생성기가 배경이나 가짜 투명 무늬를 그려 넣음보고서의 감지된 배경과 테두리 비율배경 제거는 단색 테두리 색 하나만 지웁니다. 체크무늬는 마술봉으로 선택해 지우세요

다른 방법

방법이럴 때 더 낫습니다
도트 편집기에서 1배로 다시 그리기생성 이미지가 콘셉트일 때. 진짜 격자 위에서 따라 그리면 어떤 맞추기보다 깨끗하고 해상도도 직접 정합니다.
Pixel Snapper, unfake.js, perfectPixel확신 정도 확인 없이 모든 이미지에 결과가 필요하거나, 대량 처리용 명령줄·라이브러리가 필요할 때. 모의 생성 그림에서는 perfectPixel이 크기를 더 자주 정확히 찾았습니다(40 % 대 20 %).
맞춘 뒤 픽셀 랩생성된 애니메이션의 여러 프레임에 팔레트 하나와 안티앨리어싱 정리가 필요할 때.

엔진별 내보내기와 검증 방법

"검증됨"은 실제 CC0 에셋으로 내보낸 파일을 해당 엔진·도구가 직접 불러와 원본과 비교했다는 뜻입니다. 불러오지 않은 형식은 그렇게 표시합니다.

대상파일검증
.asepritelayers · blend · opacity · locked · indexed palette · frames · tags검증됨 Aseprite 1.3.18실제 Aseprite 명령줄이 파일을 인덱스 모드, 레이어 2개, 불투명도 160의 곱하기, 편집 불가로 잠긴 레이어 그대로 다시 열었고 프레임 픽셀이 같았습니다.
Palette files.gpl · .pal · .hex · .ase · .act · .json측정 확인 read back형식마다 쓰고 다시 읽어 같음을 확인했고, Aseprite가 만든 .gpl·.pal·.hex·.act와 실제 Adobe .ase(16색)를 읽었습니다.
Engine bundlesGodot 4 · Unity 6 · Phaser 3/4 · PixiJS 8 … through Pack & Export검증됨 Godot 4.7.2 · Unity 6000.5그린 스프라이트는 패킹·내보내기에서 묶습니다. 그 엔진 파일은 실제 CC0 에셋으로 각 엔진에서 불러와 확인했습니다(49회 중 47회 통과, 실패 2회는 Phaser 3 프리셋이 피하는 Phaser 3.90 버그).
Frame PNG · .nerulioPNG-8 with the palette when an indexed frame fits it · project file일반 파일어떤 도구에서도 쓰는 일반 파일이며, 엔진 실행 검증은 주장하지 않습니다.

검증 근거

정리 벤치마크(원래 1배 그림을 아는 CC0 사례 69개): 크기를 정확히 찾은 비율 81 %(±1px 90 %), 배경 유지 시 픽셀 74.0 % 정확. 가장 나은 경쟁 도구는 크기 30 %(perfectPixel), 정확한 픽셀 44.6 %(unfake.js). Aseprite로 만든 ×4 최근접 확대는 100 %, ×3.78 쌍선형 확대는 99.7 % 정확하게 돌아왔고 두 경우 모두 크기를 자동으로 찾았습니다. 1px 외곽선과 드롭 섀도는 Aseprite 결과와 픽셀까지 같았습니다(1846px, 705px). 여기서 쓴 .aseprite는 Aseprite 1.3.18에서 인덱스 모드와 레이어·블렌드·잠금이 그대로 열립니다.

한계

  • 시험한 생성 이미지 중 자동으로 맞춘 것은 없습니다. 크기를 입력할 생각을 하세요.
  • 아무것도 다시 그리지 않습니다. 없는 디테일은 없는 채로, 고르지 않은 모양은 1배에서도 고르지 않습니다.
  • 실제 이미지에는 정답이 없어서 입력한 크기가 얼마나 좋은지는 눈으로만 판단할 수 있습니다.
  • 픽셀 작업 공간에 없는 것(Aseprite에는 있음): 레이어 그룹, 링크된 셀, 타일맵 레이어, 참조 레이어, RotSprite와 선택 영역 자유 회전·크기 조절(뒤집기와 90°만), 그라디언트·스프레이·윤곽·텍스트 도구, 사용자 브러시(사각·원 1~16px), 타일 반복 그리기, Lua 스크립트와 명령줄.
  • 대칭 축은 숫자로 입력하며 캔버스에서 끌 수 없습니다. 터치에서는 오른쪽 버튼이 없어 배경색은 전환 버튼이나 X로 씁니다.
  • 정리: JPEG는 가깝게 돌아오지만(배경 유지 시 84 %가 ΔE 0.02 이내) 정확히 같은 경우는 드뭅니다(12 %). 모의 생성 그림은 크기를 정확히 맞힌 비율이 20 %(±1px 80 %)이고, 실제 생성 그림 7장은 하나도 자동으로 맞추지 않았습니다. 패널이 제안한 픽셀 크기를 직접 입력해야 합니다.
  • 인덱스 변환은 Aseprite의 RGB 거리가 아니라 Oklab에서 가장 가까운 색을 고릅니다. 시험 스프라이트의 68 % 픽셀이 다른(눈으로 더 가까운) 색이 됐습니다. Lospec 검색이 유일한 네트워크 요청이며 먼저 묻습니다.

버전과 출처

2026-09-25 벤치마크(docs/STUDIO-PIXEL.md §5, docs/pixel-bench/H2H.md): 정답이 있는 모의 사례 10개와 OpenGameArt의 실제 CC0 생성 이미지 7장. 경쟁 도구는 각자의 기본값으로 실행했습니다.

자주 묻는 질문

크기가 다른 픽셀("믹셀")도 고치나요?

자주 고치지만 항상은 아닙니다. 폭이 고르지 않은 가짜 픽셀을 위해 가장자리 추적이 있고, 모의 생성 그림에서 80 %는 크기가 1px 이내로 맞았습니다. 근거가 약하면 불확실이라고 알리고 크기를 입력할 때까지 아무것도 바꾸지 않습니다.

무언가를 새로 생성하거나 다시 그리나요?

아니요. 결과 픽셀은 칸에서 가장 많은 색(또는 Oklab 중간값 색)이고, 팔레트는 그림이나 직접 고른 팔레트에서 옵니다. 원본은 바뀌지 않고 결과는 새 스프라이트입니다.

여러 프레임에 팔레트를 고정하고 안티앨리어싱을 없애려면?

정리 패널에 색 제한과 팔레트 양자화가 있습니다. 기존 픽셀 랩도 여러 프레임을 한 팔레트로 고정하고 안티앨리어싱 가장자리를 맞추며, 아래에 링크가 있습니다.

무료인가요? 계정이 필요한가요?

이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.

스프라이트가 업로드되나요?

아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.

Aseprite나 엔진 플러그인을 설치해야 하나요?

아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).