
'원본'이라는 환상, 그리고 데이터가 정보가 되기까지의 여정
디지털 카메라의 Raw 데이터가 사진이 되는 과정을 통해, 엔지니어링의 본질과 데이터 가공의 중요성에 대해 이야기합니다.
송찬영
CTO

안녕하세요. 풀링포레스트 CTO 송찬영입니다.
개발자로서, 혹은 데이터 엔지니어로서 우리는 늘 'Raw Data(원천 데이터)'의 중요성을 이야기합니다. 가공되지 않은 순수한 데이터가 가장 진실에 가깝다고 믿기 때문이죠. 하지만 최근 접한 한 흥미로운 기술 아티클을 통해, 우리가 믿는 그 '순수함'이라는 것이 얼마나 공허한 것인지 다시금 깨닫게 되었습니다. 오늘은 디지털 카메라의 센서가 포착한 날것의 데이터가 우리가 보는 '사진'이 되기까지의 과정을 통해, 엔지니어링의 본질에 대해 이야기해보고자 해요.

우리가 흔히 'Raw 파일'이라고 부르는 사진 파일의 내부를 들여다보면, 그곳에는 아름다운 풍경도, 따뜻한 크리스마스 트리도 존재하지 않습니다. 그저 14비트 ADC(Analog-to-Digital Converter)가 뱉어낸 0에서 16,382 사이의 숫자들만이 가득할 뿐입니다. 이 데이터를 그대로 시각화하면 위 이미지처럼 칙칙한 회색 덩어리에 불과합니다. 심지어 검은색은 0이 아니고, 흰색도 최댓값이 아닙니다. 흑백도 아니고, 컬러는 더더욱 아닙니다. 이것이 기계가 바라보는 진짜 세상의 모습입니다.
이 회색 데이터 덩어리가 우리가 아는 '사진'이 되기 위해서는 수많은 엔지니어링적 개입이 필요합니다. 먼저 데이터의 유효 범위를 설정하여 진짜 검은색과 흰색을 정의해야 합니다. 그다음엔 각 픽셀이 받아들인 빛의 양을 주변 픽셀과 평균 내어 색상을 추정하는 '디모자이싱(Demosaicing)' 과정을 거칩니다. 베이어(Bayer) 패턴 필터를 통과한 데이터는 초록색에 편향되어 있기에, 이를 보정하는 화이트 밸런스 조정도 필수적입니다.
여기서 가장 인상 깊었던 부분은 '감마 보정(Gamma Correction)'입니다. 센서는 빛의 양을 선형적(Linear)으로 받아들이지만, 인간의 눈은 비선형적으로 밝기를 인식합니다. 기계적으로 정확한 선형 데이터를 그대로 보여주면 사람은 "너무 어둡다"고 느낍니다. 결국 인간이 보기에 자연스러운 결과물을 만들기 위해 우리는 데이터를 의도적으로 왜곡해야 합니다.
많은 주니어 개발자들이 "데이터를 조작하면 안 된다"는 강박을 가지고 있습니다. 하지만 이 사진 처리 과정이 보여주듯, 적절한 처리 없이는 데이터는 그저 무의미한 숫자의 나열일 뿐입니다. 카메라 내부에서 자동으로 생성된 JPEG 이미지가 '원본'이고, 포토샵으로 보정한 사진이 '가짜'인 것이 아닙니다. 소위 '원본' JPEG조차 카메라 제조사의 엔지니어가 설계한 알고리즘(대비, 채도, 노이즈 리덕션 등)이 잔뜩 반영된, 철저히 계산된 해석의 결과물입니다.
우리가 풀링포레스트에서 만드는 서비스도 마찬가지입니다. 데이터베이스에 쌓인 로그, 사용자의 클릭 스트림, AI 모델이 뱉어낸 확률값 그 자체는 아무런 가치를 주지 못합니다. 우리가 해야 할 일은 그 거친 데이터(Raw Data)에 맥락을 입히고, 노이즈를 걸러내고, 사용자가 이해할 수 있는 형태로 '렌더링'하는 것입니다.
이 과정에서 필연적으로 우리의 주관과 기술적 판단이 개입됩니다. 어떤 지표를 강조할 것인가, 어떤 이상치를 노이즈로 규정하고 버릴 것인가. 이 모든 결정이 결국 사용자가 경험하는 '현실'을 만듭니다.
편집되지 않은 순수한 현실이란 디지털 세상에 존재하지 않습니다. 모든 정보는 누군가의 설계와 의도를 거쳐 표현됩니다. 그렇기에 우리는 기술적 의사결정에 더 큰 책임감을 느껴야 합니다. "자동 알고리즘이 했으니 객관적이다"라고 안주하지 마세요. 그 알고리즘을 설계하고 튜닝하는 것이 바로 우리의 역할이니까요.
여러분이 지금 작성하고 있는 그 코드 한 줄이, 누군가에게는 세상을 바라보는 렌즈가 된다는 사실을 기억했으면 좋겠습니다. 데이터라는 재료를 가지고 최상의 요리를 내놓는 것, 그것이 우리가 지향해야 할 엔지니어링의 미학입니다.


