Cortar fotos de passaporte automaticamente soa definitivamente factível. Corrigido condições de iluminação, sempre voltado para frente, formato de imagem consistente ... Eu não acho que alguém poderia pedir condições mais favoráveis para a detecção de rosto.
Eu tentei usar facedetect para ver os resultados em sua imagem de amostra:
Ospassaportesvêmemdiferentesformatosetamanhos,entãoelesserãocolocadosnamesadoscannerdeformairregular,maseusuponhoquevocêcolocaráasfotossemprenavertical.facedetect
nosdaráoscentrosetamanhodetodososrostos.Emparticular,podemosusarotamanhodorostoecortaraáreaaoredorproporcionalmente.Comoasfotosdospassaportestendemacobrirumaáreafixadafotografia,pareceserumasuposiçãorelativamentesegura.
Cortarsub-regiõesdeumaimagemérealmentefácilusandoo
#!/bin/sh
pc=60
files="P1Xb8.jpg"
fileno=1
for file in $files; do
n=1
facedetect $file | while read x y w h; do
border=$(($w * $pc / 100))
x=$(($x - $border))
y=$(($y - $border))
w=$(($w + $border * 2))
h=$(($h + $border * 2))
echo $x $y $w $h
convert "$file" -gravity NorthWest -crop "${w}x${h}+$x+$y" "${fileno}_$n.jpg"
n=$(($n + 1))
done
fileno=$(($fileno + 1))
done
Eu defini empiricamente uma área de borda de 60% (na segunda linha do script) da largura da face detectada. Estas são as quatro imagens que recebo:
que já é muito bom. Há sempre algum espaço em branco no topo, que eu consegui remover apenas adicionando "-fuzz 10% -trim" na invocação convert
. Aqui está o resultado da primeira imagem depois disso:
Não é muito ruim para um roteiro rápido, e há muito espaço para melhorias. Por exemplo, a maioria dos passaportes usa uma orientação retrato, portanto, tem um fator vertical / horizontal diferente (geralmente 1,3). Além disso, os rostos tendem a ser ligeiramente movidos para cima (em 1,3 provavelmente). Corrigir isso resultaria em uma colheita melhor, evitando a necessidade de aparar totalmente o espaço em branco no topo.
Seria bom se você pudesse postar (mesmo em particular) uma amostra de digitalização de mesa para testar esse script em relação a alguma saída real.
Claro, essa sugestão requer uma instalação do Linux. Mas se eu entendi corretamente, não é totalmente irracional configurar uma instalação dedicada ou até mesmo uma máquina virtual para automatizar essa tarefa tediosa.
Se a privacidade não é um problema (mas eu duvido), eu estaria realmente interessado em ajudar a escrever uma solução decente em troca das faces cortadas, que eu usaria para melhorar o modelo de detecção de rosto.