FFMPEG/FFMPEG 기초

디인터레이스 FFMPEG

JasonCloud 2022. 10. 27. 16:23
반응형

출처 : 나무위키1. 정의[편집]

 

 

디인터레이싱 - 나무위키

인터레이스(비월 주사) 방식의 영상을 프로그레시브(순차 주사)로 바꾸는 과정을 말한다. 두 필드를 하나의 프레임으로 합치기만 하고 별다른 처리를 하지 않는다. 움직임이 있으면 그 부분에

namu.wiki

인터레이스(비월 주사) 방식의 영상을 프로그레시브(순차 주사)로 바꾸는 과정을 말한다.

2. 인터레이스 영상이란?[편집]

TV가 최초로 발명됐을 당시에는 하드웨어 성능 부족으로 인하여 사람들이 원하는 대로 초당 60회[1] 이상 화면을 스캔할 수 없었다. 그래서 하나의 화면을 가로줄 단위로 자른 뒤 처음은 홀수 번째 줄만 스캔을 하고 그 다음은 짝수 번째 줄만 스캔을 하는 방식으로 초당 60장의 영상을 구현하였는데 이것을 인터레이스라고 한다. 스캔된 결과물 하나하나를 필드라고 하며 짝수 줄만 스캔한 것을 탑 필드, 홀수 줄만 스캔한 것을 바텀 필드라고 부른다. 탑 필드와 바텀 필드를 합치면 하나의 프레임이 된다. 프로그레시브 영상은 하나의 화면이 하나의 프레임을 이룬다.

3. 인터레이스 영상을 디인터레이싱하지 않으면 어떤 일이 일어나는가?[편집]

첫 번째 필드가 최초 1/60초 동안의 화면을 촬영한 것이면 두 번째 필드는 그다음 2/60초의 화면을 촬영한 것이다. 각각 다른 시각을 촬영한 것인데 이것을 하나로 합쳐버리니 하나의 화면에 두 개의 상이 만들어지게 된다. 물론 움직임이 거의 없는 영상에서는 별로 티가 안 나지만 스포츠나 댄스 등 움직임이 많은 영상에서는 쉽게 이상한 점을 알아차릴 수 있다. 만약에 디인터레이싱을 하지 않은 상태로 세로 해상도를 바꾸어 리사이즈하게 되면 두 개의 상이 겹친 것이 영구적으로 남아버리게 된다.[2] 그럼에도 디인터레이싱을 하지 않은 채 인코딩한 뒤 영상을 배포하는 사례를 주위에서 쉽게 찾아볼 수 있다.

4. 60i에서 60p로의 변환은 의미가 있을까?[편집]

보통 HDTV 방송 원본의 경우 30p[3]로 표시되는데 사실은 30p가 아니라 60i[4]로 되어 있는 것이다. 60i는 초당 60장의 필드를 가지고 있으므로 필드를 하나의 프레임으로 확장시켜서 60p로 만들어서 감상하는 게 정상이다. 절대 억지로 없는 화면을 부풀리는 게 아니다. 물론 60i 자체의 정보량이 60p보다 적기 때문에 일종의 업스케일링이 되지만, 해상도를 몇 배씩 올리는 업스케일링에 비하면 추측으로 복원하는 정도가 미약[5]하기 때문에 다르게 처리해서 더 나아질 이유가 없다.[6]

단, 진짜 60fps가 아닌 풀다운된 영상[7]의 경우 일반적으로 쓰이는 디인터레이싱 필터를 사용하면 실제 60fps도 아닌 영상의 필드들이 중복되어 60fps로 불어남은 물론이고 화질에서도 손해를 볼 수 있다. 따라서 이때는 필드매치를 우선적으로 고려하되 그 난이도[8]가 지나치게 높을 경우 차선책으로서 60p로 전환한다.

프레임당 한 필드만 골라내어 30p로 전환하는 방법[9]도 흔히 쓰인다. 이 방법을 사용하면 30p였던 부분의 프레임 레이트는 그대로 유지되고 60p는 절반으로 줄어들며 24p는 5프레임당 한 프레임이 균등하게 중복되어 감상에 그리 큰 불편함이 없다. 이러한 형태의 30p 전환은 '60p 변환은 낭비이지만 그렇다고 정확하게 필드매치를 할 여건도 안 되는 상황'에서 궁여지책으로 쓰인다. 만약 이미 60p 혹은 50p로 디인터레이스된 프로그레시브 영상이라면 짝수/홀수 프레임[10]을 select와 같은 필터를 써서 정확하게 골라낼 수 있다.

네이티브 30p 영상을 60p로 만들기 위해서는 프레임 사이에 프레임을 만드는 플루이드 모션 같은 기술을 사용해야 하며, 가장 좋은 것은 네이티브 60p으로 보는 것이 가장 타당하다.

5. 디인터레이싱의 종류[편집]

5.1. weave[편집]

두 필드를 하나의 프레임으로 합치기만 하고 별다른 처리를 하지 않는다. 움직임이 있으면 그 부분에 가로줄이 보이게 된다.

5.2. blend[편집]

주사선을 섞어 내보낸다. 2개의 상이 겹쳐 보이는 단점이 있다. 디인터레이스 없이 리사이즈했을 때도 비슷한 현상이 일어나는데, 결정적으로 다른 점은 blend는 각 필드의 명도와 채도 값을 균일하게 섞어 내보낸다는 것이다. 따라서 리사이즈했을 시엔 인터레이스 가로줄의 흔적을 관찰할 수 있는 반면, blend는 두 상이 정확하게 한 화면에 표시되어 마치 움직임에 잔상이 남는 것처럼 표현된다는 차이가 있다.

5.3. bob[편집]

필드의 세로 해상도를 2배로 늘려서 프레임으로 만든다. 결과적으로는 프레임 더블링이 된다. 세로 해상도를 늘릴 때 단순히 자기 복제를 하는지, 아니면 앞/뒤/위/아래 필드를 참조해서 최적의 픽셀을 넣느냐에 따라 품질이 좌우된다. 단순히 세로 해상도를 늘리기만 하는 경우에는 세로 해상도가 절반이기 때문에 영상이 다소 흐려지며, 화면이 위아래로 살짝 떨리는 듯한 모습도 볼 수 있다.

아날로그 시절에는 디인터레이싱을 위해 수천만 원짜리 장비가 필요했으나 디지털 시대가 되면서 5만 원짜리 그래픽 카드만 사도 그래픽 카드 제조사에서 제공하는 고품질의 디인터레이싱 기능을 사용할 수 있게 되었다.

5.4. yadif, nnedi[편집]

필드의 세로 해상도를 2배로 늘려 하나의 프레임을 만드는 것은 bob과 같지만, 늘리는 방법에 있어 훨씬 발전한 방법을 사용하여 더욱 선명한 화면을 보여준다. 또한, 각 프레임당 한 필드만 디인터레이스함으로써 30fps로 감상하는 것도 가능하도록 되어 있다. AviSynth를 사용한다면 yadif와 nnedi 둘을 동시에 적용하는 것도 가능[11]하다.
 
 
반응형


ffmpeg로 인코딩할 시 yadif나 nnedi3를 사용할 수 있다. 그외에도 MX 플레이어가 yadif 디인터레이싱을 지원한다.

5.5. fieldmatch[편집]

원본 필름의 프레임 레이트는 따로 있고 풀다운을 통해 만들어진 인터레이스 영상에만 적용 가능한 방법이다. 가장 대표적인 것이 24fps를 60fps로 전환하는 데 쓰이는 2:3 풀다운으로, 이런 영상은 24장의 각 프레임 하나하나를 2번, 3번 교대로 반복하여 60장을 만들고 그것을 인터레이스해서 만들어진다. 이때 필연적으로 패턴이 생기기 때문에 해당 패턴에 맞추어 필드의 순서를 바꾸면 원본 프레임을 복원할 수 있다. 24p to 60i 영상을 필드매치하면 30p 영상이 만들어지게 되며, 여기서 사용된 패턴에 따라 중복된 프레임을 제거하면 최종적으로 24p의 네이티브 필름 레이트의 영상이 복원된다. 자동 필터를 통해 실시간으로 가능한 경우도 있지만, 오래된 영상의 경우 영상 중간에 풀다운 패턴이 바뀌거나, 패턴 중간에 잘라 이어붙인 구간이 존재하거나, 패턴 자체가 파탄나거나 하는 일이 자주 일어나기 때문에 모든 프레임을 일일이 확인해 편집하는 수작업과 재인코딩이 필요하며, 영상에 필드 고스팅 같은 현상이 발생했을 경우에는 완벽하게 복원하는 것이 불가능할 수도 있다. 엄밀히 말하면 디인터레이싱이라기보다는 디텔레시네에 해당하지만, 영상 포럼에서 DVD를 디인터레이스해 프로그레시브로 복원한다는 식이 말이 나오면 거의 이쪽일 정도로 개념이 혼용된다.

5.6. Skip Field, Select[편집]

보통 60i를 30p로, 혹은 50i를 25p로 전환할 때 쓰지만[12] 필드매치와 같이 원본 프레임 레이트는 따로 있고 풀다운을 통해 만들어진 인터레이스 영상에도 큰 불편 없이 적용 가능하며 Select를 잘 사용하면 필드매치와 같은 효과를 낼 수도 있다.[13] 이때 다른 점은 필드매치가 탑 필드와 바텀 필드를 합쳐 하나의 온전한 프레임을 만들어낸다면 셀렉트는 일단 영상을 디인터레이스한 뒤 풀다운 패턴에 맞추어 필요한 필드만을 추려낸다는 점이다. 따라서 단순히 디인터레이스한 것과 별반 다를 것 없는 화질이 나오게 된다. 그럼에도 셀렉트가 종종 쓰이는 이유는 필드매치에 비해 훨씬 간편하고 여러 패턴이 뒤섞인 영상으로부터도 CFR을 유지할 수 있으며 제아무리 잘못해도 최소한 인터레이스 주사선을 볼 일은 없기 때문이다. 또한 타이밍이 다른 오버레이나 24/30/60프레임이 섞인 영상에서도 프레임레이트를 바꾸지 않고서 대처할 수 있다는 강점이 있다.

5.7. SeparateFields[편집]

필드를 분리하되 그 어떤 조작도 하지 않는다. 따라서 프레임 레이트는 두 배로 늘어나고 세로 해상도는 원본 프레임의 절반이 된다. 이 상태에서 세로 해상도를 두 배로 늘려 보정하는 것이 일반적인 디인터레이스이며 Select를 사용하여 필요 없는 필드를 탈락시키고 순서를 바꾼[14] 후 Weave로 되돌리면 필드매치가 된다. SeparateFields 자체는 감상용으로 쓰일 만한 방법은 아니지만 아무런 조작도 가하지 않기 때문에 Weave를 사용하여 원본 인터레이스 영상 그대로 되돌릴 수 있다는 특징이 있다. 따라서 SeparateFields는 인터레이스를 유지하면서 영상을 편집하거나, 자막을 넣거나, 보정 필터를 거는 등의 작업을 할 때 사용된다.

6. 디인터레이싱 방법[편집]

6.1. 텔레비전으로 감상[편집]

모든 디지털 텔레비전은 자체적으로 디인터레이싱 프로세서를 내장하고 있다.

6.2. 컴퓨터로 감상[편집]

LAVFilters를 설치하거나 Windows 내장 코덱으로 재생하면 자동으로 디인터레이싱이 된다. "LAV 코덱 60프레임" 등으로 검색해보면 많은 정보를 얻을 수 있다.

팟플레이어를 사용하는 경우에는 기본값이 Blend로 되어 있어서 30프레임으로 나온다. Motion Adaptive(2× Frame)나 하드웨어 디인터레이싱으로 바꾸거나, DXVA 기능을 활성화하면 60프레임으로 감상 가능하다.

곰플레이어는 디인터레이싱 ON/OFF만 가능하며, 세부 설정이 불가능하기 때문에 30프레임으로만 감상 가능하다. 60프레임으로 보고 싶으면 다른 프로그램으로 바꿔야 한다.

6.3. 인코딩을 할 때[편집]

영상이 HDTV 원본이거나 mediainfo로 봤을 때 interlaced라고
 
 
나온다면 디인터레이싱이 꼭 필요하다. 웬만한 인코딩 프로그램에는 디인터레이싱 옵션이 있으므로 찾아서 켜면 된다.

영상의 모든 움직임에 인터레이스 가로줄이 발생하지 않고 특정한 패턴[15]이 존재한다면 풀다운된 영상이므로 fieldmatch와 decimation 필터를 사용하여 프로그레시브로 복원할 수 있다. 만약 인코딩 프로그램의 자동 필터를 사용한 결과물이 만족스럽지 않다면, avisynth 등의 스크립트와 영상 편집 툴을 사용해 수작업으로 할 수도 있다.
반응형