Estou tentando usar o ImageMagick(7.1.1-43) para cortar automaticamente uma fotografia de uma moeda, removendo o fundo ao redor. Quero cortar a imagem com base em um fator de "fuzz", removendo efetivamente a cor quase uniforme. No entanto, meu comando atual corta apenas o lado esquerdo da imagem, deixando o lado direito intocado.
Meu objetivo:
Quero cortar os lados esquerdo e direito da imagem igualmente, removendo o máximo possível da parede e preservando a moeda.
Comando usado:
./magick 20240614_093525.JPG -fuzz 51% -trim +repage img1.jpg
Imagem original:
Imagem retornada:
O que eu tentei:
Tentei ajustar a -fuzz
porcentagem, mas não parece afetar o corte do lado esquerdo. Abaixá-la demais impede qualquer corte, e aumentá-la produz este erro:
magick: a geometria não contém a imagem `20240614_093525.JPG' @ warning/attribute.c/GetImageBoundingBox/554.
Que comando posso usar para garantir que ambos os lados sejam aparados?
A imagem não é ótima para correspondência difusa por causa da vinheta que é muito mais escura no canto superior direito. O desequilíbrio da intensidade da sombra da moeda também não ajuda. Definir a difusividade muito alta resulta em nada porque a moeda não está muito longe coloristicamente do fundo.
Você também pode brincar com
-define trim:percent-background
o parâmetro que afetatrim
a porcentagem de similaridade de fundo interna do em vez da similaridade geral de cores. Por exemplo, isto:resultou na melhor precisão dos meus testes rápidos, diminuindo de
50%
imprecisão e padrão100%
:Mas resultados ainda melhores acontecem se você processar a vinheta primeiro. Por exemplo, apenas usar
-shave 50x50
para cortar cantos e então processar a imagem resultante produz resultados muito melhores com menor fuzziness global, como:Para que seja mais automatizado, com vinhetas, digamos, muito mais intensivas ou objetos variados que estão em primeiro plano, em, digamos, processamento em lote, algoritmos muito mais avançados ou até mesmo IA precisariam ser usados.
O problema que você tem é que você tem um fundo degradê (sombras?). Então o fuzz sozinho precisaria de um valor alto. Ajudaria se você cortasse a imagem primeiro com -shave. Então o fuzz pode não precisar de um valor tão alto.
Por outro lado, você pode ajudar -trim no Imagemagick 7 com uma das definições -trim que força o trim a aparar até atingir alguma cor (-background). Veja https://imagemagick.org/script/command-line-options.php#trim ou https://imagemagick.org/script/defines.php