Como posso encontrar fotos duplicadas em um pool de dados muito grande (dezenas a centenas de shows)?

16

Alguém pode sugerir um bom utilitário de detecção de duplicação de fotos que funcione bem quando estou lidando com cerca de 100 GB de dados (coletados ao longo dos anos)?

Eu preferiria algo que funcione no Ubuntu.

Desde já, obrigado!

Editar: Existe uma ferramenta que me ajude a reorganizar minha coleção e remover duplicatas, depois que elas forem detectadas?

Edit2: A parte difícil é descobrir o que fazer quando eu tiver a saída composta por milhares de arquivos duplicados (como a saída de fdupes).

Não é óbvio se eu ainda posso excluir com segurança um diretório (ou seja, se um diretório pode conter arquivos exclusivos), quais diretórios são subconjuntos de outros diretórios e assim por diante. Uma ferramenta ideal para esse problema deve ser capaz de determinar a duplicação de arquivos e fornecer um meio poderoso de reestruturar seus arquivos e pastas. Fazer uma fusão por meio de links físicos (como o fslint) realmente libera espaço em disco, mas não resolve o problema subjacente que deu origem à duplicação para começar - ou seja, organização ruim de arquivos / diretórios.

Fasterz
fonte
Veja também estas perguntas relacionadas no AskUbuntu , unix.stackexchange e superusuário .
precisa saber é

Respostas:

7

ImageMagick para o resgate. Acho que o primeiro passo para qualquer solução é reduzir o tamanho da sua coleção. Se você deseja comparar as fotos pelo seu conteúdo , especialmente quando algumas são versões ligeiramente modificadas uma da outra, um bom começo é reduzi-las a miniaturas e depois comparar as miniaturas. Isso é particularmente útil quando você deseja encontrar fotos semelhantes e deseja "ignorar" diferenças sem importância durante a comparação.

Minha sugestão é, em alto nível, que você:
1- Use a ferramenta mogrify do ImageMagick para reduzir as fotos em miniaturas. Isso levará algum tempo, mas tornará as etapas de comparação reais muito mais rápidas e precisas.
2- Use a ferramenta de comparação do ImageMagick, que permite definir um limite para comparação, ou seja, permite encontrar fotos com 85% de diferença. Você deseja fazer um experimento controlado para descobrir o valor limite que mais gosta.

cody
fonte
Eu realmente gosto dessa idéia de fazer miniaturas primeiro. O que faz depois de encontrar as duplicatas? Apenas exibe uma lista? Eu tenho 10s de milhares de duplicatas e uma boa interface gráfica para ajudar a resolvê-las seria muito útil.
Fasterz 10/08/2012
2
Como você usa o Ubuntu, você automaticamente tem acesso a uma série de ferramentas especializadas, cada uma resolvendo uma tarefa muito específica, como as 2 tarefas que eu mencionei. É um jogo de Lego, você pode fazer o que quiser, basta juntar as peças. Tecnicamente, você alimenta 2 fotos para a ferramenta 'comparar' e ela diz o quanto uma se assemelha à outra. Uma maneira de resolver seu problema é agrupar todas as fotos semelhantes em pastas para que você possa examiná-las e filtrar os falsos positivos. Em seguida, execute 'compare' novamente nos falsos positivos e repita o processo até que todos estejam em seus lugares corretos.
Cody
4

O visualizador / organizador de fotos de código aberto Geeqie possui um poderoso recurso Localizar duplicatas . Ele pode usar várias estratégias diferentes para encontrar duplicatas:

  • Nome do arquivo (diferencia maiúsculas de minúsculas ou não faz distinção)
  • Tamanho do arquivo
  • Data do arquivo
  • Dimensões da imagem
  • Soma de verificação MD5.
  • Conteúdo de imagem semelhante (para vários limites)

Isso fornece uma lista de resultados que pode incluir miniaturas para que você possa confirmar manualmente.

Isto irá provavelmente ser lento para milhares de arquivos, mas acho que apenas usá-lo e deixá-lo correr por alguns dias ou o que é provavelmente menos esforço global do que encontrar ou fazer algo sob medida para o caso - a menos que jogo de soma de verificação é tudo que você precisa.

mattdm
fonte
Isso parece legal. O que faz depois de encontrar as duplicatas? Apenas exibe uma lista? Eu tenho 10s de milhares de duplicatas e uma boa interface gráfica para ajudar a resolvê-las seria muito útil.
Fasterz 10/08/2012
Ele os exibe em uma janela da GUI.
mattdm
3

Existe um pequeno utilitário chamado "fdupes" que pode fazer o que você deseja?

Há também outro utilitário chamado "fslint" que você também pode experimentar. (Este aqui tem uma GUI).

Mike
fonte
Eu apenas tentei fslint em um conjunto menor de fotos (alguns shows mais ou menos) e é frustrante que ele simplesmente fique lá e gire. Nenhum indicador de progresso, estimativa de tempo restante, nada.
Fasterz
1
Essas ferramentas parecem procurar arquivos idênticos. Mesmo uma imagem idêntica (pixel por pixel) pode ter conteúdo de arquivo diferente. Suponho que você deseja combinar não apenas a mesma imagem semelhante, mas também o faz em diferentes formatos e tamanhos, incluindo culturas e outros processamentos realizados, como para coletar todas as variações da mesma foto em uma diretório. Essa seria uma comparação suave de imagens que teriam um fator de correspondência de confiança e poderiam corresponder fotos diferentes da mesma cena.
Skaperen
@ Skaperen O que você sugere é ótimo, mas existem essas ferramentas para o Ubuntu? Eu vi mencionado em algum lugar para Windows - mas que parecia ter um horroroso de interface .. etc
Fasterz
O ImageDupeless é um aplicativo do Windows que captura fotos parecidas, mas com algumas diferenças. Ele captura algumas rotações, cortes, redimensionamentos, alterações de tonalidades de cores, marcas d'água, etc ... você precisa escanear sua biblioteca e dizer quanta diferença aceita, e os arquivos serão mostrados alegremente. Mas seria extraordinariamente complicado para centenas de arquivos, e milhares de arquivos seriam terríveis. Eu também estou procurando um linux equivalente ao ImageDupeless. Um aplicativo que faz wavelets ou alguma outra mágica de imagem para saber quando as imagens são semelhantes.
precisa saber é o seguinte
Leia as opções da página de manual para fdupes- há uma opção para excluir os dupes. askubuntu.com/a/476732
rrauenza
1

O dupeGuru Picture Edition é um localizador de imagens duplicadas personalizável para Windows, Mac OS X e Linux.

Existem algumas versões do dupeGuru (edições padrão, de música e de imagem), e a edição de imagens permite encontrar imagens visualmente semelhantes por meio de um algoritmo de comparação de bloqueio de bitmap , entre outros métodos (como o carimbo de data / hora da imagem original EXIF ​​ou os arquivos simplesmente idênticos) .

Possui vários outros recursos úteis, como pastas excluídas, suporte para bibliotecas do iPhoto / Aperture e considerável personalização de como ele detecta duplicatas e o que faz com elas.

drfrogsplat
fonte
0

O que você quer dizer com fotos duplicadas? Você quer dizer arquivos idênticos, digamos, apenas copiei um tempo extra ou dois? ou você quer dizer que as fotos "parecem" iguais?

Se você quer dizer arquivos idênticos, pode usar 'shasum' em todos os arquivos, depois ordene os resultados e encontre as linhas exclusivas com 'uniq' e execute um 'diff' para ver o que foi eliminado. Tudo fácil em um shell do Ubuntu.

Pat Farrell
fonte
Nada disso é fácil ou conveniente. Os fdupes mencionados abaixo já farão um trabalho melhor do que apenas calcular o SHA. Agora existem ferramentas unix que procurarão similaridade de imagens? Se assim for, isso seria incrível.
Fasterz 9/08/12
Fácil e conveniente para alguém acostumado a usar as ferramentas unix, que é o que são uniq, sort, diff, shasum etc. Mas concordo que, se você não usá-los regularmente, eles podem ser difíceis de usar. Eu não sei de nada que possa fazer "parece" Tudo o que eu vi, inclusive no Aperture e Lightroom, fazer arquivo-é-idênticos, o que é realmente apenas uma md5 ou shasum
Pat Farrell
Uso regularmente ferramentas unix e acho essa resposta um tanto tola. Primeiro, fazer o SHA às cegas é lento, quando uma comparação de tamanho de arquivo resolve as coisas. Segundo, o SHA ou o MD5 podem colidir - portanto, as comparações do SHA não são suficientes. Se você levar em consideração esses dois aspectos, poderá entender o que o fdupes faz.
Fasterz 10/08/2012
Além disso, depois de conjurar corretamente o encantamento que faz isso, a saída ainda não é muito útil. Na melhor das hipóteses, você obtém a saída do fdupes, que é apenas um despejo de arquivos semelhantes. No meu caso, tenho 10s de milhares e é muito difícil selecionar esses dados para ver como posso eliminar as duplicatas.
Fasterz
1
Os SHAs colidem na teoria, mas não na prática. Sim, leva uma eternidade. Nada do que vai funcionar será rápido. Mas você deve começar e voltar em um dia ou dois. É apenas uma sugestão, eu não vou entrar em guerra por isso.
Pat Farrell
0

Existe uma aplicação chamada "bleachbit", que encontra arquivos duplicados por tamanho, nome e outros filtros. Você pode instalá-lo a partir do gerenciador de pacotes sinápticos no ubuntu.

chuisco
fonte
O que faz depois de encontrar as duplicatas? Apenas exibe uma lista? Eu tenho 10s de milhares de duplicatas e uma boa interface gráfica para ajudar a resolvê-las seria muito útil.
Fasterz 10/08/2012