C++Guns – RoboBlog

19.03.2012

Image entropy

Filed under: Allgemein — Thomas @ 23:03

Ich habe versuch ein Programm zu schreiben, was anzeigen kann wieviel Zufall in einem Bild steckt. Nur kann man den Zufall
nicht wirklich messen. Ich habe mir darum folgendes ausgedacht:
Das komprimieren von Daten verringert ja ihre Größe. Und je weniger zufällig die Daten sind, desto besser kann man sie komprimieren. Also nehme ich das Verhältnis zwischen der Rohdatengröße und der komprimierten Daten.
Jetzt ist das ganze aber noch abhänig von der Anzahl der Pixel, die zum komprimieren benutzt wurden. Also teilt man
einfach die Datengröße durch die Anzahl der Pixel. Man bekommt also eine Einheit "Byte/Pixel".

Im unkomprimierten Zustand sind das 4 Byte/Pixel entsprechend dem Rot/Grün/Blau/Alpha Wert. Im komprimierten Zustand entsprechend weniger. Nun kann man das wieder ins Verhältnis setzen und man beommt einen Wert zwischen 0 und 1.

Um das zu visualisieren mache ich folgendes. Es werden immer 20x20 Pixel große Bereiche des Bildes untersucht und dann entsprechend dem Ergebnis ihre Transparenz gesetzt. Bereiche mit "wenig Zufall" werden so ausgeblendet und es bleiben nur interessante Bereiche des Bildes sichtbar.

Das ganze ihr aber wohl sehr vom verwendeten Komprimieralgo abhänig. qCompress() von Qt komprimiert wohl dunkle Stellen im Bild besser als helle.
lena
lena_danach

testbild_1297949508
testbild_1297949508_danach

dsc04491a
dsc04491a_danach

dsc04491a_invert
dsc04491a_invert_danach

birds_davor
birds_danach

testimage_davor
testimage_danach

birdcout_davor
birdcout

No Comments »

No comments yet.

RSS feed for comments on this post.

Leave a comment

You must be logged in to post a comment.

Powered by WordPress