사진 필터가 사진마다 다르게 나오는 이유

사진에 빈티지 필터를 걸었는데 어떤 사진은 근사하게 나오고 어떤 사진은 탁하고 이상하게 나온 적이 있을 겁니다. 같은 프리셋, 같은 강도인데도 사진마다 결과가 다른 이유는 필터가 고정된 색을 덧씌우는 게 아니라 원본 사진의 색상값을 기준으로 계산되는 상대적인 연산이기 때문입니다.
요약 ① 사진 필터는 원본에 고정된 색을 씌우는 게 아니라 원본 픽셀값을 기준으로 대비·채도·밝기를 곱하거나 더하는 연산입니다. ② 그래서 이미 어둡거나 채도가 높은 사진일수록 같은 필터값에도 결과가 크게 달라집니다. ③ 필터 강도 슬라이더는 필터값 자체를 줄이는 게 아니라 필터 적용 결과와 원본을 겹쳐 섞는(블렌딩) 방식입니다.
문제 — 왜 같은 필터인데 사진마다 다르게 나오나
여행 사진 두 장에 똑같이 빈티지 필터를 걸었는데 한 장은 은은한 노을빛이 돌고 다른 한 장은 뿌옇게 색이 죽어버리는 경우가 흔합니다. 프리셋 이름과 강도 수치가 같으니 결과도 같아야 할 것 같은데 실제로는 딴판입니다.
이런 차이를 보고 도구가 사진마다 다른 값을 몰래 적용한다고 오해하기 쉽지만, 실제로는 필터 자체가 사진의 원래 색상·명암을 입력값으로 삼아 계산되는 상대적 연산이라 생기는 정상적인 결과입니다. 계산 구조를 알면 왜 그런지, 어떤 사진에 어떤 필터가 잘 맞는지도 예측할 수 있습니다.
해결 — 필터가 실제로 계산되는 방식
사진 편집 프로그램의 필터·보정 기능은 대부분 색상 자체를 새로 그리는 게 아니라 웹 표준 CSS 필터 함수와 같은 방식으로 동작합니다. sepia()·contrast()·saturate()·brightness()·grayscale() 같은 함수는 "정해진 색을 칠하는" 게 아니라 각 픽셀의 기존 값에 곱셈·덧셈 연산을 적용하는 함수입니다.
이 구조는 개발자 도구만 있어도 확인할 수 있습니다. 임의의 사진을 웹페이지에 올려놓고 요소 검사에서 그 이미지에 filter: sepia(0.85) contrast(1.05) 스타일을 걸어보면, 원본이 밝은 사진과 어두운 사진에서 결과가 서로 다르게 나오는 걸 바로 눈으로 볼 수 있습니다.
즉 같은 sepia(0.4)라도 원본이 파란 톤이 강한 사진과 이미 노란 톤인 사진에서는 계산 결과가 다를 수밖에 없습니다. 프리셋에 딸린 반투명 오버레이나 비네트는 사진과 무관하게 고정값으로 더해지지만, 필터 함수 자체는 원본에 상대적으로 걸린다는 점이 핵심입니다.
저희 도구로 실제 사진에 적용해 확인하기. 직접 사진을 올려 프리셋별로 계산 결과가 어떻게 달라지는지 바로 비교해볼 수 있습니다.
무료 · 가입 불필요 · 사진은 브라우저에서만 처리(서버 미전송)

필터 강도 슬라이더의 진짜 동작
"효과 강도 70%"라고 하면 필터값 자체가 70%로 줄어든다고 생각하기 쉽지만 실제 동작은 다릅니다. 먼저 프리셋을 100% 강도로 온전히 계산한 뒤, 그 결과 위에 원본 사진을 강도만큼 투명하게 겹쳐 그리는 방식입니다. 즉 강도는 필터 세기 조절이 아니라 "완성된 필터 사진"과 "원본 사진"을 섞는 비율입니다.
이 방식 때문에 강도를 낮추면 필터가 흐릿하게 약해지는 게 아니라 원본의 선명한 디테일이 다시 비쳐 보이는 형태로 완화됩니다. 프리셋마다 아래처럼 서로 다른 계산이 겹쳐 있습니다.
| 프리셋 | 필터 함수 | 추가 레이어 |
|---|---|---|
| 세피아 | sepia 0.85 + contrast 1.05 | 없음 |
| 빈티지 | sepia 0.4 + contrast 0.9 + brightness 1.05 + saturate 0.85 | 주황 오버레이 12% + 비네트 |
| 쿨(시원) | saturate 1.1 + brightness 1.02 | 파란 오버레이 14% |
| 웜(따뜻) | saturate 1.15 + brightness 1.03 | 주황 오버레이 14% |
| 비비드 | contrast 1.15 + saturate 1.35 + brightness 1.02 | 없음 |
| 페이드(매트) | contrast 0.85 + brightness 1.1 + saturate 0.9 | 흰색 오버레이 8% |
| 느와르 | grayscale 1 + contrast 1.4 + brightness 0.95 | 비네트(강) |
표에서 보듯 오버레이(색 레이어)나 비네트(가장자리 어둡게)가 붙는 프리셋은 사진 밝기와 무관하게 일정한 톤을 더하지만, 필터 함수 자체는 원본 픽셀값에 상대적으로 걸리기 때문에 두 요소가 섞여 최종 결과가 사진마다 달라지는 겁니다.
정리
같은 필터, 같은 강도라도 사진마다 결과가 다른 건 오류가 아니라 필터 함수가 원본 색상값을 기준으로 계산되는 상대적 연산이기 때문입니다. 효과 강도 슬라이더 역시 필터 세기를 줄이는 게 아니라 완성된 필터 사진과 원본을 섞는 비율이라는 점을 함께 기억해두면 결과를 예측하기 쉬워집니다.
원하는 느낌이 안 나올 때는 필터를 의심하기 전에 원본 사진의 밝기·채도부터 먼저 살펴보는 게 순서입니다.
무료 · 가입 불필요 · 사진은 브라우저에서만 처리(서버 미전송)
자주 묻는 질문
필터 강도를 50%로 하면 절반만 적용되나요?
아닙니다. 필터를 100% 강도로 계산한 뒤 그 결과와 원본 사진을 5:5 비율로 투명하게 겹쳐 섞는 방식입니다. 그래서 50%는 필터가 흐릿해지는 게 아니라 원본의 색과 디테일이 절반쯤 다시 비쳐 보이는 형태로 나타납니다.
어두운 사진에 세피아를 걸면 왜 지저분하게 나오나요?
세피아 같은 필터 함수는 원본 픽셀의 명암·채도를 기준으로 계산되기 때문에, 이미 어둡거나 그림자가 많은 사진에서는 색이 뭉치거나 탁하게 나올 수 있습니다. 밝고 대비가 고른 사진일수록 필터 결과가 의도한 톤에 가깝게 나옵니다.
JPG와 PNG 중 어떤 형식으로 저장해야 하나요?
공유용으로는 용량이 작은 JPG가 대부분 충분합니다. 필터 적용 사진을 다시 편집하거나 인쇄용으로 화질 손실 없이 보관하려면 PNG(무손실)를 선택하는 게 유리합니다.
사진이 서버로 업로드되나요?
아니요. 필터 계산은 브라우저의 캔버스 안에서만 이뤄지며 원본 사진과 결과 이미지 모두 사용자의 기기를 벗어나지 않습니다.
