메뉴 건너뛰기

본문시작

방문자

전체 : 30,244,499
오늘 : 8,160
어제 : 28,859
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

미신입니다. 애초에 채널당 bit depth가 8비트로 코딩돼 있는 원본의 정보가 그릇만 10비트로 바뀐다고 해서 달라질 리가 없습니다. 색공간 변환도 없고, tonemapping도 하지 않았는데 말이죠.

 

단지 최종 인코딩된 10비트 동영상이 원본을 8비트로 인코딩했을 때보다 용량이 줄어들 때가 많기 때문에 '화질 대비 용량 감소 = 용량 대비 화질 개선'이라는 착각을 할 뿐입니다.

 

얼핏 생각하기엔 10비트 인코딩하면 용량이 늘 거라고 생각되고, 저도 그렇게 착각을 하고 있었습니다만, 생각해 보니 bit depth라는 건 디코딩을 마친 영상의 픽셀 채널당 비트수일 뿐, 동영상 파일들은 인코딩이라는 '손실 압축' 과정을 거친다는 걸 깜빡하면 그런 착각을 하기 쉽습니다. 원본 bit depth 8을 10으로 늘리면 풀어헤친 용량은 (무의미한 0들이 많이 들어가서) 25% 많지만 '인코딩'을 거쳐 정보를 누락하고 압축하게 되면 비슷한 용량이 되는 건 당연합니다. 아니, 오히려 10비트가 8비트보다 용량이 줄어든다는 건 그만큼 누락하게 되는 정보가 더 많다는 의미이니 이는 화질이 더 나아지는 게 아니라 오히려 열화되는 것입니다.

 

10비트 영상을 8비트 영상과 비교해 보면 더 나아 보이는 부분이 조금 있는 것 같은 것도 착각일 뿐입니다. 우리가 갖고 있는 대부분의 모니터는 10비트 지원을 하지 않고 8비트, 심한 경우(TN 패널 같은 일부 패널의 경우) 6비트만을 표현할 뿐입니다. 10비트 영상을 보다 낮은 bit depth의 모니터에 표현하기 위해서는 반드시 dithering을 거칩니다. 이건 낮아지는 표현범위(dynamic range) 때문에 필연적으로 발생할 수밖에 없는 떡짐 현상(color banding, 계조 무너짐, 등고선 현상)을 보정하기 위해 거치는 과정이고, 랜덤한 노이즈를 계조 부분(gradient)에 추가함으로써 엄밀히 말해 '우리 눈을 속이는' 과정일 뿐입니다.

 

10비트로 인코딩된 영상도 8비트, 6비트 모니터에 표현하기 위해서는 dithering을 한 번 거쳐야 하는데, 8비트 -> 8비트 인코딩된 영상에서는 필요 없는 dithering 과정을 한 번 더 거치게 되니 우리 눈으로서는 뭔가 화질이 개선됐다고 착각하게 되는 것입니다.

 

가끔 보면 원본이 SDR 영상인데 10비트로 인코딩된 영상들이 있습니다. 이건 의미도 없고, 호환성 면에서는 오히려 더 안 좋은 인코딩 습관입니다.

 

10비트 인코딩은 오직 그 표현 범위를 충분히 활용했을 때만 의미가 있습니다. HDR(high dynamic range) 영상들을 10비트 인코딩을 하는 이유도, 기본적으로 영상의 색 표현 바탕이 되는 색공간이 기존의 SDR 영상들이 쓰는 색공간인 BT.709보다 2배 이상 범위가 큰 BT.2020이기 때문입니다. 그 많은 색 정보들을 담기 위해서는 10비트 이상의 bit depth가 꼭 필요한 것이죠.

 

그렇다면 BT.709는 10비트로 하면 안 되냐 하는 의문이 생길 수 있겠죠. 물론 기술적인 이유도 있겠지만, 8비트나 10비트나 어차피 색공간 자체가 한계가 있는 한 우리 눈으로 구분하기에 별 의미가 없기 때문에 8비트로도 충분한 것입니다.

 

애초에 원본 자체가 BT.709를 10비트로 코딩한 것도 아니고, 원본이 8비트로 돼 있다는 건 이미 색 표현 범위가 BT.709를 벗어나지 않는다는 의미이므로 여기에 추후 10비트를 적용한다고 해도 색 표현력이 달라질 건 하나도 없습니다.

 

HDR 영상들을 8비트 인코딩으로 변환할 때는 tonemapping을 거쳐 필요한 색 정보를 최대한 보존하는 것도 같은 맥락입니다. 그냥 8비트 인코딩을 하면 truncation이 랜덤하게 발생할 수밖에 없습니다. (zscale 필터가 없는 샤나에서 tonemap 필터 사용이 불가능해 아쉬운 대로 기존의 scale 필터로 대신하여 truncation이 발생하는 예는 프리셋 게시판의 이 게시물과 사용 팁 게시판의 이 게시물을 참고하시면 됩니다.)

 

그런 이유로 다음의 질문에도 같은 맥락으로 답할 수 있습니다. 잘못된 10비트 인코딩 영상은 8비트로 재인코딩해도 될까요? 정답은 "글쎄요"입니다. Bit 10개 단위로 구성돼 있는 걸 8개 단위로 자르면 무슨 일이 일어날지는 인코더 소스를 코딩한 사람이 알겠죠. 앞쪽을 자르느냐, 뒤쪽을 자르느냐의 문제가 있고, 자르는 방법(truncation method)에 따라 어떻게 왜곡되느냐가 달라지겠죠. 추측으로는 앞쪽(큰 단위)을 자른다면 무의미한 0들만 없어져서 사소한 결함만 발생할 것 같지만, 그 부분은 직접 해보지 않은 한 모를 거라 생각됩니다.

 

(여담이지만, 큰 단위의 비트 배열 순서에 관한 것은 엔디언과 관련이 있습니다. 이와 관련된 것은 위키피디어 해당 문서를 참고하시길... 우리가 10비트 인코딩을 할 때 픽셀 포맷을 'yuv420p10le' 이런 식으로 표현하는데, 이는 10비트 bit depth의 little endian 방식이라는 의미입니다. 물론 yuv420은 chroma subsampling 방식을, p는 luma와 chroma의 배열 방식이 planar라는 의미입니다.)

 

한 가지 생각나는 방법은, format 필터를 적용해 픽셀 포맷을 10비트에서 8비트로 변경한 후 인코딩하는 것입니다. 그러나 인코더가 작동하기 전에 이 필터를 적용하는 것이 얼마나 의미가 있을지, 즉 이 필터의 알고리듬이 인코더의 10비트 -> 8비트 변환 알고리듬보다 우수한지 어떤지는 실제로 적용해 보아야 알 수 있을 것으로 생각됩니다.

  • ?
    유토짱 2018.09.06 03:50
    원본 이상의 화질을 얻기 위한 투자 시간에 비하면, 화질 향상도가 미미해서 의미가 없다는 뜻인것 같습니다.
  • ?
    sSTSs 2018.09.06 03:59
    애초에 '원본 이상의 화질'이란 건 불가능하죠. 단지 우리 눈에 그렇게 느껴 보이게 조작을 할 뿐.
    8비트 원본을 10비트 인코딩하는 건 결코 화질을 향상시키는 방법이 될 수도 없고, 우리 눈에 화질이 향상돼 보이는 효과도 실질적으로 거의 없다는 논지입니다.
  • ?
    비사용중 2018.09.09 06:28
    용량적인 부분이라도 더 줄어드나요? 10비트로 자주 인코딩하는 이유는 용량을 좀 더 줄이고자 함이라서요
  • ?
    sSTSs 2018.09.09 09:18
    네. 용량이 좀 줄어드는 경우가 많습니다. 하지만 그건 본문에서도 언급했다시피 화질 열화를 가져오죠. 그리고 재생이 안 되는 기기도 있구요. 용량을 줄이시려면 차라리 설정 잘 해서 8비트로 하시는 게 낫지 않을까 싶습니다. 물론 본인 소장용으로 하실 거면 상관은 없겠죠.

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
공지 샤나인코더 4.9 버전부터 추가된 편의기능 >>프리셋 메뉴 및 설정 메뉴를 빠르게 열기<< file 샤나 2018.06.28 2516 0
공지 AMD 플루이드모션 60프레임 인코딩 (real 프레임레이트) 설정방법 (ffmpeg 프레임 보간기법) 17 file 능소화 2017.06.07 9045 0
공지 태-영화체(유료폰트) 와 비슷한 a시네마 무료 폰트 올려드립니다. [링크참조] 2 file 능소화 2017.04.03 9193 0
공지 [TIP] 기존의 '귀여운 소녀' 아이콘으로 돌아가기 1 file 유밍 2017.03.30 3545 0
공지 ※ 설정방법 / 프리셋파일포함 ※ 샤나인코더외부 자막 Mux 기능 추가 [v 4.5.1] 9 file 능소화 2017.03.30 6863 1
42 "비트레이트를 원본보다 높게 주면 원본보다 퀄리티가 나아질 수 있다"는 주장에 대해 2 sSTSs 2018.09.20 328 0
41 SSIM, PSNR로 측정한 NVENC 인코딩 4 file sSTSs 2018.09.10 190 0
40 인코딩된 파일의 PSNR, SSIM 값 계산하기 file sSTSs 2018.09.06 182 0
» 8비트 원본을 10비트로 인코딩하면 8비트로 인코딩할 때보다 화질이 더 낫다? 4 sSTSs 2018.09.04 411 0
38 샤나에서 HEVC(x265)로 2패스 인코딩하기 10 file sSTSs 2018.08.28 560 0
37 해상도 변경 + 하드웨어 가속 인코딩 시 속도 향상 12 file sSTSs 2018.08.24 910 0
36 부드러운 움직임의 60 프레임 인코딩 11 sSTSs 2018.07.17 2386 0
35 tonemap, zscale 필터를 이용한 HDR->SDR 변환 (FFmpeg CLI) 3 file sSTSs 2018.06.26 538 0
34 하드웨어 가속 디코딩을 꺼서 인코딩 속도를 높이기 4 sSTSs 2018.06.19 3320 1
33 소장용 고화질 1080p 영상 인코딩 팁 퍼플군단 2018.06.13 3721 0
32 샤나인코더와 자막, Q&A 1 file sSTSs 2018.06.01 1128 0
31 QuickTime/Apple TV에서 재생이 안 되는 HEVC 동영상 문제 해결 1 file sSTSs 2018.05.21 655 0
30 HD(720p) 이상 고해상도 동영상을 HD의 WebM(VP9, Opus 코덱)으로 인코딩하기 file sSTSs 2018.05.20 1157 0
29 wINDOWS10 멀티 데스크톱 정군 2018.05.08 631 0
28 HDR 영상 인코딩하기! 7 황금별똥 2018.01.24 3185 0
27 ASS 자막 파일을 aegisub으로 작업 시 libass를 사용하세요. file 샤나 2018.01.20 1175 1
26 블루레이 (Blu-ray) 폰트 모음 트루폰트로 올립니다. (용량관계로 댓글 부분확인) 3회 연속 업로드함. 2 file 능소화 2017.10.28 3639 0
25 MP3 파일 비트레이트 320 이상 설정방법 / 자막크기 및 자막 위치 설정 방법 1 file 능소화 2017.10.28 2702 0
Board Pagination Prev 1 2 3 Next
/ 3