"비트레이트를 원본보다 높게 주면 원본보다 퀄리티가 나아질 수 있다"는 주장에 대해

by JKyle posted Sep 19, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

(질문 및 답변에 올라왔던 질문 글에 대한 댓글을 정리해서 이곳에 옮깁니다. 저 자신도 아직 배우는 입장이라 불완전한 부분도 있을 수 있습니다. 본문의 내용에 대해 다른 의견을 가지거나 보다 깊은 논의를 하고자 하시는 분들은 댓글로 남겨 주시면 감사하겠습니다.)

 

"내 경험으로는 재인코딩해서 비트레이트를 높였더니 퀄리티가 향상되더라." 하는 주장을 하시는 분들이 종종 있습니다. 몇몇 분이 자신도 그런 걸 느꼈다고 동조하시면 이를 일반적으로 사실인 것으로 받아들이는 분들이 있는데 잘못된 이해를 불식하기 위해 거기에 대해서 설명하고자 합니다.

 

결론적으로, 그런 결과는 우연이 동반된 개인적인 민감도와 취향의 차이입니다. 왜냐면 영상도 그렇고 오디오도 그렇고, 대부분의 코덱들이 사용하는 '손실 압축'은 기본적으로 '손실'이 전제되므로 재인코딩은 반드시 정보의 손실을 수반하기 때문입니다. 원본을 재인코딩한다는 건, 원본을 디코딩해서 풀어헤치고, 그걸 다시 손실 압축하는 과정입니다. 이 과정에서 일부 정보는 손실시킬 수밖에 없으며 그 기준은 아래 설명하는 몇 가지 원칙에 따릅니다.

 

원본에서 어떤 부분을 손실시킬지 결정하는 가장 큰 틀의 결정적이고 객관적인 잣대가 영상에서는 '퀀타이저(quantizer, 또는 qp = quantization parameter)'고 오디오에서는 '비트레이트'가 됩니다. 뭐, qp도 현상적으로는 비트레이트로 나타나게 되니 결국 비트레이트가 잣대가 된다고도 말할 수 있겠습니다.

 

그리고 또 다른 기준으로는, '인간이 일반적으로 인지하는 수준'이 있습니다. 즉, 영상에서는 우리 인간의 눈이 일반적으로 잘 캐치하지 못하는 부분을 손실시키는 거고, 오디오에서는 우리 귀가 잘 듣지 못하는 부분을 손실시키는 겁니다.

 

이 부분이 문제가 됩니다. '인간이 일반적으로 인지하는 수준'이라는 게, 평균적이고 통계적으로는 그럴 수 있겠지만 막상 백이면 백 모든 사람이 다 같은 게 아니기 때문에.

 

우선 영상으로는, 인간이 색의 차이(chrominance)보다 명암의 차이(luminance)에 더 민감하기 때문에 픽셀 간 색 차이는 대충 건너뛰자 하는 게 우리가 늘 접하는 chroma subsampling, 즉 YUV444가 어떻고 YUV422가 어떻고 YUV420이 어떻고 하는 것들입니다. 모니터들은 RGB로 표현되는데 왜 영상들은 색공간을 YUV로 표현할까요? 그건 흑백 TV에서 컬러 TV로 전환되는 과정의 기술적인 대응에도 이유가 있겠지만 (명암만 표현 -> 명암에 색조를 추가), 근본적으로는 바로 앞에서 설명한 내용 때문입니다. 즉, 손실은 있더라도 인간이 인지하기엔 거의 불가능하기 때문에 픽셀들의 색 차이를 대충 뭉뚱그리면 용량도 절약하면서 화질 차이를 거의 느낄 수 없기 때문입니다.

 

그걸 기본으로 깔고, 거기다 심리-인지과학과 관련된 몇 가지 이론을 적용하여 무슨 무슨 변환을 해서 손실을 시키는 게 바로 영상의 코덱들인 겁니다.

 

근데 막말로, 명암 차이보다 색 차이에 더 민감한 인간이 있을 수도 있지 않겠습니까? 색 차이에 둔한 색맹들도 많지만, 그 반대의 경우도 없다고는 단언할 수는 없겠죠. 그리고 어떤 사람은 노이즈에 더 민감한 사람도 있겠고, 어떤 사람은 머리카락같이 미세한 디테일에 더 민감한 사람도 있겠고, 하다못해 잔상에 대해 극도로 예민해서 남들은 캐치하지 못하는 움직임 변화를 민감하게 캐치하는 사람도 있겠죠.

 

오디오의 경우에도 유사합니다. 평균적인 인간이 인지하기 힘든 주파수대는 생략하면서 손실시키면 용량도 절약하면서 음질 차이를 거의 느낄 수 없죠. 하지만 누가 압니까? 진짜 돌고래같이 청각에 예민한 사람이 있을 수도 있겠고, 특정 주파수에 더욱 끌리는 사람도 있을 수 있겠죠.

 

다시 원래 문제로 돌아가서, 재인코딩에 비트레이트를 좀 높였더니 퀄리티가 더 낫게 들리거나 보였다는 것은, 원본을 그 이전의 원본에서 인코딩할 때 적용했던 손실률(비트레이트로 표현되는...)보다 손실률을 좀 줄이는 설정으로 (보다 높은 비트레이트) 재인코딩을 했더니 그게 본인에게 더 낫게 들리거나 보였다는 것입니다. 원본과 같은 손실률, 즉 원본과 비슷한 비트레이트를 적용하라는 건, 원본이 그 이전 원본의 정보에서 누락시켰던 것과 비슷한 기준으로 정보를 잘라내도록 하라는 것입니다. 코덱에 따라 틀리겠지만, 좋은 코덱은 그럴 경우 대부분의 원본 정보를 보존합니다. 필터를 적용하면 손실의 기준이 달라질 수 있겠지만, 필터를 적용하지 않는 한은 그렇습니다. 놓치는 부분도 있겠지만 그것을 인지할 수 있다는 것은 우연이거나 개인적인 민감도의 차이입니다. 그리고 우리가 아는 현재의 대부분의 코덱들은 좋은 코덱들이죠.

 

원본을 그대로 보존하는 인코딩은 무손실 압축 방식의 코덱, 또는 퀀타이저를 0으로 주고 하는 손실 압축뿐입니다. 후자의 경우도 결국 무손실 압축 방식과 다르지 않습니다. 오디오의 경우에는 손실 압축의 퀀타이저 0에 해당하는 옵션이 없으니 (이건 확실하지 않습니다만...) 결국 무손실 압축의 코덱을 쓰는 수밖에 없습니다.

 

비디오의 무손실 압축은 전문적인 영상 편집을 위해 쓰이기도 합니다. 어떤 코덱들이 있는지는 위키피디어의 해당 문서를 참고하십시오. 오디오 역시 많은 무손실 압축 코덱들이 있지만 우리가 일상적으로 많이 쓰는 것들 중에는 FLAC이나 ALAC 등이 그에 해당합니다. 무손실 압축이 어떤 것인지, 각 미디어에 어떤 종류가 있는 것인지에 대한 자세한 내용은 위키피디어의 해당 문서를 참고하시면 됩니다.

 

오디오의 손실 압축을 예로 들면, AAC나 MP3의 경우에는 손실 압축 방식이니 비트레이트를 원본보다 높게 준다고 해도 손실이 일어날 수밖에 없습니다. 단지, 무손실에는 좀더 가까워지겠죠. 제가 개인의 차이라고 말씀드리는 것은, 대부분의 사람들에게 그 차이가 별로 크게 다가오지는 않을 것이기 때문입니다. 하지만 그 차이가 느껴지신다면 당연히 비트레이트를 높게 해서 인코딩하시는 게 맞겠죠.

 

그리고 서로 다른 코덱으로 변환할 때는 (예를 들어 AAC로 된 오디오를 MP3로 변환한다든지 하는 식으로) 코덱들 간에 손실과 압축의 알고리듬과 효율이 다르기 때문에 그런 걸 어느 정도 고려하는 게 좋습니다. 예를 들어, AAC 128 Kbps를 MP3 192 Kbps로 변환하는 것도 나쁘지 않습니다. 마치 2 Mbps의 비트레이트를 가진 HEVC 영상을 H264 3 Mbps나 4 Mbps로 바꾸듯요. 어차피 정보의 손실은 일어나겠지만 적정 수준에서 최대한 보존하는 쪽으로 가는 게 낫습니다. 여기서 '적정 수준'이라는 게 중요한데, 그건 본인에게 맞는 수준을 말하는 겁니다.

 

다시 말씀드리자면, 인코딩의 결과에 대한 퀄리티 인식은 순전히 주관적인 것입니다. 자신이 그렇게 경험을 했다면 그 방식을 따르는 게 맞습니다. 단지, 그것을 일반화해서 주장하는 것은 잘못된 것이라고 말하고 싶습니다.