?in C zwei Bilder voneinander subtrahieren?

TShanik

Grünschnabel
hallo,

habe da ein kleines Problem.
habe zwei bilder (*.tif) von unterschiedlichen helligkeiten und um da etwas herauszulesen bräuchte ich ein programm, das die bilder einliest die differenz bildet das so entstandenen bild in ein neues file schreibt.
die ein- und ausgabe ist kein problem, aber bei dem differenz bilden klappt das nicht.
wäre schön, wenn mir da einer helfen könnte

danke schon mal

gruß tshanik
 
Hallo,

ich kann dir leider selber dazu nichts sagen, aber eins weiss ich doch!
Du musst in deinen Beiträgen die Groß- und Kleinschreibung (und Rechtschreibung) beachten! Nicht unbedingt in der "Härte" so wie ich das hier mache. (Mann will ja auch außerhalb der Schule trainieren ;))

so ein satz wird rausgeschmissen

So einer bleibt im Forum. ;)
 
Danke werde ich beim nächsten Beitrag beachten.
Es ist eben das Zeitalter der Mail, da wird alles klein geschrieben. :-)
 
du musst irgendwie an die decodierten Bilddaten. Das erledigst du am besten mit einer lib für dein OS/Compiler. Diese Bilddaten liegen dann im RGB Format vor, normalerweise - siehe auch Dokumentation der lib.
Das subtrahieren würde dann Pixelweise funktionieren. Wie du auf einzelne Pixel zugreifst -> siehe Dokumentation deiner Lib.

usw.
 
Danke dir für den Tip, hat mir weiter geholfen. :)

Ich habe die Bildinfo mittlerweile mit dem TotalCommander mir in Hexadezimal anzeigen lassen.
Und festegestellt, dass ich die ersten "0x20" weglassen kann und erste die nächsten "0x280000" verwenden darf, da da die eigentliche Bildinfo drin zu sein scheint, der Rest wäre dann auch wieder nur Datenmüll in dem Format.
Damit dürfte das dann vielleicht so klappen. Jetzt muss nur noch die richtige for-Schleife erzeugt werden. :rolleyes:
 
Ich habe zwar keine Ahnung von C/C++, aber ich habe in Visual Basic einmal ein Bild Pixel für Pixel bearbeiten müssen. Ich habe einfach die Größe des Bildes ausgelesen. Dann hatte ich eine Schleife, die genau so oft ausgeführt wurde, wie das Bild "Zeilen" hatte (also die Höhe in Pixel). In dieser Schleife eingebaut war eine weitere Schleife, die alle Pixel von links nach rechts bearbeitet hat. So habe ich alle Pixel erwischt. Schnell wars zwar nicht, aber funktioniert hats.
 
Original geschrieben von BoT
(Mann will ja auch außerhalb der Schule trainieren ;))
"Mann" könnte jetzt anmerken, dass auch du noch ein bischen üben musst. *grins* Aber das tust du ja ohnehin gerne. ;)

@ TShanik: Informationen zu allen möglichen Dateiformaten findest du bei http://www.wotsit.org. Da solltest du mal reinschauen.

Nebenbei: Hast du dir überlegt, ebentuell das Differenzbild mit Photoshop zu erzeugen? Fiel mir nur gerade so ein, weil ich das (völlig ohne Programmierung) schon häufig mit Photoshop gemacht habe, um Unterschiede zu finden.
 
An Photoshop habe ich ehrlich gesagt gar nicht gedacht, habe das Programm zwar auch daheim rumliegen, aber normal verwende ich mehr CorelDraw oder PovRay, bloss bis man da immer das Richtige findet. Wäre noch eine Option, falls ich es gar nicht mehr hinbekomme.
Mittlerweile läuft das C-Programm (auch recht schnell *g*) , bloss das Ergebnis ist nicht ganz zufriedenstellend.
Wo müsste ich denn unter Photoshop schauen um das hinzubekommen? Wenn du mir da noch einmal einen kleinen Tipp geben könntest.

Danke für die Tipps, haben stellenweise wirklich sehr weiter geholfen. :)
 
Ist zwar off topic und auch falsch im Forum, aber ich mache das so: Lege das zweite Bild in eine Ebene über das erste, so dass sie sich genau überdecken. Dabei hilft es, wenn man die Transparenz der oberen Ebene erhöht. Um das Differenzbild zu erhalten, musst du nur die obere Ebene in den Differenzmodus schalten (es gibt da so eine Combo in der Ebenenpalette).
Presto! :)
 
Zurück