Este plugin remove arranhões verticais de filmes. Filme de 8 mm, velho e arranhado. Metade superior do quadro: antes do filtro - metade inferior do quadro: depois do filtro
O plugin detecta arranhões primeiramente, depois
os remove.
Trabalha em cada quadro, usa a informação de
espaço só do quadro atual.
Eu o adapto para restauração de meu velho filme
de 8 mm, pode ser útil a alguém.
Aplica algum borrão vertical à cópia do
quadro, para a supressão da estrutura fina da imagem, linhas inclinadas e ruídos.
Procura por extremos lumas locais em cada linha, com critério de diferença de
luma.
Põe estes extremos em algum mapa (quadro). Fecha
aberturas verticais opcionais nos extremos, expandindo pontos extremos
verticais. Testa mapas extremos com critérios de comprimento e ângulo e
seleciona arranhões reais.
Os arranhões podem ser qualquer um parcialmente
transparente, suave (com detalhes da imagem), ou opaco (sem detalhes ou quase
destruídos). No primeiro caso, o plugin pode diminuir a parte suave (borrado)
da variação de arranhões luma da imagem original. Então, os detalhes de
imagem são mantidos. No segundo caso, o plugin substitui os píxeis arranhados
pela média dos valores luma de alguns píxeis vizinhos (na mesma fila). Nós também intermediamos o caso, fixando alguma
porcentagem de detalhes a manter. O plugin tem alguma adaptação de valor
mantido de acordo com a diferença de píxeis luma.
Em todos os casos, alguns vizinhos mais próximos
também podem mudar parcialmente para mais suavidade.
O programa é plugin (filtro) para o Avisynth 2.5
livre.
Testado com a versão 2.55beta (algumas versões
têm bug com Turnleft())!
O filtro não é mais necessário no Avisynth C
Interface (avithynth_c.dll) por Kevin Atkinson.
Compilado com MS VC++ Toolkit 2003.
Escrito de amostra para Avisynth (usado no clipe do exemplo acima):
AviSource("input.avi") LoadPlugin("descratch.dll") ConvertToYV12() DeScratch(lumadif=2)
mindif - diferença mínima do valor do píxel em arranhão
dos píxeis vizinhos para plano luma
(de 1 a 255, padrão 5):
maxgap - máxima abertura vertical a ser fechada (de 0 a
255, padrão 3):
maxwidth - largura máxima do arranhão (padrão fixo = 3 na
versão atual)
minlen - comprimento mínimo do arranhão (padrão = 100)
maxangle - ângulo máximo para vertical (em graus, padrão
= 5)
blurlen - raio do borrão vertical para análise do quadro
(padrão = 15)
keep - porcentagem de detalhe do arranhão para manter
(padrão = 100)
border - densidade da borda próxima do arranhão para
restauração parcial (padrão = 2)
modeY - modo do processo para plano luma (0 - não, 1 -
baixo(preto), 2 - alto(branco), 3 - ambos, padrão=1)
modeU - modo do processo para plano croma U (0 - não, 1
- baixo(verde), 2 - alto(vermelho), 3 - ambos, padrão=0)
modeV - modo do processo para plano croma V (0 - não, 1
- baixo(amarelo), 2 - alto(azul), 3 - ambos, padrão=0)
mindifUV - diferença mínima do valor do píxel em arranhão
dos píxeis vizinhos para planos croma
(de 0 a 255, padrão 0):
se = 0, então o valor mindifUV interno é o
mesmo do mindif.
mark - marca arranhão em modo depurar (true ou false,
padrão = false)
(fixa os píxeis extremos rejeitados para cinza,
fixa arranhões de píxeis em branco ou preto)
maxgap, maxwidth, minlen, blurlen, border devem ser dados em píxeis.
Você DEVE afinar os parâmetros para seu vídeo.
Tais linhas longas finas e ruidosas às vezes aparecem em material de captura analógica (TV ou VHS). Este problema foi discutido no Doom9, veja o artigo Remoção de cliques e arranhões Removal of clicks and scratches (10-31 de julho de 2004). Mas ele usou meu plugin DeSpot, que não é uma ferramenta muito apropriada para isso, devido ao nível de barulho muito fraco. DeScratch poderia ser mais efetivo, porém não é muito ideal (a versão atual processa só plano luma). Claro que você tem que girar o clipe para processar com Descratch (e não esquecer de girar em direção inversa depois de limpar : -). Veja os resultados para alguma fonte de VHS (de Ivo).
Metade superior do quadro: antes de processar, metade inferior do quadro: depois de processar:
Escrito usado no clipe do exemplo (com ótimos parâmetros Descratch - minlen grande, maxangle nulo):
LoadPlugin("descratch.dll") AviSource("drop-outs_.avi") ConvertToYV12() Crop(0,0,-0,288) # selecione parte superior do quadro para menor espaço em tela input=last AssumeTFF() SeparateFields() # para fonte analógica entrelaçada TurnLeft() DeScratch(mindif=4, maxgap=20, minlen=300, blurlen=50, keep=100, border=0, maxangle=0) TurnRight() Weave() # restaure os campos # Compare quadro fonte e o quadro após a remoção do arranhão StackVertical(input, last)
Para remoção de perda de cor de linha, você pode usar modeU, modeV e parâmetros mindifUV.
Este programa é software LIVRE, mas SEM QUALQUER GARANTIA.
A largura máxima do arranhão é fixada em 3.
O plugin só trabalha em YV12.
$Date: 2006/03/26 18:11:53 $ Portuguese translation by RoLon