앤티에일리어싱 필터는 높은 해상도의 영상을 낮은 해상도에서 표현할 때 나타나는 계단화? 현상(에일리어싱)을 제거해 주는 필터입니다.

아래는 위키에서 가져온 그림인데 오른쪽의 A가 앤티에일리어싱이 적용된 상태입니다.


가끔 인코딩을 하다보면 이런 앤티에일리어싱이 필요한 경우가 있는데 예를 들면 아래와 같은 영상입니다.


요즘 방영중인 '구가의 서' 1회에 나오는 장면인데 어깨선과 검은 배경의 경계를 잘 보면 계단처럼 각이 진 것을 볼 수 있죠.

HDTV 소스라서 인터레이스 때문이 아닌가 싶을 수도 있지만 separatefields()로 각각의 필드를 확인해 보면 라인 간의 어긋남이 아니고

에일리어싱이라는 것을 알 수 있습니다.

따라서 이런 경우에는 앤티에일리어싱 필터를 사용해주면 어느정도는 보정이 가능합니다.



앤티에일리어싱 필터에도 여러가지 종류가 있지만 이 글에서 소개할 필터는 DAA()입니다.

제가 사용해 본 앤티에일리어싱 필터들 중에서는 결과물이 가장 좋았던 것 같습니다.


http://avisynth.org/mediawiki/DAA


우선 필요한 플러그인은 다음과 같습니다.

  • NNEDI2
  • MaskTools2
  • RemoveGrain

그리고 avs 스크립트는 아래의 내용을 복사해서 사용하시면 됩니다.

function daa(clip c) {

nn = c.nnedi2(field=-2)

dbl   = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)

dblD = mt_makediff(c,dbl,U=3,V=3)

shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)

DD = shrpD.repair(dblD,13)

return dbl.mt_adddiff(DD,U=3,V=3) }


마지막으로 아래는 위에서 예로 든 '구가의 서'에 DAA()를 적용한 스크린샷입니다.

왼쪽이 원본이고 오른쪽이 DAA()를 적용한 화면입니다. 어깨선이 비교적 부드러워진 것을 확인할 수 있습니다.





Posted by 김코덱