LUMIQ Studio

2026.10.14 07:37

니콘 Z6로 찍은 RAW 사진을 라이트룸처럼 보정하고 싶었습니다.

다만 일부는 어떤 값을 줄지 판단하는 일은 AI에게 맡기고 싶었습니다.

그렇게 만든 것이 LUMIQ Studio입니다.


LUMIQ Studio란?

한 문장으로 설명하면 이렇습니다.

RAW·JPG 사진을 라이트룸 방식으로 보정해 JPEG로 내보내고, 어떤 값을 줄지는 Claude Code와 대화로 정하는 사진 보정 앱입니다.

  • 노출·화이트밸런스·톤·HSL·톤 커브 등 라이트룸 방식의 보정 항목
  • 원클릭 자동 보정 (얼굴이 있으면 얼굴 노출 우선)
  • AI 노이즈 제거 (SCUNet)
  • 얼굴 피부만 골라 보정하는 피부 보정 (MediaPipe)
  • 프리셋 15종, LUT 12종, 라이트룸 .xmp 프리셋 가져오기
  • 별점·필터·위치(GPS) 추가 같은 사진 정리 기능

원본 사진은 절대 바꾸지 않습니다. 보정값은 사진 옆에 사진이름.lumiq.json 파일로 따로 저장해서 언제든 되돌릴 수 있습니다.


"앱 형태로" 

  • 보정 단계마다 결과를 캐시해 두어서, 슬라이더를 움직이면 1600px 미리보기가 약 0.3초 만에 다시 그려집니다.
  • 라이트룸처럼 R 키로 바로 자르기·회전, 끌어서 쓰는 보정 전·후 비교선, AI 어시스턴트 패널을 차례로 붙였습니다.


앱의 명칭은 LUMIQ Studio, 슬로건은 Light Meets Intelligence., 아이콘은 군더더기 없이 "LQ" 두 글자입니다.

계절과 장소에 맞춘 프리셋(벚꽃, 바다, 야경, 단풍, 설경 등)과 필름·시네마 느낌의 LUT도 이 무렵 추가했습니다. 결과가 아주 마음에 들어서, 프리셋은 "계절 + 장소"로 나누자고 직접 방향을 정했습니다.

막혔던 순간들

① AI 노이즈 제거가 너무 느리다

SCUNet으로 원본 크기 사진의 노이즈를 지우는 데 74초가 걸렸습니다. Apple Silicon GPU(MPS)에서 반정밀도(fp16)로 돌리도록 바꿔 42초로 줄였습니다. 결과 차이는 8비트 기준 한 단계도 안 되는 수준이었습니다.

② 프리셋을 적용하면 사진이 어두워진다

자동 보정을 한 뒤 프리셋을 고르면, 프리셋의 노출 값이 자동 노출을 덮어써서 사진이 오히려 어두워졌습니다. 그래서 프리셋의 노출·톤 값은 자동 보정값을 덮어쓰지 않고 더하도록 바꿨습니다.

③ AI가 엉뚱한 사진을 고친다

"AI 보정을 했는데 적용이 안 된 듯"해서 살펴보니, 다른 사진으로 넘어가서 요청해도 AI는 이전 사진의 값을 계속 고치고 있었습니다. AI 대화가 폴더 단위로 이어졌기 때문입니다.

  • 메시지마다 "지금 보는 사진과 그 보정값 파일"을 앞에 붙이고,
  • 사진을 바꾸면 "이전 사진은 바꾸지 않는다"는 안내를 함께 보내고,
  • 그래도 지금 사진이 안 바뀌면 빨간 경고 카드를 띄우도록 했습니다.

④ "어플리케이션에 등록은 단순 링크네"

응용 프로그램 폴더에 넣은 첫 앱은 알고 보니 16줄짜리 실행 스크립트였습니다. 이번에는 "만들지 말고 확인부터 하자"고 하고, 소스 폴더 없이도 앱 하나로 실행되는 것을 조건으로 정했습니다.

  • 독립 실행용 Python과 필요한 패키지를 앱 안에 통째로 넣었습니다.
  • PySide6는 실제로 쓰는 모듈만 남겨 1.2GB에서 95MB로 줄였습니다.
  • EXIF 기록에 쓰는 exiftool도 함께 넣었습니다.

완성된 앱은 1.3GB이고, 소스로 실행했을 때와 픽셀 단위로 같은 결과가 나오는 것까지 확인했습니다.

⑤ RAW만 열면 사진이 어둡다

가장 오래 붙잡은 문제입니다. 같은 사진인데 RAW로 열면 카메라 JPEG보다 중간톤이 약 3.7스톱이나 어두웠습니다. 원인은 세 가지가 겹친 것이었습니다.

  • 니콘의 액티브 D-라이팅이 하이라이트를 지키려고 RAW를 일부러 어둡게 찍음
  • 카메라의 픽처 컨트롤 커브는 RAW 현상에 반영되지 않음
  • 앱의 기본 톤 커브가 약함

그래서 NEF 파일 안에 들어 있는 카메라 JPEG를 기준으로 밝기와 채도를 맞추는 카메라 톤 맞추기를 만들었습니다. 평균 밝기 차이가 약 70에서 2~3(255 기준)으로 줄었고, 사진마다 켜고 끌 수 있습니다.

5. Claude Code와 일하는 방식

LUMIQ의 AI 어시스턴트는 API 키를 쓰지 않습니다. 앱이 이 컴퓨터에 로그인된 Claude Code를 직접 불러서, 지금 보는 사진의 보정값 파일을 고치게 합니다. 그래서 API 요금이 따로 나가지 않고, 쓰고 있는 Claude 요금제 안에서 동작합니다.

실제로 앱에서 이렇게 대화했습니다.

  • "노출만 0.3 더 밝게" → 노출 1.6 → 1.9
  • "가을 느낌이 더 진하게" → 색온도 7000K, 초록 색조 −25, 생동감 +15
  • "대비가 강한 것이 좋아" → 대비 +30
  • "피부를 화사하게" → 피부 밝기 +10, 매끈함 +12

"왼쪽 인물의 가방 제거해 줘"처럼 지원하지 않는 요청은 할 수 없다고 답합니다.

만드는 동안 역할도 자연스럽게 나뉘었습니다.

  • 제가 정한 것: 전체 구조(API 없이 Claude Code가 판단), 앱으로 만들기, 이름·슬로건·아이콘, 프리셋 구성, 별점 방식, 보정값을 사진 옆에 저장하기
  • Claude가 정한 것: 화면 라이브러리(PySide6), 캐시 구조, GPU 가속 방식, 앱 묶는 방법, 액티브 D-라이팅 원인 진단과 해결 방법

요청이 애매할 때는 Claude가 먼저 선택지를 내밀었습니다. 저장 방식이나 화면 배치처럼 정하기 어려운 것은 미리보기와 함께 두세 가지 안을 보여 주고 고르게 했습니다.

아직 남은 숙제

  • 라이트룸과 비슷하게 맞춘 근사치입니다. .xmp의 프로파일과 마스크(부분 보정)는 아직 적용되지 않습니다.
  • 100% 확대는 미리보기를 키운 것이라 실제보다 흐립니다. 원본 해상도로 다시 그리는 기능이 필요합니다.
  • 별점을 내보낸 JPEG에 기록하는 기능, 한글 입력 상태에서도 동작하는 단축키도 남아 있습니다.
  • 물체 지우기 같은 생성형 편집은 지원하지 않습니다.


소스는 GitHub에 있습니다: github.com/mifplus-git/LUMIQ

댓글 0

25VFB ↻
아직 댓글이 없습니다.