AVISynth를 이용한 로고 제거법


동영상 파일에서 보기 불편한 것 중 하나가 바로 로고입니다.
(물론, 저작권을 명시하기 위한 경우가 많으며, 이걸 욕하는 것도 아닙니다.
단지 보기에 초큼 불편하단 얘길 하는 것입니다)

그런데, AVISynth와 플러그인을 하나 사용하면 로고도 간단히 제거할 수 있습니다.



1. 로고 삭제 플러그인의 종류

상당히 많은 로고 삭제 플러그인이 있습니다.
AVISynth 용으로는 오늘 소개할 xlogoDeKafka가 대표적이고,
virtualdub 용으로는 DeLogo, MSU Logo Remover 등이 있습니다.
좀 더 상세한 종류와 사용법은 Doom9.net에서 볼 수 있습니다.


2. xlogo는?

다운로드: AviSynth 필터 모음

전술했듯이, avisynth용 플러그인입니다.
(여담이지만, avisynth 자체가 별도의 UI가 없는 프로그램이다보니, 이 계열은 캡쳐 화면을 올리는 것 자체가 불가능합니다)

삭제하려는 로고를 흰색으로, 주변부분을 검은색으로 표시한 BMP 파일을 만들어 지정하면 해당부분의 로고를 삭제하고 주변색으로 적절하게 덮어줍니다.
하단의 로고를 없애기 위한 마스크는 아래와 같습니다.

logo1_x_204_y_276_2.bmp

파일명은 로고이름_x_x좌표_y_y좌표_... 의 형식입니다.
이것은 반드시 지킬 필요가 있는 것은 아니지만, avisynth 버전과의 호환성을 위해서 권장되는 방식입니다.
한가지 주의할 점은 로고를 만들 때 크기를 짝수로 해야 하고, 흰 로고 주변으로 충분한 검은 여백을 둬야 한다는 점입니다.


3. script 예제 및 결과

아래 스크립트는 TDK.avi 파일을 읽어 하단의 로고를 제거하는 스크립트입니다.
1
2
loadplugin("xlogo.dll")
avisource("TDK.avi").xlogo("logo1_x_204_y_276_2.bmp", x=204, y=276, alpha=0)

흠... 그런데, 로고가 동영상 전체에 있는 것이 아니라 일부 프레임에만 있군요...
그렇다면 이렇게 하는게 좋겠군요.
아래 스크립트는 avisynth의 trim 기능을 이용해서 1344~2788 프레임에만 xlogo를 적용하는 스크립트입니다.
1
2
3
4
5
6
7
8
loadplugin("xlogo.dll")
src=avisource("TDK.avi")
 
a1=src.trim(0, 1343)
b1=src.trim(1344, 2788).xlogo("logo1_x_204_y_276_2.bmp", x=204, y=276, alpha=0)
a2=dk.trim(2789, 9990)
 
return a1+b1+a2

정말 쉽지 않나요?