Benzersiz bir içerik olarak görüntü dosyası cheksum iyileştirmesi karşılaştırmak

3 Cevap php

Kullanıcılar bizim php yapı sistemine fotos karşıya. Çünkü ilgili olmayan içerik yasak olarak biz işaretleme bunlardan bazıları. Ben bu yasak fotoğraflarının olarak işaretlenmiş atlama bir 'OTO-Karşılaştırılması' algoritması iyileştirmesi için arıyorum. Her yükleme birçok vorbinden karşılaştırıldığında gerekir.

Olası çözümler:

1 / Mağaza yasak dosyaları ve tüm içeriği karşılaştırmak - iyi çalışıyor ama yavaş.

2 / Mağaza görüntü dosyası sağlama ve toplamlarını karşılaştırın - bu hızını artırmak için fikirdir.

3 / yeterince hızlı ve fotoğraflar arasındaki benzerliği karşılaştırabilirsiniz herhangi inteligent algoritma. Ama PHP bu Abut herhangi bir fikirleri yok.

En iyi çözüm nedir?

3 Cevap

Toplamlarını hesaplamak etmeyin, sağlamalarının hesaplamak!

I've once created a simple application that had to look for duplicate images on my harddisk. It would only search for .JPG files but for every file I would calculate a hash value over the first 1024 bytes, then append the width, height and size of the image to it to get a string like: "875234:640:480:13286", which I would use as key for the image. As it turns out, I haven't seen any false duplicates with this algorithm, although there still is a chance of false duplicates. However, this scheme will allow duplicates when someone just adds one byte to it, or makes very small adjustments to the image.

Another trick could be by reducing the size and number of colors of every image. If resize every image to 128x128 pixels and reduce the number of colors to 16 (4 bits) then you end up with reasonable unique patterns of 8192 bytes each. Calculate a hash value over this pattern ans use the hash as primary key. Once you get a hit, you might still have a false positive thus you would need to compare the pattern of the new image with the pattern stored in your system. This pattern compare could be used if the first hash solution indicates that the new image is unique. It's something that I still need to work out for my own tool, though. But it's basically a kind of taking fingerprints of images and then comparing them.

Benim ilk çözüm kesin sonuç bulacaksınız. Benim ikinci çözüm benzer görüntüleri bulur. (Btw, Delphi benim karma yöntemi yazdım ama teknik, herhangi bir karma yöntem yeterli iyi olurdu.)

Görüntü verilerinin karma çeşit oluşturma ve bu karşılaştıran senin fikrin en azından hızlı bir şekilde algılamak için izin verecek, gerçekten görüntü karşılaştırma algoritmaları çaba adamak istiyorum sürece, bu yüzden görüntü benzerliği karşılaştırma, tam olarak önemsiz bir sorun değildir bire bir aynısı. Ben şu anki planı ile gitmek, ama çarpışma olasılığı düşüktür böylece iyi (ama hızlı) hash emin olur.

Karmaları ile sorun, önerilen gibi, birisi 1 piksel değiştirirse karma tamamen farklı çıkıyor olmasıdır.

Bir dosyanın içeriğini karşılaştırmak ve onlar benzemek ne kadar (yüzde olarak) iade edebiliyoruz orada mükemmel çerçeveler vardır. Belirli bir, bir komut satırı uygulaması var, ben bir kez hangi karşısında bilimsel bir ortamda içinde inşa edilmiş ve açık kaynak oldu ama ben onun adını hatırlayamıyorum geldi.

Onlar son derece hızlı olabilir çünkü çerçeve bu tür kesinlikle bile dosyaların çok sayıda, size yardımcı olabilir.