본문 바로가기

정보시각화 소식

Seam Carving - 내용을 인식하는 이미지 크기변환 방법

(a) 원본 사진

(b) Seam Carving (c) Resizing


"Seam Carving"[각주:1] 기술은 내용을 유지하면서 이미지의 크기를 변환하는 기술입니다. 위 그림에서 (a)가 원본 사진이고, (b)가 Seam Carvinig 기술을 적용해서 이미지를 좌우로 늘린 사진입니다. 그냥 (c)처럼 이미지를 잡아 늘리는 것에 비하면 놀라울 정도로 자연스럽죠. 아래 동영상도 보세요.


동영상에서 이 기술이 어떻게 작동하는지 설명해주지만, 좀 더 자세히 알고 싶어서 원본 논문을 찾아보았습니다.

Shai Avidan, Ariel Shamir, "Seam Carving for Content-Aware Image Resizing", ACM Transactions on Graphics, Volume 26, Number 3, SIGGRAPH 2007

읽어보니 원리는 간단합니다. 물론 간단한 아이디어더라도 처음 생각해내는 것이 제일 어렵죠. :)
방법은 대략 다음과 같습니다.

  • 어떤 픽셀이 주위 픽셀과 얼마나 비슷한지 측정하는 에너지 함수를 정의한다. (논문에서는 간단하게 e = (x방향 픽셀 색깔 변화율) + (y방향 픽셀 색깔 변화율) 로 정의해서 사용하더군요. e값이 작을 수록 주위 픽셀과 비슷하다는 뜻입니다. )
  • 에너지 합이 가장 작은 1픽셀 너비의 가로줄 혹은 세로줄을 찾는다. (맨 위 그림 (a)에서 빨간 선)
  • 이미지 크기를 줄일 때는 이 가로줄(세로줄)을 삭제한다. 늘릴 때는 복사해서 한 줄 더 붙인다.
  • 위 과정을 원하는 크기가 될 때까지 반복한다.

간단히 말하면, 눈에 잘 띄지 않는 픽셀을 찾아서 잘라내거나 붙이는 방식입니다. 논문에는 가로줄(세로줄)을 어떤 순서로 잘라내야 최적인가 등도 논하고 있는데, 여기서 설명하긴 복잡하니 생략하겠습니다.

그리고 Seam Carving 기술을 이미지 크기 조정과 결합하면 몇가지 재미있는 일을 할수 있다고 합니다. 

주요 사물 확대

 
위 그림에서 왼쪽 사진이 원본입니다. 그런데 오른쪽 사진을 보면 개선문만 크게 확대되었습니다. 이건 우선 원본 사진 크기를 키운 이후에 다시 Seam Carving을 적용해서 이미지 크기를 원래 크기로 줄여서 만든 것입니다. Seam Carving은 사진에서 주요 내용을 보존하면서 크기를 줄이니, 마치 개선문만 커진 것처럼 보이는 거죠.

특정 사물 없애기


그뿐만이 아니라 사진에서 특정한 사물을 자연스럽게 제거하는 것도 가능합니다. 위 왼쪽 사진에서 여자만 사라지도록 세로줄을 조절해서(특정 영역의 에너지를 강제로 낮게 설정한다든지 하는 방법을 썼겠죠) Seam Carving을 하면, 오른쪽 사진처럼 순식간에 커플을 솔로(-_-)로 만들어 버릴 수 있습니다.  

특정 사물 없애기

 
  이것은 신발 한짝이 없어지도록 Seam Carving한 이후에, 다시 원본크기로 늘린 사진입니다. 어떤 신발이 없어졌는지 찾을 수 있으신가요?

Seam Carving 기술을 체험해볼 수 있는 사이트도 있습니다. 한번 방문해 보세요.

이렇게 재밌는 Seam Carving 기술이 얼른 디지털 카메라나 포토샵에 적용되었으면 좋겠습니다. :)


@ Seam Carving 기술은 이미 다른 블로그에서도 많이 소개가 되었습니다. 하지만 "사진 내 '정보'를 유지하면서 크기를 변환한다"라는 개념이 왠지 정보시각화 블로그에도 어울리는 것 같아서 소개해보았습니다.  포스팅을 날로 먹어서 죄송합니다.(....)

@@ 본 블로그에 첨부된 그림은 모두 "Seam Carving for Content-Aware Image Resizing" 논문에서 가져온 것입니다.
 

  1. 우리말로는 "솔기 잘라내기" 정도로 번역할 수 있습니다. [본문으로]