2008년 4월 17일 목요일

Real HDR for free!!

광고에 치어 살다보니 -영어로 써도- 어투가 홈쇼핑 같아지네요 -_-;

각설하고, enfuseUFRaw를 사용해 한장의 raw이미지 파일로 부터 HDR(High Dynamic Range)이미지를 만드는 방법을 소개합니다.

다음과 같이 한 줄의 명령어로 만들 수 있습니다. 게다가 공짜!
$ raw2hdr.py -o HDR.jpg IMGP0042.ufraw

윈도XP와 우분투 7.10에서 테스트 해 봤습니다.


0. HDR 소개


HDR이 무엇인지 궁금하신 분은 우선 Trey Ratcliff의 HDR Tutorial의 사진들을 살펴 보세요. 일반적인 사진의 계조를 뛰어넘는 사진들을 보실 수 있습니다.

어떻게 HDR이미지가 만들어 보는지 간단히 설명하면, (관심없으신 분은 1. raw2hdr 설치하기로 점프) 같은 장면에서 노출을 달리한 여러장의 사진을 찍어 '적당히' 합쳐서 만듭니다.
이제 여러번 사진을 찍을 필요가 없습니다! raw이미지는 +-3스톱만큼의 관용도를 가지고 있기 때문에 UFRaw를 사용해 하나의 raw 이미지로 부터 다중 노출한 소스들을 뽑아내면 됩니다.

삼포의 신대우님의 포토샵 레이어 블랜등을 사용한 HDR 강좌에서 적당히 합치는 과정을 소개하고 있습니다. 네.. 항상 '적당히'라는게 어려운 부분이죠. 전 이 글을 보고 잠시 HDR의 꿈을 접었었습니다. -_-;
이제 수작업으로 합칠 필요가 없습니다! enfuse가 알아서 '적당히' 합쳐 줍니다. enfuse에 대해 더 알고 싶으신 분은 이 링크를 찾아가 보세요.

즉! UFRaw와 enfuse를 사용해 HDR이미지를 만들 수 있는데, 저는 이 작업을 더 간단히 하기 위한 스트립트(raw2hdr.py)를 작성했습니다.

imgp9117_enfuse.jpg

raw2hdr.py 이용해 하나의 raw이미지로 부터 뽑아낸 아래의 (-3, -2, -1, 0, 1, 2, 3)EV의 7장의 이미지로 부터 만들어낸 사진입니다.

{wp-gallery-remote: gallery=0; rootalbum=18942; showalbumtitle=true; showsubalbums=true; showimagesheader=false; imagefilter=include:18978,18975,18972,18965,18981,18984,18987;}
창 밖의 풍경에 노출을 맞출 경우 버스 안이 노출부족으로 뭍혀 버리고, 버스 안에 노출을 맞출 경우 창 밖의 풍경이 노출과다로 날아가 버리게 됩니다. HDR이미지에서는 창 밖의 풍경과 버스안의 디테일이 모두 살아 있습니다.

1. raw2hdr.py 설치하기


아래의 파이썬 스크립트 링크를 다운로드 하세요.

raw2hdr.py는 외부 프로그램 ufraw-batch, enfuse, exiftool을 사용합니다. 각각 아래의 방법들로 설치할 수 있씁니다.




  • ufraw-batch는 UFRaw와 함께 설치됩니다.


  • enfuse는 enblend 3.1에 포함되어 있습니다.

    • 윈도: 이걸 다운받아서 적당한 위치에 압축 풀면 됩니다.

    • 우분투: 여길 참조해서 소스로 부터 컴파일 하셔야 합니다.



  • exiftool을 사용해 결과물로 Exif를 옮깁니다.

    • 윈도: 이걸 다운받아 적당한 위치에 압축 풉니다.

    • 우분투: 소스리스트로 부터 libimage-exiftool-perl 패키지를 설치합니다.




raw2hdr.py는 이 게시물의 쉘 스크립틀 참조해 만들어 졌고. 원래의 쉘 스크립트에 비해 아래의 기능들이 추가되었습니다.




  • UFRaw ID파일을 입력으로 사용할 수 있습니다.

  • 노출 스탭을 설정할 수 있습니다.

  • 최종 이미지에 원본의 Exif가 남습니다.

  • ufraw-batch, enfuse, exiftool의 경로를 지정할 수 있습니다.


HDR 사진들을 더 보고 넘어가겠습니다. 작은 이미지를 클릭하면 크게 보입니다.

{wp-gallery-remote: gallery=0; rootalbum=18942; showalbumtitle=true; showsubalbums=true; showimagesheader=false; imagefilter=include:18990,18993,19004,19007,19010,19013;}

HDR이미지(왼쪽)와 적정 노출의 이미지(오른쪽) 입니다. HDR이미지는 항상 인위적인 느낌을 내는 것이 아니라, 잘 사용하면 자연스러운 범위에서 사진의 계조와 디테일을 향상 시킬 수 있습니다.



2. raw2hdr.py 사용하기


몇가지 사용 예제를 보여드리겠습니다. 커맨드 창을 열고 실행해 보세요.




  • --help 옵션으로 도움말을 확인할 수 있습니다.



raw2hdr.py --help


  • 옵션없이 사용하면 -3,-2,-1,0,+1,+2,+3EV의 7장의 이미지로 부터 합친 HDR이미지를 IMGP9117_enfuse.tiff로 저장합니다.



raw2hdr.py IMGP9117.PEF


  • UFRaw ID파일, IMGP9210.ufraw로 부터 추출한 +2, +2.5 +3EV의 3장의 이미지로 부터 HDR이미지 IMFP9210_enfuse.jpg를 만듭니다. 이 경우 UFRaw를 사용해 설정한 화이트벨런스와 크롭등을 적용해 HDR이미지를 만들 수 있습니다.



raw2hdr.py -oIMFP9210_enfuse.jpg -m2 -M3 -s0.5 IMGP9210.ufraw


  • 환경변수 PATH에 설정되지 않은 외부 프로그램의 경로를 아래와 같이 직접 지정하여 실행할 수 있습니다.



raw2hdr.py --enfuse="c:appsenblend-3.1enfuse.exe" -m2 -M3 -s0.5 IMGP9210.PEF

3. 문제 해결


펜클의 올린 게시물에서 같은 문제가 있는지 살펴보세요.

댓글 9개:

  1. HDR 이라하면 고난도의 기술~
    근데 예제는 너무 구분이 안되요~ :)

    답글삭제
  2. 펜클에서 파도타고 왔습니다. 좋은 정보 잘보고 갑니다. 파이썬을 이용한 쉘스크립트..감사합니다!!

    답글삭제
  3. Mr.Dust 님/ 제가 사진을 편집할때 최 우선으로 고려하는게 편집하지 않은것 같은 편집인데 목적을 달성했네요. ㅎㅎ
    (죄송해요 사실 DSLR을 가지고 있지만 사진 촬영실력은 똑딱이때 그대로라 좋은 예제를 드리지 못했습니다 -,.-;;)
    조만간 몇가지 예제를 더 포스팅 해 보도록 하겠습니다.

    Lupin™ 님/ 반갑습니다. 유용하게 사용하시고 좋은 사진 많이 올려주세요. ^^;

    답글삭제
  4. 평소에 Ufraw를 잘 사용하고 있었는데, 친철하게 의문점까지 풀어주셔서 감사했습니다^^
    게다가 좋은 정보까지 얻고 갑니다.
    꼭 한번 응용해보고 싶네요.

    답글삭제
  5. 수아아빠님의 적극적인 홍보에 힘입어, 제 윈도우에 파이썬이 설치될듯 하군요
    펜클에도 사용기를 올리시다니 ㅋㅋ 일요일에 심심한데 파이쏜 설치를 ... (두둥)

    답글삭제
  6. >> exiftool -tagsfromfile "IMGP1133.PEF" -exif:all "IMGP1133_enfused.tiff"
    exiftool: creation of C:\DOCUME~1\까나리\LOCALS~1\Temp\par-??리\cache-exiftool-7
    .24/perl58.dll failed - aborting with 22.
    ERR!! : something wrong while running cmd :
    exiftool -tagsfromfile "IMGP1133.PEF" -exif:all "IMGP1133_enfused.tiff"


    perl58.dll 파일을 구해서 windows\system32 에 넣어봤지만, 안되네요
    펄까지 깔긴 싫은데 ㅎㅎㅎ 이거 안해도 "IMGP1133_enfused.tiff" 이 파일이면
    결과가 적용되는거죠?

    답글삭제
  7. 트랙백 보내기 계속 실패해서 블로그 링크 남기고 갑니다. 잼있네요~
    http://kkanari.egloos.com/3710646

    답글삭제
  8. 까나리님/ 성공하셨군요 T-T 쓰면서도 이걸 따라할 사람이 있을까 싶었는데.. 그래서 더 홍보를 했는지도 모르겠습니다. -_-;;

    좋은 사진 많이 보여주세요. ^^

    exiftool은 포스트중 윈도 바이너리 링크는 exiftool.exe 파일만 따로 복사해서 사용해도 되던데, 혹시 Perl용 소스를 받으신게 아닐까 싶습니다.
    exiftool을 이용한 EXIF복사는 제일 마지막에 이루어 지니까 HDR사진은 이미 만들어진게 맞습니다.
    (에러가 걸리적 거리시면 스크립트를 약간 수정해서 빼버리세요. ㅋ)

    트랙백 주소가 맞는 것 같은데 왜 못 받는지 모르겠네요. -_-;
    나몰라~

    답글삭제
  9. Windows 용 stand alone 바이너리 받았는데, 아무래도 제 계정이 '한글' 이라서
    그런것 같습니다. exiftool.exe (7.24, 7.25) 오른쪽 마우스 누르니까 압축파일이고
    그안에 펄 run-time 이 들어가 있는것 같은데, 풀다가 한글계정명 때문에 오류가 나더군요

    D:\UTILS\raw2hdr>exiftool
    exiftool: creation of C:\DOCUME~1\까나리\LOCALS~1\Temp\par-??리\cache-exiftool-7
    .25/perl58.dll failed - aborting with 22.

    D:\UTILS\raw2hdr>

    나몰라~

    답글삭제