ColorMatrix

인코딩/고 2008.01.30 16:52
컬러 매트릭스 필터에 대해 알아보겠습니다.. 필터 사용법은 매우매우간단한데... 음

중급이 생각날 정도로 길어지겠네요





그럼 시작하겠습니다



오늘 이야기는 아마 RGB 나 YUV 색상을 아무리 조절해봐도 내가 원하던데로 색깔이 안나온다고 고민하셨던 분은 환호성을 지를지도 모르겠네요..



우리가 중급에서 비디오 비트엔 YUV4:2:2 하고 어쩌고(정확히 말하면 카로마서브셈플링..) 를 배울때

한가지 슬쩍 얼버부리고 넘어간게 있었는데요




색깔 범위입니다 이건 한번도 생각해보지 않고 넘어갔었죠?

오늘은 그거에 대한겁니다



RGB 데이터를 YUV로 바꾸려면 어떻게 해야할까요 흠....


사람마다 개성적인 표현 방법을 생각해 내겠지만
이미 약속이 되어있답니다
그 약속에도 종류가 좀 있는데요

오늘은 그 약속들중 BT 601BT 709 라고 하는 것들의 이야기입니다     표준이라고 하죠?



일단 지금까지 비디오에서 흔히 쓰여왔던건 CCIR 601 입니다
International Radio Consultative Committee
국제무선통신자문위원회 601번째 약속 뭐 그런거 아닐까요?...

이게 지금은 개편으로 이름이 바뀌어서
International Telecommunication Union : Radiocommunication Sector
국제전기통신연합 전파통신부문

ITU-R BT 601 이라고 부릅니다

어떤 성격의 기관인지 아시겠죠




이 약속에는 RGB와 YUV 과의 관계와 YUV의 색범위에 대해서 정의되어 있는데

지금까지 아날로그 티비에서 쭉 601을 써왔습니다 (아차 티비쪽 비디오 영상들은 모두 RGB를 안쓰고 YUV를 씁니다)

하지만 HD티비가 등장하고 LCD 로 무장한 티비 화질들이 껑충뛰면서 그들에게 맞는 더 넓은 색범위를 약속할 필요가 생겼죠

그래서 생긴게 BT 709 고 최근에 HD방송 규격으로 쓰입니다





이렇게 바뀜으로 해서 당연히 문제가 생기겠죠?

지금 대에에에부분의 인코딩 관련 프로그램들은 RGB 와 YUV 의 관계 하면 BT601 밖에 모릅니다

그 프로그램 들에게 있어선

709는 쌩판 듣도보도 못한 dog 안드로메다 이야기며 흔히... 지원이 안된다고 표현하죠ㅋㅋ




avisynth 역시 마찬가지며 대부분의 xvid divx 코덱들도 마찬가집니다

그래서

이런 프로그램 들에게 BT 709의 YUV 자료들을 넣어주면 무조건 601규칙에 따라 RGB로 만들기에(혹은 BT601의 YUV로 인식하기에)

YUV BT709 에서 의도했던 색깔이 나오지 않게됩니다...

주로 어떻게 색깔이 바뀌냐 하면...
BT 709 를 BT 601 로 읽어들일 경우에는

빨간색 -> 검붉은색 계통
파란 하늘색은 -> 초록섞은 사이안 계통 (좀 바뀌는정도를 오버했나^^;)

이렇게 대체적으로 탁한색이 되버립니다 (사실 익숙한 영상이아니면 눈치채기 힘들죠..)


(생각해봅시다
601의 선명한 빨간색 yuv 값은 100,100,200 이라 하면
표현 범위가 더 넓은 709에게 있어선 100,100,200 라는 값이 더더더 선명한 빨강에 해당하겠죠?
반대로
709가 의도한 빨강 yuv값이 100,100,150 이라 하면
그값을 601대로 읽어선 약간 탁한 빨강이됩니다
거기에 추가로
709는 표현가능 색깔 범위 자체도 다르기때문에 601 709 지향하는 u v 값이 당연히 다르겠죠 그래서 검붉은색에 해당합니다
물론 이 이야기는 이해하시면 좋고 굳이 모르셔도 상관없고....
하여튼 구린색깔이 나올수밖에 없다는거만 이해하시면 됩니다)


이런 색변환 실수는 립뿐만이 아니라 티비 뉴스에서도 볼 수 있습니다 (귀찮아서 안한건가..)
보통 뉴스에서 사건 사고소식을 다룰때 나오는 영상들..
손에 흔들흔들 든 카메라로 현장 녹화 찍어서 방송국에 보내죠?

그런 사건사고 현장 영상들에는 대게 소방관 아저씨들이 찍혀있는데
그 구조대 아저씨 옷은 원래 오렌지 색입니다 그리고 구급차 색깔은 빨간색에 흰색이고 초록에메랄드색? 사이랜을 달고있죠

근데 티비에서 볼땐 어떻습니까?
어... 소방관 아저씨들 옷이 저렇게 시퍼런뻘건 옷이었던가.. 구급차가 낡았나 색깔이 왜저렇지. 밤이라 어두워서 그런가..??
이런생각 한번쯤 해보시지 않았나요???


네.. 넘어갑시다









그래서 컬러매트릭스 이걸 언제쓰는데요?
http://hruj.tistory.com
라고 물으신다면 이게... 답이없습니다....

원본 소스가 뚜렷한 DVD
(dvd에는 601인지 709인지 여부가 입력되있기 때문에 재생할땐 문제가없지만 avisynth에 넣을땐 709일경우 컬러매트릭스를 사용해야합니다)
HDTV (아날로그의 경우는 아니고 HDTV의 경우에만 709입니다 그때도 사용해야겠죠)

이 둘을 제외하면 출처가 불명확한 영상들이겠죠?

불분명한 것들은 답이없습니다 평소에 자주봐서 이색깔이 아니다.. 하는걸 알고있어야 합니다








그럼 사용법은?

당연히 고급 2번째글에 적었드시 avisynth 플러그인 다운로드 페이지로 가셔서 컬러매트릭스 찾아서 플러그인 폴더에 딜파일을 넣으시고

Colormatrix("Rec.709->Rec.601")

하고 적어 넣으시면 됩니다

혹시 색깔이 잔상처럼 남으시면 인터레이스 여부를 추가로 조절 해주세요 interlaced=true 기본값은 false 입니다


또.. 보자....

사실 컬러매트릭스는 딱히 가르쳐드릴 기능이 없네요 이것밖에 쓰일일이 없거든요...



아맞다 dvd의 경우엔 601인지 709인지 여부를 몰라도 자동으로 적용되는 명령어가 있답니다
hints 명령어 인데요


이건 이 뒷글에 다룰..
avisynth 의 MPEG2 의 디코딩을 맡는...

DGDecode 에서 같이 간단하게 적겠습니다

컬러매트릭스의 hints 명령어와 와 디지디코드 둘이 함께 해야 힘을 발휘하기?? 때문이지요






또.. 그 YUV와 RGB의 약속이라는게 BT 601 과 BT 709만 있는게 아닙니다
컬러매트릭스와 동봉된 html 메뉴얼 보시면 다른 약속들도 색깔이 이 경우와 같고 이거밖에 쓰일일이 없다고 나와있네요 저도 709 -> 601 경우밖에 안써봤습니다









그럼 이걸로 끝
신고
Posted by hruj

댓글을 달아 주세요

  1. 개구리발 2008.02.10 14:45 신고  댓글주소  수정/삭제  댓글쓰기

    Colormatrix("Rec.709->Rec.601")
    coloryuy2(levels="tv->pc")
    이 명령어가 티비에서볼때랑 pc에서 볼때랑 색감을 변경시켜준다고 해서 mp4인코딩시 썼는데 인코딩시간에도 영향을 미치나요?
    이렇게 2개 중복해서 써도 상관이 없는지.. 복잡하네요 ㅠㅠ

  2. hruj 2008.02.10 18:51 신고  댓글주소  수정/삭제  댓글쓰기

    직접 녹화한것과 dvd를 제외한
    대부분 자료 공유로 돌는 영상들은 레벨 해결이 된 상태입니다
    컬러 매트릭스는 인코딩 한사람이 모르고 안한 경우가 좀 있죠
    둘다 시간소요는 미미합니다 특히 yuv가

  3. CiEL 2008.02.12 02:03 신고  댓글주소  수정/삭제  댓글쓰기

    색조만 바꿔주는 느낌이들더라구요ㅎㅎ

  4. repair iphone 2011.06.17 08:01 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다. 제가 퍼가도 될까요?



티스토리 툴바