← Photoshot · 사용법과 개발기↗편집기 열기
Photoshot / Field notesNo. 14

기준값과 같은 픽셀은 검정일까 흰색일까

포토샷 한계값 도구에서 밝기를 두 값으로 나누는 판정과 화면 표시를 정리했습니다.

개발 기록 재구성 · 공개 코드 v0.16.0 기준 / 2026.10.13

구현 과정 읽기 ↓
임계값 편 전용 AI 인물 사진
PORTRAIT STUDY / 15AI-generated image

Development journal / 15

만드는 과정에서 결정한 것들

기존 개발 기록과 공개 코드를 바탕으로 구현 과정을 정리했습니다. 아래 인물 사진은 2026.10.13에 새로 제작한 동작 예시입니다.

01

이번에 작업한 부분

포토샷 한계값 도구에서 밝기를 두 값으로 나누는 판정과 화면 표시를 정리했습니다.

02

어떻게 구성했나

R·G·B의 가중 밝기를 정수로 반올림하고, 기준 이상이면 흰색, 미만이면 검정으로 바꿉니다.

03

풀어야 했던 문제

경계에서 한 값만 달라도 결과가 뒤집힙니다. 공통 히스토그램과 실제 판정이 서로 다른 밝기 계수를 쓰므로 유채색에서 그래프를 판정값과 같다고 설명할 수도 없습니다.

04

무엇을 참고하고 어떻게 적용했나

반올림 뒤에 '이상'으로 비교하는 순서를 명시하고, 히스토그램과 판정식의 차이를 기록했습니다.

외부 GitHub에서 판정 코드를 가져온 기록은 확인되지 않았습니다. 실제 계산과 히스토그램 구현을 각각 연결합니다.

포토샷에서 작성한 구현

05

현재 결과와 확인 범위

이번 사진은 기준 142로 편집했습니다. 색이 두 값으로 나뉘는 동작과 별개로, 흰 영역이 자동 투명해지는 기능은 아닙니다.

Actual screen / 실제 동작 확인임계값
편집 전 원본실제 Photoshot에서 내보낸 편집 결과AFTERBEFORE

회색 없이, 검정과 흰색만 남기는 기준

새 인물 사진을 포토샷에서 임계값 142로 편집했습니다. 일반적인 흑백 변환과 다른 원리, 밝기를 계산하는 기준을 작업기에 정리했습니다.

THIS SESSIONThreshold 142

사진 위를 좌우로 움직여 비교하세요. 키보드로는 비교 막대에 초점을 맞춘 뒤 방향키를 사용하면 됩니다.
인물 사진은 새로 생성한 AI 이미지입니다. 편집 결과는 실제 Photoshot에서 적용하고 내보냈습니다. 아래 값은 이 사진의 실습값이며 모든 사진에 맞는 권장값은 아닙니다.

Photoshot에서 직접 해보기 ↗

STEP 01 / 도구 찾기

Threshold 열기

사진을 연 뒤 상단 Add Adjustment에서 Threshold를 선택합니다. 아래는 실제 편집기에서 해당 도구의 위치를 확인한 화면입니다.

01 · Add Adjustment에서 Threshold의 위치 확인
01 · Add Adjustment에서 Threshold의 위치 확인

STEP 02 / 직접 조절

사진을 보며 값을 조절합니다

Threshold에 142를 입력합니다. 값의 위아래에서 얼굴과 흰 셔츠가 검정·흰색으로 나뉘는 위치를 살펴봅니다.

02 · 실제 Threshold 패널과 적용값 / Threshold 142
02 · 실제 Threshold 패널과 적용값 / Threshold 142

STEP 03 / 레이어 표시를 껐다 켜거나 Hold to Compare로 원본을 비교한 뒤 File → Export As… → Download로 결과를 저장합니다. 위 전후 비교의 AFTER는 이 편집기에서 직접 내보낸 이미지입니다. 화면을 누르면 원본 크기로 확대됩니다.

계산식·소스 설명 자세히 보기

02 / Behind the tool

화면 뒤의 구현 이야기

아래는 기존 작업기의 공개 코드 v0.16.0 기준 설명과 계산 예제입니다. 2026.10.01 기록의 수치·검증 설명을 보존했습니다. 위의 2026.10.13 새 사진 실습과 설정값은 다를 수 있으며, 현재 편집기의 모든 기능을 이 버전의 코드와 동일하다고 설명하는 것은 아닙니다.

01

슬라이더와 히스토그램을 함께 보여줍니다

기준값은 0~255 범위이며 기본값은 128입니다. 예제에서는 96·128·152 순으로 올렸습니다. 기준을 올릴수록 흰색으로 남으려면 더 밝아야 합니다.

패널에는 밝기 분포와 현재 기준값의 위치를 함께 표시했습니다. 히스토그램의 높이는 로그값으로 압축해 작은 분포도 볼 수 있게 했습니다. 공통 히스토그램은 0.2126·0.7152·0.0722 가중치를 사용하고, 임계값 판정은 아래의 0.3·0.59·0.11 식을 사용합니다. 따라서 유채색에서 그래프의 위치와 실제 판정값은 정확히 일치하지 않을 수 있습니다.

위 사진은 기준 152의 최종 결과입니다. 배경의 어두운 영역은 검정으로, 흰 옷의 밝은 영역은 흰색으로 남습니다. 원본의 중간톤 정보는 이 출력에 그대로 남지 않습니다.

02

색마다 다른 비율로 밝기에 반영합니다

새 레이어는 8비트 R·G·B에 각각 0.3·0.59·0.11을 곱해 더하고, 정수로 반올림합니다. 이 숫자를 기준값과 비교합니다.

const value = Math.round(
  0.3 * R + 0.59 * G + 0.11 * B
);
const output = value >= threshold ? 1 : 0;
out.fill(output);

이 식은 화면의 RGB 값에서 계산한 가중 밝기입니다. sRGB를 선형화한 뒤 물리적인 휘도를 구하는 계산과는 구분해야 합니다.

R·G·B가 같은 회색은 그 값이 그대로 판정값이 됩니다. 순수 빨강·초록·파랑은 가장 큰 채널값이 모두 255여도 판정값은 서로 다릅니다.

순수 빨강 초록 파랑에 기준128과152를 적용한 결과
순색의 판정값은 빨강77·초록150·파랑28입니다. 초록은 기준128에서 흰색, 기준152에서 검정이 됩니다.
03

기준과 같은 값은 흰색으로 처리합니다

비교 연산을 >=로 정했기 때문에 기준 바로 아래는 검정이고, 기준과 같은 값부터 흰색입니다. 이 경계는 한 값 차이로 바뀌므로 반올림 순서도 함께 명시했습니다.

표는 기준값 128에서 회색 입력을 실제 함수로 처리한 결과입니다. 127과 128이 어떻게 나뉘는지 확인할 수 있습니다.

결과가 화면에서 회색처럼 보일 때는 원본과 섞는 불투명도, 마스크, 화면 축소의 보간도 확인해야 합니다. 판정 함수 자체의 출력은 세 채널 모두 0 또는 255입니다.

기준128 · 일반 합성 · 불투명도100% · 마스크 없음.
입력 회색판정값최종 RGB
1261260 · 0 · 0
1271270 · 0 · 0
128128255 · 255 · 255
129129255 · 255 · 255
04

흑백 레이어와 임계값을 구분했습니다

08편 흑백은 원래 색에 따라 서로 다른 회색 밝기를 남깁니다. 임계값은 계산한 밝기를 두 값으로 다시 나눕니다. 이름은 둘 다 흑백 결과를 떠올리게 하지만 출력 정보량은 다릅니다.

이 계산도 공통 조정 레이어 경로를 사용합니다. 완전히 투명한 픽셀은 건너뛰고, 나머지 픽셀은 원래 알파를 유지합니다. 사진의 실루엣이나 대비 구조를 점검하는 용도로 사용할 수 있지만, 흰색 영역을 자동으로 투명하게 만드는 기능은 아닙니다.

같은 사진에도 목적에 따라 다른 조정을 사용합니다.
레이어출력의 기준
흑백원래 색상별 가중치 → 연속 회색
포스터화R·G·B 각각 → 정해진 단계
임계값가중 밝기 → 검정 또는 흰색

구현 코드와 참고 자료

공개 코드는 구현을 설명하기 위한 참조입니다. 사용·배포 조건은 저장소의 라이선스 표기를 확인하세요. 사진·패널은 자체 제작 자료, 장식 이미지는 AI 생성 이미지입니다.

모든 사용법·개발기 보기 ↗↗직접 편집해 보기