domingo, 27 de diciembre de 2015

Aprendiendo informatica: Eliminar hardsubs (III) - Mascaras de MSU Subtitle Remover

Hoy ya pasamos a la parte interesante, como eliminar los subtitulos, o mejor dicho "disimularlos". Abramos un video y agreguemos el filtro MSU Subtitle remover. Nos aparecerá una pantalla como esta.




Se realizan dos fases para eliminar un subtitulo: generar una "máscara" y difuminar la imagen en torno a ella. Una mascara es el area donde se aplicará una modificación. No solo lo vereis aqui, si profundizais en el tema de las redes oireis hablar de la "mascara de red", o cuando useis capas en programas de edicion de imagen. Es posible hacer ambas cosas a la vez, pero consume mas potencia en el procesador y la calidad es ligeramente inferior. En cualquier caso, la calidad será mala.

Vamos a empezar a generar la mascara. Os recomiendo que cambieis la carpeta temporal, puesto que si vamos a hacer pruebas tendremos que eliminar su contenido varias veces. Este filtro tiene una caracteristica muy molesta. Si ha hecho el trabajo una vez, no lo hace una segunda. Si ha generado la mascara para un frame no vuelve a buscar, y si tenemos que hacer pruebas para afinar la calidad no podremos hacerlas comodamente.

Empecemos a generar nuestra mascara. Lo primero es cambiar las opciones. Podemos ver que hay varias opciones predefinidas. Podeis pensar que la opcion primera (la que pone "Ritsuka") es para colores amarillos, la que hay inmediatamente mas abajo es para colores azules... no os dejeis engañar por eso. Se trata de que le indiqueis si hay un contraste muy fuerte entre el color de fondo y el de las letras, asi como si hay un gran borde en torno a los subtitulos o no. Podeis ajustarlo con esas opciones y luego hacer ajustes mas precisos con la opcion "custom".

En mi prueba, que hare sobre el video que genere para el OCR, lo mas preciso sería la primera de la segunda columna, o la ultima de la primera. Esto consiste en ir probando.

Una vez seleccionadas las opciones que querais, aceptad, id a la ventana principal y presionad el tercer boton. Empezara el video a avanzar. En la ventana del video "definitivo" vereis que se ha puesto en blanco y negro, con puntos blancos recubriendo los subtitulos (si habeis seleccionado los valores correctos). Si no os cubre ninguna letra, parad el video, borrad el contenido de la carpeta que os decia y cambiad las opciones.



Vereis que hay partes en las que encajan mejor o peor, puntos en zonas en las que no hay subtitulo o directamente no hay puntos.



Cuando hayais comprobado que funciona, id a la carpeta temporal. Vereis que se han generado una serie de archivos de imagen numerados. El numero es el frame al que corresponde. Tambien hay un archivo de texto, en el que guarda cierta informacion interna. Esos archivos de imagen se pueden editar y si los abrimos veremos que aparece la zona que veiamos antes en blanco de color rojo. En el caso de que haya zonas rojas en donde no deberia haber subtitulos podriamos borrarlas.



Borramos ahora que ya hemos visto como funciona el contenido de la carpeta temporal. Es el momento de realizar nuestra mascara definitiva.

Para generarla, necesitaremos crear un archivo de video para que pueda grabar el archivo de texto (si lo hacemos solo con la previsulizacion falla, aunque a veces es al reves). Entonces usaremos un codec simple, rapido y que nos genere un archivo pequeño. Usaremos el codec XviD y marcaremos la opcion de "menor calidad", lo que nos dara un archivo pequeño.

Veamos como se hace:

Vamos a Video->Compression y nos aparecerá esta ventana:


Seleccionamos Xvid MPEG-4 Codec y presionamos en "Configure". En el caso de que no hubieramos instalado la version adecuada del pack de codecs, aparecerían menos codecs o incluso no aparecería ninguno.

En la siguiente ventana seleccionamos "Single pass" y marcamos la opcion mas a la derecha del Quantizer.



Aceptamos en ambas ventanas y vamos a File->Save as. Tenemos que tener cuidado para no dejar marcada la casilla "Don't run this job now; add it to job control so I can run it in batch mode". Esa opcion crea una lista de tareas que se ejecutaran de manera progresiva. Si vamos a dejar el video "como salga" podemos usar esa opcion y dedicarnos a otra cosa, pero si queremos retocar las mascaras debemos hacerlo antes de la segunda fase.

Aceptamos, le ponemos un nombre simple y lo grabamos en cualquier parte. Ese archivo al fin y al cabo no lo usaremos para nada. Para un video de cuatro minutos, me indica que tardara un cuarto de hora aproximadamente (tambien estoy usando el equipo para otras cosas).

Hay una forma de acelerar el proceso. Es posible limitar el area donde actua el filtro, Donde pone "detection area" es posible seleccionar solo una parte de la imagen marcando las coordenadas. Podeis ayudaros de la opcion "cropping" de la ventana en la que introduciamos el filtro. Durante ese tiempo tambien podeis aprovechar para editar las mascaras que salgan mal. Otra idea es, si vais a editar un archivo muy grande que tarde muchas horas, dividirlo en varios fragmentos y hacer el trabajo en distintos momentos. Si en cambio preferís tomaros algo de tiempo para mejorar la deteccion, podeis usar algun filtro que mejore el contraste entre el subtitulo y el resto de la imagen. De hecho, si teneis una transcripcion de los subtitulos bien temporizada, podriais generar vuestra propia mascara sobre esos subtitulos.

Hecho esto, ya solo nos falta aplicar esas mascaras al video definitivo, algo que veremos en el siguiente bloque.

No hay comentarios:

Publicar un comentario