댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
검은색이나 흰색으로 된 배경 잘 삭제하기.
이 글은 색에 대한 이론적인 내용도 많이 포함되어 있습니다. 배경삭제가 그리 호락호락한것은 아닙니다. 뭔가 테크닉이 있으면 쉽게 할 수 있을 거라고 생각하는 분도 많을텐데, 색에 대한 이해가 없으면 굉장히 어렵습니다.
알만툴을 만지면서 배경색 때문에 골머리 앓으셨던 분들이 많으셨을 겁니다.
일단 경계가 뚜렷한 사진의 배경을 제거하는 것은 쉽습니다.
예:
이런 것은 대충 포토샵으로 제거할 수 있습니다. 기타강좌에서 아방스 님이 올리신 배경 삭제 강좌를 보시면 됩니다.
그러나 사진이 배경 위에 오버랩 되어 있는 경우가 있습니다.
이런 사진은 경계가 불명확한 사진으로 검은 배경위에 그림이 오버랩 되어 있는 경우입니다.
이 사진을 그냥 배경 제거를 해 버린다면 아래와 같이 안습 사진이 되어버립니다.

여기서는 그냥 배경제거를 해서는 안되는 겁니다.
뭔가 그냥 사진에서 검정색을 마이너스 하면 될 것 같은 느낌인데, 막상 하려고 하면 어떻게 해야 할지 모르겠고 원하는 사진이 안나오는 경우가 많습니다.
먼저 말하지만 저도 제대로 배운 것도 아니고 순전히 여러번의 시행착오와 실험과 경험을 통해서 얻은 방법입니다. 완벽한 방법은 아닐거라고 말씀 드립니다. 저런 사진에서 배경만 완벽하게 제거한다는 것은 거의 불가능 합니다.
일단 저 사진에서 각각의 픽셀에 대한 정보는 r,g,b로 이루어 져 있다는 것은 다 아실 것입니다.
문제는 저 사진에서 각각에 픽셀에 대해 실제 사진과 검정바탕이 얼마나 합성되어 있는지 알기 힘들다는 겁니다.
일단 검은색과 흰색으로만 되있는 사진, 즉 색상이 없는 사진(grayscale)은 배경 제거가 완벽히 가능 합니다.
휘도를 투명도로 사용하면 됩니다. 휘도는 색의 밝기 정도로 보시면 됩니다.
그러니까 한 픽셀의 정보가
r = 156
g = 156
b = 156 (grayscale에서는 r,g,b가 일치합니다.)
라면 이 픽셀을
r = 156
g =156
b =156
a(alpha, 투명도) = 255 - 156
으로 바꾸면 됩니다. 이렇게 바꾸면 완벽하게 배경을 제거한 느낌을 얻을수 있습니다. 물론 저장은 png등 투명도가 포함된 포맷으로 하셔야 합니다.
결과는 다음과 같습니다.
이걸 보고 사진이 깨졋다! 이 사람 낚시꾼 아니야? 라고 생각하시는 분도 계실텐데, 색상이 흰색이고 지금 이 게시판의 바탕 또한 흰색이므로 안보이는것 뿐입니다. 바로 위에 있는 사진을 배경이 흰색이 아닌 곳에서 보시면 보이실 겁니다. 이렇게 되야 제대로 배경이 투명해 졌다고 할 수 있는 것입니다.
색상이 있을때는 배경 투명화가 조금 더 힘듭니다.
물론 색상이 단색일 경우(r,g,b중 하나만 존재할 경우)는 쉽습니다. 여기서 색상이 있는 경우는 r,g,b가 어느 정도 혼합된 형태입니다.
아래 예를 보도록 하죠
이 사진은 색도가 있는 사진입니다.
여기서도 위의 방법과 비슷한 방법을 쓸것입니다. 그런데 r,g,b값이 다르기 때문에 휘도를 계산하기 힘듭니다.
각각의 픽셀에 대하 투명도 값을 (255-휘도)로 맞춰보았습니다.
일단 저는 휘도를 r+g+b/3으로 대충 생각해서 배경 제거를 해 보았습니다.
결과는 아래와 같습니다.
검은 배경에서 확인해 보시면 알겠지만, 완벽한 결과가 아닙니다.
다음으로 저는 googling을 통해 휘도를 구하는 공식을 검색하였습니다.
http://www.ehow.com/how_5335610_calculate-luminance.html
저는 여기에 나온 휘도 계산 공식을 이용하였습니다. 계산 방법이 조금 복잡하므로 여기서는 생략하겠습니다.
위의 방법으로 휘도를 구하고 각각의 픽셀에 대하 투명도 값을 (255-휘도)로 맞춰보았습니다.
그러나 이것 또한 완벽한 결과가 아닙니다.
결국 정확한 메소드를 발견하지는 못했지만, 나름 비슷하게 배경제거를 하는데는 성공하였습니다.
혹시 다른 분들 중에서 거의 완벽한 배경제거에 성공하신 분이 계시면 알려주시기 바랍니다.
저는 위에 프로세스를 python과 PIL 라이브러리를 통해서 시행하였습니다.
python 소스 코드들은 공유하도록 하겠습니다.
사용법은 다음과 같습니다.
python 홈페이지에 가서 2.xx버전을 받습니다. (2.5, 2.6, 2.7 상관 없습니다. 3.0 이상 버전에서는 문제가 있을 수 있습니다.)
window 사용자는 mac 사용자는 mac 써진것을 받으면 됩니다. Window installer라고 된것을 받아야 합니다.
그리고 설치합시다.
구글에서 pil을 검색해서 버전에 맞는것을 받습니다.
그리고 설치가 끝나면 원하는 사진과 소스코드파일(첨부파일)을 같은 폴더에 놓고 소스코드를 실행합니다. 소스코드를 실행하면 파일이름을 입력하라고 나오는데 입력하시면 됩니다.
==결론: 배경삭제는 어렵다.==
●?Who's 에돌이

푸,푸핫
마지막 결론보고 뿜었습니다
ㅋㅋㅋㅋ
어쨌든 감사합니다!
제가쓰는 방법보다더 낫군요...!