이번에 작업한 부분
포토샷 한계값 도구에서 밝기를 두 값으로 나누는 판정과 화면 표시를 정리했습니다.
포토샷 한계값 도구에서 밝기를 두 값으로 나누는 판정과 화면 표시를 정리했습니다.
개발 기록 재구성 · 공개 코드 v0.16.0 기준 / 2026.10.13
구현 과정 읽기 ↓
Development journal / 15
기존 개발 기록과 공개 코드를 바탕으로 구현 과정을 정리했습니다. 아래 인물 사진은 2026.10.13에 새로 제작한 동작 예시입니다.
포토샷 한계값 도구에서 밝기를 두 값으로 나누는 판정과 화면 표시를 정리했습니다.
R·G·B의 가중 밝기를 정수로 반올림하고, 기준 이상이면 흰색, 미만이면 검정으로 바꿉니다.
경계에서 한 값만 달라도 결과가 뒤집힙니다. 공통 히스토그램과 실제 판정이 서로 다른 밝기 계수를 쓰므로 유채색에서 그래프를 판정값과 같다고 설명할 수도 없습니다.
반올림 뒤에 '이상'으로 비교하는 순서를 명시하고, 히스토그램과 판정식의 차이를 기록했습니다.
외부 GitHub에서 판정 코드를 가져온 기록은 확인되지 않았습니다. 실제 계산과 히스토그램 구현을 각각 연결합니다.
이번 사진은 기준 142로 편집했습니다. 색이 두 값으로 나뉘는 동작과 별개로, 흰 영역이 자동 투명해지는 기능은 아닙니다.

AFTERBEFORE새 인물 사진을 포토샷에서 임계값 142로 편집했습니다. 일반적인 흑백 변환과 다른 원리, 밝기를 계산하는 기준을 작업기에 정리했습니다.
사진 위를 좌우로 움직여 비교하세요. 키보드로는 비교 막대에 초점을 맞춘 뒤 방향키를 사용하면 됩니다.
인물 사진은 새로 생성한 AI 이미지입니다. 편집 결과는 실제 Photoshot에서 적용하고 내보냈습니다. 아래 값은 이 사진의 실습값이며 모든 사진에 맞는 권장값은 아닙니다.
STEP 01 / 도구 찾기
사진을 연 뒤 상단 Add Adjustment에서 Threshold를 선택합니다. 아래는 실제 편집기에서 해당 도구의 위치를 확인한 화면입니다.

STEP 02 / 직접 조절
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 새 사진 실습과 설정값은 다를 수 있으며, 현재 편집기의 모든 기능을 이 버전의 코드와 동일하다고 설명하는 것은 아닙니다.
기준값은 0~255 범위이며 기본값은 128입니다. 예제에서는 96·128·152 순으로 올렸습니다. 기준을 올릴수록 흰색으로 남으려면 더 밝아야 합니다.
패널에는 밝기 분포와 현재 기준값의 위치를 함께 표시했습니다. 히스토그램의 높이는 로그값으로 압축해 작은 분포도 볼 수 있게 했습니다. 공통 히스토그램은 0.2126·0.7152·0.0722 가중치를 사용하고, 임계값 판정은 아래의 0.3·0.59·0.11 식을 사용합니다. 따라서 유채색에서 그래프의 위치와 실제 판정값은 정확히 일치하지 않을 수 있습니다.
위 사진은 기준 152의 최종 결과입니다. 배경의 어두운 영역은 검정으로, 흰 옷의 밝은 영역은 흰색으로 남습니다. 원본의 중간톤 정보는 이 출력에 그대로 남지 않습니다.
새 레이어는 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에서 회색 입력을 실제 함수로 처리한 결과입니다. 127과 128이 어떻게 나뉘는지 확인할 수 있습니다.
결과가 화면에서 회색처럼 보일 때는 원본과 섞는 불투명도, 마스크, 화면 축소의 보간도 확인해야 합니다. 판정 함수 자체의 출력은 세 채널 모두 0 또는 255입니다.
| 입력 회색 | 판정값 | 최종 RGB |
|---|---|---|
| 126 | 126 | 0 · 0 · 0 |
| 127 | 127 | 0 · 0 · 0 |
| 128 | 128 | 255 · 255 · 255 |
| 129 | 129 | 255 · 255 · 255 |
08편 흑백은 원래 색에 따라 서로 다른 회색 밝기를 남깁니다. 임계값은 계산한 밝기를 두 값으로 다시 나눕니다. 이름은 둘 다 흑백 결과를 떠올리게 하지만 출력 정보량은 다릅니다.
이 계산도 공통 조정 레이어 경로를 사용합니다. 완전히 투명한 픽셀은 건너뛰고, 나머지 픽셀은 원래 알파를 유지합니다. 사진의 실루엣이나 대비 구조를 점검하는 용도로 사용할 수 있지만, 흰색 영역을 자동으로 투명하게 만드는 기능은 아닙니다.
| 레이어 | 출력의 기준 |
|---|---|
| 흑백 | 원래 색상별 가중치 → 연속 회색 |
| 포스터화 | R·G·B 각각 → 정해진 단계 |
| 임계값 | 가중 밝기 → 검정 또는 흰색 |