PollyGotACracker

pixel-edit

원본 래스터 이미지의 해상도와 비대상 픽셀을 보존하면서 지정 영역만 결정론적으로 수정하는 정밀 이미지 편집 작업을 수행한다.

PollyGotACracker 0 Actualitzat fa 3 setm.
GitHub

Instal·la

npx skillscat add pollygotacracker/brainstack/pixel-edit

Instal·la des del registre de SkillsCat.

SKILL.md

Deterministic Pixel Edit

  • 작업 방식은 기존 PNG/JPEG 등 래스터 이미지의 재생성 없는 직접 수정이다.
  • 적용 대상은 원본 보존이 핵심인 색상 치환, 무채색화, 흰색화, 투명화, 작은 국소 보정이다.

1. 사용 조건

적용 요청

다음 요청에 사용한다.

  • 특정 영역의 색상 변경
  • 원본 비율의 해상도 유지
  • 수정 범위를 지정 영역으로 한정
  • 원본 해상도와 비대상 픽셀 보존이 필수인 작업
  • 수정 영역 밖 pixel diff=0 검증이 필요한 작업

이관 요청

다음 요청은 image-edit으로 이관한다.

  • 새로운 물체 생성
  • 포즈 변경
  • 형태 재구성
  • 자연스러운 인페인팅
  • 그림체 변환
  • 원본에 존재하지 않는 시각 요소 생성

2. 필수 도구

실행 도구

다음 도구를 반드시 사용한다.

  • container.exec
  • Python 3
  • Pillow (PIL)
  • NumPy (numpy)

런타임 Python 파일

확인 항목

편집·검증 전 다음 사항을 확인한다.

  • 현재 환경이 필수 실행 도구·라이브러리를 제공하는지 확인한다.
  • GPT 실행 환경에서 작업 폴더의 "scripts/"에 다음 이름의 Python 파일을 생성·실행할 수 있는지 확인한다.
    • "edit_image.py"
    • "verify_image.py"
  • 두 파일은 저장소 지원 파일이 아닌 작업마다 생성·실행하는 런타임 Python 파일로 취급한다.

필수 조건이 충족된 경우 편집 후 검증 순서로 실행한다.

실행 불가 처리

  • 환경이 부적합한 경우 해당 편집·검증을 현재 환경에서 실행할 수 없음을 설명한다.
  • 다음 사항을 기록한다.
    • 관측 근거(제공된 도구 목록·확인한 파일 경로·실제 오류 등)
    • 이유
    • 영향받는 단계
  • 실행하지 못한 단계는 [미측정]으로 표시한다.
  • 확인하지 못한 조건은 미확인으로 분류하고 그 사유를 기재한다.
  • 현재 환경의 실행 불가와 과거 실행 여부·지원 액션의 확인을 구분한다.
  • 과거 실행은 당시 기록으로만 판단한다.

도구 변경

  • 기존 도구와 런타임 Python 파일의 실행 조건을 유지한다.
  • 대체 도구·스크립트가 필요한 경우 대상과 영향을 제시하고 사용자 승인 후 변경한다.

적용 보고 기준

이 Skill의 적용 사실은 다음 두 실행이 모두 확인된 경우에 보고한다.

  1. "edit_image.py"를 실행한다.
  2. "verify_image.py"를 실행한다.
  • 2개 런타임 Python 파일 실행은 현재 작업의 원본·결과·사양 파일에 대응해야 한다.

  • 적용 근거로 실행 명령과 결과를 기록한다.

  • 문서 열람이나 계획 작성만 한 경우 실제 수행 단계와 [미측정] 실행을 구분해 보고한다.

  • 2개 런타임 Python 파일 실행의 근거가 부족한 경우에도 같은 기준을 적용한다.

3. 제외 도구

다음 도구는 이 Skill의 실제 편집 단계에서 제외한다.

  • image_gen.text2im

사용자가 결정론적 픽셀 편집을 요청했는데 ImageGen을 호출한 경우 이 Skill 적용 실패로 판정한다.

4. 핵심 보존 규칙

완료 조건

기본 완료 조건은 다음과 같다.

width_before == width_after
height_before == height_after
mode: 전후 값을 기록하고 같으면 PASS, 다르면 사용자 허용 기록과 일치하는 변경만 PASS, 허용되지 않은 변경은 FAIL, 전후 값이나 허용 여부를 확인하지 못하면 [미측정]
pixel_diff_outside_allowed_mask == 0

제외 처리

다음 처리는 수행 대상에서 제외한다.

  • resize
  • crop
  • 전체 이미지 재생성
  • 자동 미화
  • 전역 샤프닝
  • 전역 노이즈 제거
  • 사용자가 지정하지 않은 색보정

5. CHANGE SET

  • 편집 전 사용자가 요청한 대상과 수행할 변경을 CHANGE SET의 항목별로 기록한다.
  • 요청한 변경의 누락 또는 요청 밖 변경의 추가 여부를 원문과 대조한다.

예:

CHANGE SET
- 상단 수첩 종이 영역을 흰색으로 변경
- FRONT 수첩 종이 영역을 흰색으로 변경
- 깃털 브로치의 주황색 픽셀만 무채색으로 변경

6. ALLOWED MASK

적용 범위

  • 각 편집 동작은 해당 동작에 정의한 ALLOWED MASK 안의 픽셀에 적용한다.
  • 마스크 밖 보존 여부는 11절의 OUTSIDE MASK CHECK(X028) 결과로 확인한다.

마스크 정의

마스크는 다음 중 하나로 정의한다.

  • 사각형 rect
  • 다각형 polygon
  • 별도 마스크 PNG mask_path

색 선택 조건

색 선택 조건이 있는 경우 두 조건을 모두 만족하는 픽셀만 편집 대상으로 선택한다.

  • 해당 동작의 ALLOWED MASK
  • 색 조건

7. 편집 사양 파일

사양 작성

  • 편집 전 JSON 사양 파일을 작성한다.
  • 각 operation의 대상 영역·필요한 색 선택 조건·액션을 CHANGE SET과 대조한다.
  • 요청한 변경의 누락과 요청 밖 동작의 추가 여부를 확인한다.

예:

{
  "operations": [
    {
      "name": "notebook-paper",
      "region": { "rect": [100, 120, 180, 220] },
      "select": { "rgb_min": [180, 160, 120], "rgb_max": [255, 240, 210] },
      "action": { "type": "set_rgb", "value": [255, 255, 255] }
    },
    {
      "name": "brooch-orange-to-gray",
      "region": {
        "polygon": [
          [200, 200],
          [240, 200],
          [240, 250],
          [200, 250]
        ]
      },
      "select": {
        "hsv": { "h_min": 5, "h_max": 45, "s_min": 70, "v_min": 40 }
      },
      "action": { "type": "grayscale" }
    }
  ]
}

좌표 근거

  • 좌표 지정 시 실제 원본 이미지에서 변경 대상 영역을 확인한다.
  • 입력 좌표의 지시 영역과 원본 이미지의 대응 근거를 기록한다.
  • 대상 영역이나 좌표의 대응 근거를 확인할 수 없으면 해당 영역의 좌표 지정과 편집을 보류한다.
  • 확인이 필요한 영역과 사유를 보고한다.

8. 실행 순서

아래 순서의 모든 단계를 차례로 수행한다.

준비 단계

  1. 편집할 원본 파일의 경로를 절대 경로로 확인하고 파일 존재 여부를 기록한다.
    파일이 없는 경우 해당 원본의 편집을 보류하고 경로와 사유를 보고한다.
  2. 확인한 경로의 원본 이미지를 열어 width·height·mode를 경로와 함께 기록한다.
    열기나 속성 확인에 실패한 경우 확인하지 못한 속성을 [미측정]으로 표시한다.
    해당 원본의 편집을 보류한다.
  3. 5절의 변경 목록 기준(X011)에 따라 CHANGE SET을 준비한다.
  4. 6절의 마스크 기준(X012·X013)에 따라 각 변경의 ALLOWED MASK를 준비한다.
  5. 7절의 사양 작성 기준(X015)에 따라 JSON 사양 파일을 준비한다.

실행 단계

  1. 2절의 런타임 Python 파일 조건(X004)을 적용한다.
    "scripts/edit_image.py"를 container.exec으로 실행한다.
  2. 2절의 런타임 Python 파일 조건(X004)을 적용한다.
    "scripts/verify_image.py"를 container.exec으로 실행한다.

판정 단계

  1. 검증 실패 시 13절의 제출 판정(X036)을 적용한다.
  2. 검증 실패 시 12절의 원본 기준·마스크·색 조건 조정과 재실행 순서(X034)를 적용한다.
  3. 검증 후 13절의 제출 판정(X036)에 따라 결과물 제출과 완료 보고 여부를 결정한다.

9. 실행 명령

편집:

python scripts/edit_image.py \
  --input /path/input.png \
  --output /path/output.png \
  --spec /path/spec.json

검증:

python scripts/verify_image.py \
  --input /path/input.png \
  --output /path/output.png \
  --spec /path/spec.json

10. 지원 편집 동작

편집 액션

"scripts/edit_image.py"는 다음 액션을 지원한다.

  • set_rgb
  • grayscale
  • set_alpha

선택 조건

선택 조건은 다음 항목을 지원한다.

  • 선택 조건 없음(마스크 전체 수정)
  • rgb_min / rgb_max
  • HSV 범위

11. 검증 기준

DIMENSION CHECK

  • 원본과 출력 파일을 열어 각각의 width·height를 기록한다.
    4절의 치수 보존 조건(X007)과 대조한다.
  • width·height별로 다음과 같이 기록한다.
    • 같으면 PASS
    • 다르면 FAIL
    • 파일을 열거나 치수를 확인하지 못하면 [미측정]

OUTSIDE MASK CHECK

  • 현재 편집 사양의 ALLOWED MASK 밖에서 원본과 출력을 비교한다.
    같은 좌표에서 픽셀 값이 다른 픽셀 수를 계산해 기록한다.
    4절의 보존 조건(X009)에 따라 다음과 같이 판정한다.
    • 0이면 PASS
    • 1개 이상이면 FAIL
    • 원본·출력·마스크를 확보하지 못해 계산할 수 없으면 [미측정]
    • 비교 기준을 확정하지 못해 계산할 수 없으면 [미측정]

CHANGE CHECK

  • ALLOWED MASK 안의 변경 픽셀 수와 요청한 목표 상태 충족 여부를 확인한다.
    원본이 이미 목표 상태인 경우 변경 없이 PASS로 판정한다.
    이때 변경 픽셀 0개와 충족 근거를 기록한다.
    목표 상태를 확인하지 못한 경우 [미측정]으로 판정한다.
    목표 상태를 충족하지 못한 경우 FAIL로 판정한다.
  • 요청한 액션이 적용됐는지 확인한다.

FILE CHECK

  • 출력 파일이 열리는지 확인한다.
  • 기본 크기 보존은 위 DIMENSION CHECK(X027)의 width·height 판정을 사용한다.

판정 값

판정은 다음 세 값만 사용한다.

  • PASS
  • FAIL
  • [미측정]

12. 실패 처리

수정 순서

검증이 FAIL인 경우 다음 순서로 수정한다.

  1. 출력 파일 제출을 보류한다.
  2. 원본을 다시 기준으로 사용한다.
  3. ALLOWED MASK 범위를 축소한다.
  4. 색 선택 조건을 조정한다.
  5. 편집 스크립트를 재실행한다.
  6. 검증 스크립트를 재실행한다.

재작업 입력

재작업 입력에는 이 절의 원본 기준(X034)을 적용한다.

13. 제출 조건

제출 기준

결과물 제출과 완료 보고는 아래 두 실행이 완료되고 나머지 모든 항목이 PASS인 경우에 수행한다.

  • "edit_image.py" 실제 실행 완료
  • "verify_image.py" 실제 실행 완료
  • width 동일 판정이 PASS이다.
  • height 동일 판정이 PASS이다.
  • ALLOWED MASK 밖 pixel diff=0 판정이 PASS이다.
  • CHANGE SET 반영 판정이 PASS이다.
  • 출력 파일 정상 로드 판정이 PASS이다.

보류 처리

  1. 실행이 완료되지 않았거나 항목에 FAIL 또는 [미측정]이 있는 경우 제출과 완료 보고를 보류한다.
  2. 해당 항목과 실제 판정 및 근거를 보고한다.

14. 적용 증거

보고 항목

최종 보고에는 최소한 다음 사항을 기록한다.

사용 Skill: pixel-edit
필수 실행 도구: container.exec + Python 3 + Pillow + NumPy
편집 스크립트: scripts/edit_image.py
검증 스크립트: scripts/verify_image.py
실제 실행: 완료
마스크 밖 변경 픽셀: 0

작성 기준

위 적용 증거의 실행 여부는 2절의 적용 보고 기준(X005)에 따라 작성한다.