[linux-l] picdiff - ein Werkzeug für Bildvergleiche (was: Fonts in C)

Oliver Bandel oliver at first.in-berlin.de
So Dez 16 22:41:08 CET 2007


Zitat von Volker Grabsch <vog at notjusthosting.com>:

> On Thu, Dec 13, 2007 at 11:24:56PM +0100, Oliver Bandel wrote:
> > Hallo, hier also das komplett nutzlose, anwendungsfreie Zeugs.
> > [...]
> > http://www.first.in-berlin.de/res/picdiff/
>
> Wow, das ist ja ziemlich ausdrucksstark.
[...]

Danke für die Blumen.


> Zunächst musste
> ich zwangsläufig an Imagemagick denken:
>
>     http://www.imagemagick.org/script/compare.php
>
> Aber vorallem die letzten Ergebnisse wären mit ImageMagick
> ziemlich umständlich zu erreichen, oder?
[...]

Keine Ahnung.
Ich behalte mir vor, meine Lösungen selbst zu erarbeiten.
Meist fahre ich damit besser, auch wenn nicht immer alle verstehen,
wies ich was mache und was dabei heraus kommt.



>
> BTW, das '-' in deiner Sprache ist keine 'echte' Differenz, oder?
> Sonst müsste beim letzten Kommando ja eigentlich ein komplett
> schwarzes Bild herauskommen, denn
>
>     (avg(x,y)-x) + (avg(x,y)-y) = 0

Stimmt, ich war selber schon etwas verwundert, als ich die Formel
herunter schrieb ;-)

Aber ich hatte keinen Nerv, es genauer auszuformulieren.
Immerhin hatte ja ein gewisser Volker Grabsch immer herum genervt,
mal schnell Lösungen sehen zu wollen ;-)

Deshalb der Schnellschuß mit "Da! Ihr wollt Bilda seeeehn, da hapta
se!".




>
> Was hast du für die Differenz genommen?
> abs(x-y) oder max(x-y,0) oder was?
[...]

Wenn man sich übder die Sachen gedanken macht, die man macht,
dann weiss man, daß die Differeenz sinnvoll ist, aber nicht im
rein arithmetischen Sinne.

So macht es wohl Imagemagick, und es gibt dafür sicherlich auch
Anwendungsfälle. (Man könnte das jetzt auch hinterfragen, und
behaupten, die gäbe es nicht und dann lange Diskussionen hier führen,
aber  ich denke, es ist im Interesse ALLER, daß das unterbleibt ;-))

Wenn man sich da was überlegt, was man denn nehmen soll, um eine
Differenz zu erzeugen, die in diesem Falle auch sinn macht,
dann nimt man folgende:

  diff_pixel x1 x2 := if x2 > x1 then 0 else x1 - x2


Also clipping at lower value-border, denn es macht keinen Sinn,
nicht darstellbare Farbwerte darstellen zu wollen.
Es macht auch keinen Sinn, einen int-overflow in kauf zu nehmen.

Wenn ein Bild  (bzw. Pixel) aufgrund einer Subtraktion abs. dunkel ist,
also RGB-Wert auf 0 ist, dann macht ja wohl ein negativer Wert keinen
Sinn, denn dunkler als garkein Licht geht ja nicht.

Gruß,
   Oliver

P.S.: Danke für den Hinweis. Ich passe das in den nächsten tagen dann
auch im Web an. Hatte erst überlegt, ob ich überhaupt antworten sollte,
da das Gelaber für mich eigentlich abgegessen war. Aber da die Frage
thematisch auf die Sache selbst bezogen war, fand ich es OK. Und
hoffentlich ist der Fall hiermit erledigt.





Mehr Informationen über die Mailingliste linux-l