2009-02-27 4 views
3

Ich habe viele Bilder in einem Ordner, und ich würde gerne Bilder mit einer ähnlichen Farbe wie ein vorher ausgewähltes Bild finden.Wie finde ich Bilder mit einer ähnlichen Farbe mit Python und PIL?

Ich möchte in der Lage sein, etwas zu tun wie:

python find_similar.py sample.jpg 

und haben, dass die Rückkehr so ​​etwas wie:

234324.jpg 
55.jpg 
9945.jpg 
345434.jpg 
104.jpg 

Ist dies machbar?

Antwort

1

Der Algorithmus zum Finden ähnlicher Bilder wird in einer Question on Stackoverflow diskutiert, Sie könnten eine davon in Python & PIL implementieren.

Sie können aber auch direkt verwenden, um die ImageChops Modul von PIL und verwenden Sie die difference Methode zwei Bilder wie diese vergleichen:

import Image 
import ImageChops 

im1 = Image.open("original.jpg") 
im2 = Image.open("sample.jpg") 

diff = ImageChops.difference(im2, im1) 

die dir helfen könnten einige Gedanken über den Unterschied in Ihrer Originalbild in immer und die Anderen.

Es gibt eine andere similar question on Stackoverflow, die dies diskutiert.

+0

Das Beispielbild ist, sagen wir, ein Quadrat, linke Hälfte rosa, rechte Hälfte schwarz. Wird dies ein quadratisches Bild mit der linken Hälfte schwarz und der rechten Hälfte rosa finden? – tzot

4

Ich kann Ihnen keine Lösung in Dosen geben, aber hier ist ein Winkel, um das Problem anzugehen. Es ist nicht PIL-spezifisch, und es könnte völlig falsch sein, da ich keine Erfahrung in der Bildverarbeitung habe.

  1. Führen Sie color quantization auf dem Bild. Dadurch erhalten Sie eine Palette, die die Farbinformationen im Bild ohne jegliche Forminformationen codiert.

  2. Führen Sie eine principal components analysis aus, um die dominierenden Komponenten im Farbwürfel zu erhalten. Streng genommen könnte man das ohne Quantisierung machen, aber es könnte zu teuer sein.

  3. Nehmen Sie eine Anpassung der kleinsten Quadrate an die Hauptkomponenten verschiedener Bilder vor.

Hoffe, das hilft.

Verwandte Themen