티스토리 툴바


Yadif

인코딩/고 2008/02/29 16:35

Yadif 는 움직임을 감지해 빈필드 부분을 채워넣어 디인터레이스 해주는 필터입니다

상당히 빨라서 디코딩때도 인터레이스 영상에 ffdshow 안의 avisynth 스크립트 적는곳에 yadif 를 이용해 시청..하는 경우가 많습니다

사실 이걸 Decomb 다음에 바로 적었어야 했는데
미루다가 요즘 글적을 기회가 없어져서 지금에서야 적습니다
인터레이스 더 잘 해결하려고 디콤브 열심히 파보신분에겐 죄송하네요

이건 설정 해줄것도 없고 아주 간단합니다
그냥 플러그인 다운로드 페이지로 가셔서 Yadif 찾아 받으시면 되니까요

너무 간단하니 yadif설명은 줄이고 잡소리나 합시다



먼저 디인터레이스 관련 필터들을 정리해보자면

우리가 배웠던 Decomb 부터 기억해봅시다
Telecide 는 필드매칭을 하고 필요에 따라 디인터레이스를 했었습니다
Decimate 는 중복 프레임을 뽑아내는거 였구요
FieldDeinterace 는 telecide의 디인터레이스 기능만 있는 버전이었는데요

이 Decomb 시리즈의 디인터레이스는 정말...... 너무 단순했었죠
가로줄 있는 장면을 감지해내서
가로줄이 많다면 아래 필드를 버리고 빈 아래 필드 자리는
그장면의 위 필드 만으로 추측해 채워넣는 식이어서
아주 그냥 줄이 죽죽.....
혹은 blend=true 를 이용해서 장면을 섞어 처리했었는데 이건 희뿌옇게 잔상도 아닌게....
화질도 안좋고 용량도 늘고.. 암담했죠

그래서 이 decomb의 기초적인 디인터레이스 다음 레벨의 방법은
움직임을 감지해내서 그 부분만 디인터레이스 하는 방법입니다
대표적으론 Tdeint 라는게 있었는데 좀 느렸습니다

그래서 Tdeint 와 비슷하면서도 빠른 Yadif 가 뜨죠
너무 간편하고 빨라서 설명도 필요없습니다
속도는 컬러매트릭스 정도 급이니 인코딩땐 생각안해도 될 속도죠





그럼 같이 해보겠습니다
다들 받으셨으면 플러그인 폴더로 이동시키고
Yadif() 쳐보니 에러메세지를 뿜으며 인식이 안되죠?
이 플러그인은 형식이 달라서 그렇다고 같이 포함된 문서에 적혀있네요
일반적으로 우클릭 메뉴로 플러그인을 불러올때
Loadplugin("C:\asdfasdf\yadif.dll")   라고 적어지죠?

거기서 중간에 c만 붙혀서 LoadCplugin("C:\asdfasdf\yadif.dll") 라고 적어주세요

Load_Stdcall_plugin() 혹은 LoadCplugin() 를 이용해서 불러와야 된다고 합니다

그럼 이제 잘 되죠?

끝.....







... 더 자세히 보자면     Yadif (clip, int "mode", int "order")
라는데요 order는 탑필드 퍼스트 영상인지 버텀 퍼스트인지 정하는거 입니다 자주 나오죠
알아서 잘 되니 안해도 문제없구요

mode 는 뭐냐 하면
mode=0 의 경우 시간상 과 공간상 둘다 인터레이스 검사하고 판별뒤 디인터레이스 합니다
그러니까 움직임이 있는부분과 현재 프레임의 모양을 보고 디인터레이스를 한다는거겠죠?

뭘 고르던 빠르지만 특정영상에선 0 을 골랐을때
멈춰 있는 장면이라 디인터레이스가 필요없는데도
표면이 디인터레이스 하고싶게 생겨서... 디인터레이스 처리 되버리는 특이한 경우 2 를 사용합니다


mode=1 은 프레임레이트를 두배로 늘리고(bob) 시간적, 공간적 으로 검사뒤 빈필드부분은 채워넣습니다
      그러니까 탑,버텀 필드를 나눠 각각을 프레임으로 만든뒤
      앞뒤장면 모션등을 비교해서 비어있는 각 상대 필드 부분을 채워넣는거죠
      용량부담이 있지만 티비보는것 처럼 움직임이 부드러워집니다
      움직임이 중요한 영상이라던지 선명한 인터레이스 영상은 해볼만 하죠
mode=2 는 프레임레이트는 그대로, 하고 시간적 으로만 디인터레이스
mode=3 은 bob 후 시간적 으로만 체크

yadif 가 무척 빠르다곤 했지만.. 1 과 3 은 프레임 갯수가 두배가되니
인코딩할 프레임이 많아져서 소요시간이 늘어납니다... 두배 가까이...
용량또한 움직임이 많은 영상이라면 두배 가까이.........











음.... 끝으로 한번더 강조 하겠습니다 인터레이스 영상과 3:2 풀다운은 꼭 구별해서 처리합시다

이 yadif 는 오.로.지. 인터레이스 영상에서만 써야해요
프로그래시브 영상에 yadif 써보시면 멀쩡한 프레임이 모두 난도질 당합니다...
특히!!!  3:2 풀다운 영상에 절대로 쓰지마세요
yadif가 성능이 좋아 인터레이스줄은 사라지긴 하지만 쓰지마세요......ㅠㅠ

http://hruj.tistory.com
풀다운 영상의 경우 Decomb 의 Telecide 필드매칭 기능이 훨씬 킹짱 끝이니까요
필드매칭은 원리상 가로줄 처리에 완벽 합니다
풀다운영상이란 원래 프로그래시브 24fps였지만 몇몇필드를 중복해넣어 30fps을 만든거란 의미니까요

현재 화면의 버텀 필드를 가지고
현재 화면의 탑필드와 붙혀본뒤 가로줄 정도를 검사,
또 다음화면의 탑필드와 붙혀본뒤 가로줄 정도를 검사,
둘중 가로줄 적은 필드를 선택.

아무리 상태가 안좋은 컴퓨터라도 이렇게 둘중 하나 답이 항상 있는경우는
빗나갈래야 빗나갈수가 없겠죠?
그 뒤 decimate로 중복된 장면을 뽑아내면 이보다 더 쉽고빠르고 정확한 IVTC 는 없죠




이해 안가는 용어가 있다면 중급 폴더 꼼꼼히 읽어보시구요
그럼 진짜 끝
Posted by hruj

댓글을 달아 주세요

  1. hruj 2008/03/09 21:17  댓글주소  수정/삭제  댓글쓰기

    적은지 좀 된건데 비공개를 해놓고 모르고 있었네요

  2. cmcmcm 2008/03/24 18:33  댓글주소  수정/삭제  댓글쓰기

    컥 ㅠ.ㅠ;;
    저는 이렇게 avisource("D:\avi1.avi")
    LoadCplugin("C:\Program Files\AviSynth 2.5\plugins\Yadif.dll")
    Yadif()

    햇는데..

    Not an avisynth 2 C plugin: c:\program files\avisynth 2.5\plugins\yadif.dll
    (C:\program files\avisynth 2.5\pluguns\preview1,avs, line 2)이렇게 뜨네ㅐ요 ㅠ.ㅠ;;

    ㅏ웅 그리고 혹시 seesaw써보셨나요??^^ㅋㅋ

    여기서 많은 배움얻고가요 ^^ 즐건하루보내세요아그리고 저는 avsP로작업하였씁니다

  3. hruj 2008/03/25 00:09  댓글주소  수정/삭제  댓글쓰기

    이런 에러는 처음보는데... 밑에것도 그렇고 avisynth 버전때문에 그런거같네요 보통 2.56

  4. cmcmcm 2008/03/25 09:14  댓글주소  수정/삭제  댓글쓰기

    와우!!! 정답이었습니다....

    ㅋㅋ

    ydif적용 됬음돠 ㅠ.ㅠ; 감동 ㅋㅋ

    지금 제가 인코딩을 시작하게된것이..

    영상업쪽에 일을하고있는데요 촬영해온 촬영본에 인터레이스가 심해서..

    편집툴을 이용해서 디인터를 먹이니;;; 엄청나게 화질손상이

    되더라구요..ㅠ.ㅠ;

    그래서 이렇게 시작을하게됫습니다..

    현재는 Seesaw를 이용해서 다른 필터들과 잘섞으면..

    큰 화질손상도없이.. 원하는 결과물들을 얻을수 있다고하더라구요..

    근데ㅠㅠ

    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\seesaw\masktools-v2.0a32\mt_masktools.dll")
    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\seesaw\MaskTools-v1.5.8\masktools.dll")
    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\RemoveGrainSse3.dll")
    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\RepairSse3.dll")
    loadplugin("C:\Program Files\AviSynth 2.5\plugins\fft3dfilter\fft3dfilter.dll")
    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\awarpsharp.dll")
    Import("C:\Program Files\AviSynth 2.5\plugins\Limitedsharpenfaster.avsi")
    Import("C:\Program Files\AviSynth 2.5\plugins\SeeSaw.avs")
    a=avisource("d:\avi1.avi")
    b=a.Removegrain()
    b=FFT3DFilter(a,sigma=6, sharpen=0.3, bt=5, bw=16, bh=16, ow=8, oh=8, ncpu=4)

    LimitedSharpenfaster(b,ss_x=2.0, ss_y=2.0, Smode=2)
    SeeSaw(a,b, NRlimit=2, NRlimit2=3, Sstr=1.5, Slimit=4, Spower=4, Sdamplo=5, Szp=18, sootheT=100, sootheS=100)
    #crop( 4, 4, -4, -4)

    LanczosResize(1280,720) # Lanczos (Sharp)
    #denoise

    제가 이렇게했을때에..경로는 다맞구요 ㅠ.ㅠ;

    avisynth open failure:
    RemoveGrain: only planar color spaces are supported
    (d:\seesaw2.avs, line 10)이라고뜨네요 ㅠㅠ

    여기서 seesaw2.avs는 제가 작성한 avs이구요..ㅠ.ㅠ;;

    왜그럴가요 ㅠㅠ

  5. hruj 2008/03/26 00:36  댓글주소  수정/삭제  댓글쓰기

    시소필터에서 사용되는 리무브 그레인에서 색공간 에러같은데
    뭔지 잘모르겠네요 윗쪽 인터레이스가 끝난 적당한 위치에 converttoyv12() 적어보시고
    안되면 에러 메세지 구글 검색하며 돌아다녀 봐야 될것같네요

  6. cmcmcm 2008/03/26 10:06  댓글주소  수정/삭제  댓글쓰기

    앗 감사합니다^^

    꼭 해결해서 좋은결과 알려드릴께요!!ㅋ

    즐거운하루되세요

  7. snoopy 2008/05/01 16:11  댓글주소  수정/삭제  댓글쓰기

    제 블로그에 링크 좀 걸겠습니다~~
    인코딩 관련해서 레퍼런스로 소개하려구요 ^^

  8. hruj 2008/05/12 00:56  댓글주소  수정/삭제  댓글쓰기

    네 블로그 링크 해 주시면 저야 감사합니다