목차
스케치북에 그린 그림을 휴대폰으로 찍어 보면, 눈으로 볼 때와 사진이 꽤 달라서 놀랄 때가 있어요. 종이는 누렇고, 한쪽은 그림자가 지고, 네 모서리는 사다리꼴로 기울어 있죠. 이 글은 그런 사진을 스캐너에 넣은 것처럼 반듯하고 하얗게 만드는 방법을, 어떤 순서로 무엇을 해야 하는지 차근차근 정리해요.
직접 손으로 고치는 방법과, 같은 일을 프로그램으로 자동화하려는 분이 알아야 할 원리를 같이 다뤄요. 어려운 용어는 나올 때마다 쉬운 말로 풀어 드릴게요.
혹시 이런 고민 있으신가요?
- 그림을 찍어서 SNS 에 올렸는데, 종이가 누렇고 한쪽이 어두워서 그림이 칙칙해 보여요.
- 문서 스캔 앱을 써 봤더니 색이 이상하게 날아가거나, 칠한 부분이 하얗게 사라져요.
- 보정 앱마다 슬라이더가 너무 많아서 뭘 만져야 할지 모르겠어요.
이 글을 읽으면
- 사진이 왜 스캔과 다르게 보이는지, 고쳐야 할 것이 기하, 빛, 색 세 가지라는 걸 구분할 수 있어요.
- 종이를 반듯하게 펴고, 조명 얼룩을 지우고, 재료에 맞게 마무리하는 순서를 직접 따라 할 수 있어요.
- 자동 보정이 틀리는 경우를 미리 알고, 어디를 손으로 고쳐야 하는지 판단할 수 있어요.
1단계. 무엇이 사진을 스캔과 다르게 만드는지 나누기
보정을 시작하기 전에, 사진과 스캔이 어디서 달라지는지부터 나눠 봐요. 원인을 모르고 슬라이더부터 만지면 한 가지를 고치다 다른 걸 망가뜨리기 쉬워요. 차이는 크게 세 가지예요.
| 차이 | 사진에서 보이는 모습 | 고쳐야 할 것 |
|---|---|---|
| 기하 | 종이가 기울고 사다리꼴로 보여요 | 종이 네 모서리를 찾아 직사각형으로 펴요 |
| 빛 | 한쪽이 어둡고, 종이가 노랗거나 푸르게 보여요 | 종이가 받은 빛을 추정해서 나눠요 |
| 색과 질감 | 연필이 흐리고, 색이 칙칙하고, 종이 결이 지저분해요 | 재료에 맞는 마무리를 해요 |
여기서 중요한 원칙이 하나 있어요. 보정은 기하, 빛, 색만 고치고 선의 모양은 건드리지 않아요. 선을 더 굵게 하거나, 흐린 선을 다시 그려 주는 방식의 보정은 작가가 그린 것을 바꿔 버려요. 저희도 처음부터 생성형 복원이나 업스케일은 쓰지 않기로 했어요. 같은 사진은 언제나 같은 결과가 나오고, 결과를 숫자로 비교해서 고칠 수 있다는 점도 규칙 기반 처리를 고른 이유였어요.
세 가지를 고치는 순서도 중요해요. 기하를 먼저 펴야 빛을 추정할 때 종이 바깥의 책상이 섞이지 않고, 빛을 먼저 고쳐야 재료별 마무리의 기준점이 맞아요.
사진 한 장이 기하, 빛, 재료 순서로 고쳐져요
TIP
직접 고칠 때도 이 순서를 지키세요. 사진 앱에서 밝기부터 올리면 그림자 쪽 종이만 하얗게 날아가서, 나중에 빛을 고르게 만들기가 훨씬 어려워져요.
2단계. 종이 네 모서리를 찾고, 틀리면 손으로 맞추기
첫 작업은 종이의 네 모서리를 찾는 일이에요. 모서리 네 점만 알면 컴퓨터는 기울어진 사다리꼴을 직사각형으로 펼 수 있어요. 이런 변환을 원근 보정이라고 불러요. 건물을 비스듬히 찍은 사진에서 벽을 정면에서 본 것처럼 펴는 것과 같은 원리예요.
자동으로 모서리를 찾는 방법을 저희는 서로 다른 두 가지로 동시에 돌려요.
- 영역으로 찾기. 사진에서 밝고 색이 없는 가장 큰 덩어리를 종이로 봐요. 그림이 종이 안에 있으니, 그림이 복잡해도 덩어리는 유지돼요.
- 윤곽으로 찾기. 사진에서 네 변으로 닫히는 가장 큰 윤곽을 종이로 봐요. 책상이 종이만큼 밝아도 윤곽은 남아요.
두 방법이 같은 모서리를 가리키면 믿고, 하나만 찾았으면 덜 믿고, 둘 다 못 찾으면 사진 가장자리에서 조금 안쪽 네 점을 놓고 신뢰도를 0 으로 돌려줘요. 설정으로 쓰면 이런 모양이에요.
두 방법이 일치 (모서리 차이가 대각선의 3% 이내) -> 신뢰도 0.95한 방법만 찾음 -> 신뢰도 0.55둘 다 못 찾음 -> 신뢰도 0, 가장자리 5% 안쪽 네 점신뢰도가 0.6 아래 -> "모서리를 직접 맞춰 주세요"이 구조에서 가장 중요한 부분은 마지막 줄이에요. 규칙으로 종이를 찾는 방식은 틀리는 사진이 반드시 남아요. 흰 책상 위의 흰 종이, 손가락에 가려진 모서리, 그림 선과 섞이는 가장자리가 대표적이에요. 그래서 자동 검출은 처음 제안일 뿐이고, 사용자가 네 점을 끌어서 고칠 수 있는 화면이 꼭 있어야 해요. 저희 화면은 점을 끄는 동안 손가락 아래를 확대해서 보여 주고, 신뢰도가 낮으면 직접 맞추라는 문구를 띄워요.
여러분이 직접 하신다면 따로 구현할 것은 없어요. 대부분의 스캔 앱과 사진 편집 앱에 있는 자르기 도구의 원근 모드에서 네 점을 모서리에 맞추면 돼요. 모서리를 고를 때는 종이의 바깥 테두리 안쪽에 점을 두어서 책상이 한 줄도 섞이지 않게 하세요.
참고
모서리가 한두 군데 가려져 있다면 가려진 모서리를 추정해서 놓기보다, 다시 찍는 쪽이 결과가 훨씬 좋아요. 점이 틀리면 펴낸 그림 비율이 어긋나서 원 같은 도형이 타원이 돼요.
3단계. 종이의 진짜 비율로 펴기
모서리를 찾았다면 이제 그 네 점을 직사각형으로 펴요. 이때 직사각형의 가로세로 비율을 어떻게 정하느냐가 의외로 까다로워요.
단순하게 네 변의 길이를 재서 정하면 비스듬히 찍은 사진에서 틀려요. 멀리 있는 변은 가까운 변보다 짧아 보이기 때문에, 기울인 종이는 실제보다 가로로 길거나 세로로 길게 계산돼요. 저희는 두 단계로 풀었어요.
- 사각형의 네 꼭짓점으로부터 카메라의 초점 거리를 추정해서, 원근을 걷어낸 진짜 비율을 구해요. 직사각형의 네 꼭짓점이 카메라 초점 거리를 정해 준다는 계산은 칠판 스캔 논문(Zhang, He, 2007, Whiteboard scanning and image enhancement)에 나온 방법이에요. 정면에서 찍어서 초점 거리를 못 구하면 네 변 길이로 대신해요. 그런 사진에서는 변의 길이가 곧 종이의 비율이라 틀리지 않아요.
- 구한 비율이 흔한 종이 비율에 3% 안으로 가까우면 그 비율로 맞춰요. 후보는 A 계열(A4, A5 등과 B5가 거의 같아요)과 정사각형이에요. 모서리를 몇 픽셀 틀리게 짚어도 종이가 조금 좁거나 넓게 나오지 않게 하려는 장치예요.
결과 크기는 종이의 가장 긴 변을 기준으로 하되, 사진이 가진 해상도를 넘지 않게 해요. 사진보다 더 크게 키우면 선명해지는 게 아니라 뭉개질 뿐이에요. 상한은 긴 변 4096 픽셀로 뒀어요.
여러분이 바꿀 점은 후보 비율이에요. 저희는 스케치북에 많은 A 계열과 정사각형만 넣었어요. 엽서나 가로로 긴 두루마리를 다룬다면 그 비율을 목록에 더해 주세요.
TIP
찍을 때 카메라를 종이와 최대한 평행하게 들면 이 단계가 거의 필요 없어져요. 책상 위에 종이를 놓고 폰을 위에서 똑바로 내려다보게 찍어 보세요. 기울기가 작을수록 모든 보정이 쉬워져요.
4단계. 종이가 받은 빛을 추정해서 나누기
기하를 폈으면 이제 빛을 고쳐요. 이 단계가 그림 보정에서 가장 중요하고, 문서 스캔 앱이 그림에서 실패하는 이유가 들어 있는 곳이에요.
원리는 간단해요. 사진의 모든 픽셀은 종이의 색에 빛이 곱해진 값이에요. 그러면 종이가 받은 빛을 알아내서 사진을 그 빛으로 나누면, 빛이 사라진 원래 색이 남아요. 색 채널(빨강, 초록, 파랑)마다 따로 나누기 때문에 화이트 밸런스, 즉 노란 전구가 만든 누런기도 같이 사라져요. 종이 위의 누런기와 그림 위의 누런기를 똑같이 걷어내는 셈이거든요.
문제는 종이가 받은 빛을 어떻게 아느냐예요. 서명이나 글자 같은 가는 선이라면 쉬워요. 선보다 넓은 도구로 어두운 부분을 지워서 종이만 남기면 되니까요. 그런데 그림은 하늘처럼 넓게 칠한 면이 있어서, 그 방법을 쓰면 칠한 면을 종이로 읽어요. 그러고 나서 나누면 칠한 면이 하얗게 날아가요. 문서 스캔 앱에서 칠한 부분이 사라지는 이유가 이거예요.
그래서 저희는 종이가 어떻게 생겼는지로 종이를 골라요. 종이는 밝고 색이 없어요. 그리고 종이의 색은 하얗다고 가정하지 않고 측정해요. 노란 전구 아래에서는 종이 전체가 노랗기 때문이에요.
1. 사진을 긴 변 256 픽셀로 줄여요 (빛은 천천히 변하니 이걸로 충분해요)2. 사진에서 가장 밝은 3분의 1의 색을 종이 색으로 봐요3. 종이 색에서 색 차이가 12 이내이고, 주변 가장 밝은 곳과 밝기 차이가 12 이내인 점을 종이로 표시해요4. 종이로 표시된 점의 빛을 주변으로 퍼뜨려서 그림이 있는 자리를 메워요 (퍼뜨리는 폭을 5번에 걸쳐 두 배씩 키워서, 넓게 칠한 면도 먼 곳의 종이로 메워요)5. 메운 빛을 원래 크기로 키워서 사진을 나눠요여기서 12 라는 숫자는 사람 눈에 가까운 색 공간(Lab)에서 잰 거리의 기준이에요. 종이와 얼마나 비슷하면 종이로 볼지를 정하는 값인데, 값을 키우면 연한 칠이 종이로 잘못 분류되고, 줄이면 종이의 얼룩이 종이가 아니게 돼요. 여러분의 종이와 조명에 맞게 조절할 수 있는 값으로 보세요.
종이로 볼 점이 사진 전체의 1%도 안 되면, 다시 말해 종이가 거의 안 보이는 그림이면, 포기하고 각 색 채널에서 밝은 쪽 상위 10% 지점의 값을 빛으로 써요. 이런 예외 처리가 없으면 종이 없는 그림에서 이상한 색이 나와요.
종이만 골라 빛을 추정하고 그림 자리는 주변으로 메워요
TIP
직접 찍을 때는 창가의 낮 빛 아래에서, 그림자가 한쪽으로 지지 않게 찍어 보세요. 한쪽 그림자가 클수록 빛을 추정해서 나누는 일이 어려워요. 폰 때문에 생기는 그림자는 종이에서 팔 하나 길이만큼 떨어지면 줄어요.
5단계. 재료에 맞게 종이를 하얗게 하고 선을 살리기
빛을 나누면 종이는 대체로 1.0, 즉 흰색 근처가 돼요. 하지만 센서 잡음 때문에 완전히 하얗지는 않아서, 마지막으로 흰색 기준점을 조금 낮춰 한 번 더 나눠요. 이 기준점을 어디에 두느냐가 재료마다 달라요. 모든 그림에 같은 보정을 쓰면 연필은 너무 거칠고, 수채는 너무 밋밋해져요. 그래서 재료별로 프리셋을 나눴어요.
| 프리셋 | 처리 | 기준점 |
|---|---|---|
| 연필 | 흑백으로 바꾸고, 종이는 흰색으로, 흑연의 명암 단계는 남겨요. 이진화(검정과 흰색 둘로만 나누기)는 하지 않아요 | 0.92 |
| 펜, 라인아트 | 선을 한 가지 진한 잉크색으로 모으고 종이를 흰색으로 보내요 | 0.92 |
| 색연필, 마카 | 색을 그대로 두고 종이만 흰색으로 보내요. 휴대폰이 평평하게 만든 색을 채도 12% 올려서 되살려요 | 0.93 |
| 수채 | 번짐과 종이 결을 남기도록 종이 제거를 가장 약하게 해요 | 0.97 |
기준점이 높을수록 종이의 결이 남아요. 수채가 0.97 인 이유는 번짐의 반투명한 부분이 종이와 구분하기 어려워서, 세게 나누면 번짐이 같이 지워지기 때문이에요. 연필은 반대로 0.92 까지 낮춰서 종이를 확실히 하얗게 보내되, 가장 진한 흑연이 완전한 검정까지 가지는 않게 해요. 부드러운 연필 그림의 깊이를 지키려는 거예요.
투명 배경 PNG 가 필요한 경우에는 "그림이 얼마나 들어 있는지"를 투명도로 바꿔요. 한 픽셀에 그림이 얼마나 담겼는지를 0 에서 1 로 계산하고, 그 값이 일정 범위를 넘으면 불투명해지도록 부드럽게 이어요. 이때 색도 같이 계산해야 해요. 흰 바탕 위에 이 투명도로 얹었을 때 원래 색이 돌아오는 색을 거꾸로 구해서 쓰면, 투명 배경에서도 번진 가장자리에 흰 테두리가 남지 않아요.
한 가지 한계는 알아 두세요. 수채를 투명 배경으로 바꾸면 결과가 거칠게 나올 수 있어요. 번짐과 종이의 경계가 원래 없는 그림이라서, 어디부터 종이인지 선을 그을 수가 없기 때문이에요.
참고
흰 종이에 흰 물감을 쓰거나, 아주 연한 수채 번짐은 종이와 가장 구분하기 어려워요. 이런 그림은 자동 보정에서 가장 약한 프리셋을 쓰고, 결과를 눈으로 꼭 확인하세요.
6단계. 프리셋 하나로 안 맞을 때를 위한 세부 조절
프리셋을 아무리 잘 짜도 모든 그림에 맞지는 않아요. 저희가 이걸 처음 확인한 건 실제 펜 그림이었어요. 그림 귀퉁이에 적은 날짜의 점이 잡티로 판단되어 지워졌거든요. 잡티를 지우는 기능이 점을 같이 지운 거예요.
그래서 세부 조절을 넣었는데, 일반 사진 앱처럼 밝기, 대비, 채도 슬라이더를 두지 않았어요. 사람이 그림에서 실제로 보는 것에 이름을 붙였어요.
| 조절 | 왼쪽 끝 | 오른쪽 끝 | 실제로 바뀌는 것 |
|---|---|---|---|
| 선 진하기 | 연하게 | 진하게 | 펜은 선의 불투명도 강도, 나머지는 톤의 거듭제곱 |
| 종이 | 종이 느낌 | 새하얗게 | 흰색 기준점 |
| 작은 점 | 살리기 | 지우기 | 잡티로 보고 지우는 조각의 크기 |
각 조절은 숫자 없이 다섯 칸이에요. 가운데가 프리셋 그대로이고 양쪽으로 두 칸씩 갈 수 있어요. 연속 값 대신 다섯 칸으로 끊은 데는 이유가 있어요. 휴대폰에서 손가락으로 맞추기 쉽고, 칸마다 결과를 기억해 둘 수 있어서 이미 본 칸으로 돌아갈 때는 다시 계산하지 않아도 돼요. 손을 뗄 때만 다시 계산하는 것도 같은 이유예요.
여러분이 바꿀 점은 칸의 수와 이름이에요. 도구를 만든다면 사람이 말하는 단어로 이름을 붙이는 게 좋아요. 밝기와 대비는 사진 앱의 말이지만, 선 진하기와 종이는 그림 그리는 사람의 말이에요.
자주 묻는 질문
Q1. 문서 스캔 앱으로 찍으면 안 되나요?
글씨 위주의 문서라면 충분해요. 다만 그림은 넓게 칠한 면이 있어서, 문서 앱이 그 면을 종이로 읽고 하얗게 날려 버리는 경우가 있어요. 칠한 부분이 흐려지거나 색이 바뀐다면 이 글의 4단계가 원인이에요.
Q2. 사진을 서버에 올려도 괜찮을까요?
그림 사진 뒷배경에는 얼굴이나 서류, 집 안이 같이 찍힐 수 있어요. 그래서 저희는 올린 사진과 결과를 저장하지 않고, 처리가 끝나면 남기지 않게 만들었어요. 직접 만든다면 저장하지 않는다는 설계가 신뢰를 지키는 가장 쉬운 방법이에요.
Q3. 자동 보정이 틀렸을 때는 어떻게 하나요?
모서리 점을 직접 끌어서 고쳐요. 규칙으로 종이를 찾는 방식은 틀리는 사진이 남기 때문에, 처음 제안을 믿되 사용자가 고칠 수 있는 길을 열어 두는 것이 중요해요.
정리
- 사진과 스캔의 차이는 기하, 빛, 색 세 가지이고, 고치는 순서도 이 순서예요.
- 종이 모서리는 영역과 윤곽 두 방법으로 찾고, 틀릴 수 있으니 손으로 고치는 길을 꼭 열어 두세요.
- 빛은 종이처럼 보이는 점만으로 추정하고, 그림이 있는 자리는 주변 종이로 메워서 나눠요.
- 재료마다 흰색 기준점이 달라요. 연필과 펜은 낮게, 수채는 높게 둬요.
- 세부 조절은 사진 앱의 말이 아니라 그림 그리는 사람의 말로 이름을 붙여요.
한 장의 사진을 스캔처럼 만드는 일은 결국 종이를 펴고, 빛을 걷어내고, 재료에 맞게 마무리하는 세 번의 정리예요. 이 순서만 지키면 도구가 무엇이든 그림이 훨씬 또렷하게 나와요.