Unterschied zweier Bilder (Schaltpläne)

Hallo Leute,

ich habe zwei Strichzeichnungen (original: Schaltpl=E4ne als pdf- Dateien) und m=F6chte daraus 3 Zeichnungen erzeugen:

- eine schwarze zeigt nur das, was bei beiden Zeichnungen gleich ist

- eine rote zeigt nur das, was bei Zeichnung 1 fehlt (in Zeichnung 2 gel=F6scht wurde)

- eine gr=FCne zeigt nur das, was in Zeichnung 2 gegen=FCber Zeichnung 1 erg=E4nzt wurde)

Wie k=F6nnte man sowas realisieren? Ich hatte bisher an gimp gedacht und wollte die beiden Bilder als unterschiedliche Ebenen laden. Allerdings habe ich nichts gefunden, was den Unterschied der beiden Ebenen wie gefordert darstellen kann.

Gruss, Jan

Reply to
Jan Schmidt
Loading thread data ...

Am 18.11.2010 11:27, schrieb Jan Schmidt:

Zuerst bei beiden Zeichnungen die Farben ändern, und zwar in jeder Zeichnung unterschiedlich. Dann legst Du die beiden Bilder übereinander. Du mußt allerdings bei mindestens einem Bild die Transparenz einstellen, damit es das andere nicht verdeckt. Es ergibt sich zwar nicht direkt Deine gewünschte Darstellung, aber man findet Unterschiede so ganz gut. Ich hab das ein paarmal mit Layouts gemacht.

MfG

Reply to
Thorsten Böttcher

Am 18.11.2010 11:27, schrieb Jan Schmidt:

Hallo,

im ersten Schritt würde ich mit pdfimages unter Linux die Bilder aus den PDFs extrahieren.

formatting link

Für den Test der weiteren Schritte habe ich keine passenden Dateien da.

Bernd Mayer

Reply to
Bernd Mayer

Jan Schmidt schrieb:

formatting link

Mit freundlichem Gruß

Jan

Reply to
Jan Kandziora

Im Ebenen fenster auf differenz stellen. Matthias

Reply to
Matthias Weingart

Zeichnung 1: aus schwarz mach' grün, aus weiß mach' transparent. Zeichnung 2: aus schwarz mach' rot, aus weiß mach' transparent.

Neue Zeichnung mit weißem Hintergrund, darüber Zeichnung 1 und Zeichnung

2 mit je 50% Transparenz. Und letztlich: Aus hellkackbraun oder so mach' schwarz.
Reply to
Heiko Nocon

Mit Gimp geht es. Beide Bilder werden übereinander gelegt, Layer 1 wählen Markieren alles schwarzen, select merged anhaken, Layer 2 wählen Markiermethode auf "subtrahieren" einstellen und schwarz markieren Ziellayer wählen, Markierung farbig füllen...

--
MFG Gernot
Reply to
Gernot Fink

- Jan Schmidt / 18.11.2010:

die Lösung dürfte bei der Kombination 'layer modes' und 'opacity' zu finden sein.

Probiers mal aus - dazu die Strichzeichnungen der einzelnen Layer unterschiedlich einfärben.

wäre jedenfalls mein Ansatz.

jk

--
no sig
Reply to
Jakob Krieger

Jan Schmidt schrieb:

Schau mal nach PDF- und CAD/CNC-Tools unter Software-Kategorien auf

formatting link
Kleine aber feine Softwareschmiede. Evt. haben die was Du suchst.

Matthias

Reply to
Matthias Berke

Jan Schmidt schrieb:

Eine detaillierte Gimp-Anleitung kann ich nicht liefern, aber einen allgemeinen Ansatz: =46=E4rbe die Ausgangsgrafiken passend um (schwarz nach rot bzw. gr=FCn = und wei=DF nach transparent) und bilde eine Differenz als dritten Layer.=20

Voraussetzung w=E4re, da=DF die Zeichnungen rein schwarz/wei=DF ohne Kompressionsartefakte vorliegen. Bei JPG-Kompression (PDF hat hier viele Optionen) hast Du maschinell wenig Chancen.

Reply to
Wolfgang Hauser

Doch, natürlich. Irgendein Mittelwertfilter und danach "binarisieren", also entweder Kanalzahl auf zwei reduzieren oder einfach Kontrast maximieren. Über den Schwellwert bei der Kanalreduktion oder den Helligkeitsregler bei der Variante über den Kontrast kannst du die durch den Mittelwertfilter breiter gewordenen Striche wieder in etwa auf die ursprüngliche Stärke bekommen.

Die Operationen kann man sinngemäß (ggf. auch erneut) auch auf das fertige Bild anwenden, (Kanalzahl=4 statt 2, bzw. Farbkontrast statt Kontrast) dabei entfällt allerdings die Möglichkeit der Einflußnahme per einfachem Schwellwert.

Reply to
Heiko Nocon

Fehlt nur die Idee?

Die Differenz beider Ebenen sollte eine Maske ergeben, die man dann vielfältig verwenden kann - direkt als Ebenenmaske zur Ainzeige der grün bzw. rot eingefärbten Kopie der beiden Zeichnungen, invertiert zum Ausblenden der unterschiedlicher Teile, oder als Kanal die Grundlage einer Auswahl, ...

HTH, Michael

--
    GIMP > http://www.gimp.org      | IRC: irc://irc.gimp.org/gimp
Plug-ins > http://registry.gimp.org | .de: http://gimpforum.de
Reply to
Michael Schumacher
*Wolfgang Hauser* wrote on Fri, 10-11-19 09:50:

Das hängt davon ab, wie schlecht das Jpeg ist (oft leider sehr schlecht). Reduktion auf zwei Farben (schwarz und weiß) und Speichern als z.B. PNG könnte die Sache, bis auf viele versteute Farbblitzer viellicht noch retten.

Reply to
Axel Berger

Vielen Dank f=FCr die Hinweise. Ich habe es letztendlich mit einer Kombination aus ghostscript, pdftk und ImageMagick umgesetzt (sollte f=FCr eine gro=DFe Anzahl Seiten automatisch gehen). Falls es noch jemanden interessiert hier das script:

Gruss, Jan

#/bin/bash

#Dateinamen ohne Endung '.pdf' neu=3Dschaltung_neu alt=3Dschaltung_alt

dopdf2png() { datei=3D"$1" name=3D$(basename "$datei"|sed -e 's,\.[Pp][Dd][Ff]$,,')

gs -r150 -dNOPAUSE -sDEVICE=3Dpngmono -sOutputFile=3D"$name"-s%d.png $datei -q -dBATCH anz=3D$(ls ${name}* |awk '/.*-s.[0-9]*\.png$/{sum++}{}END{print sum}')

return $anz }

pdftk $neu.pdf burst output $neu-s%d.pdf dopdf2png $neu.pdf #neu neu_seiten=3D$? pdftk $alt.pdf burst output $alt-s%d.pdf dopdf2png $alt.pdf #alt alt_seiten=3D$?

if [ $neu_seiten !=3D $alt_seiten ] ; then echo "page count different - exiting..." exit 1 fi

echo "computing differnce of "$neu_seiten" pages."

create_diffpage() { neu=3D$1 alt=3D$2 i=3D$3

#Farbe =E4ndern in gr=FCn convert $neu-s$i.png -fill green -opaque black $neu-s$i-green.png echo -n "." #Hintergrund entfernen (transparent machen) convert $neu-s$i.png -transparent white $neu-s$i-t.png

#Farbe =E4ndern in rot convert $alt-s$i.png -fill red -opaque black $alt-s$i-red.png #Hintergrund entfernen (transparent machen) convert $alt-s$i.png -transparent white $alt-s$i-t.png

#Gemeinsamkeiten beider Bilder - in schwarz composite -compose Screen $alt-s$i.png $neu-s$i.png screen-s$i.png convert screen-s$i.png -transparent white screen-s$i-t.png

#Bilder aufeinander legen (neu =FCber alt) composite -compose Dst_Over $alt-s$i-red.png $neu-s$i-t.png page_r- s$i.png composite -compose Dst_Over $neu-s$i-green.png $alt-s$i-t.png page_g-s$i.png

#leicht =FCberblenden (gr=FCn ist st=E4rker als rot) composite -dissolve 20 $alt-s$i-red.png $neu-s$i-green.png tmp1-s $i.png composite -compose Dst_Over tmp1-s$i.png screen-s$i-t.png page_b-s $i.png

#Beschriftung erg=E4nzen convert page_b-s$i.png -gravity NorthWest -font Times-Roman -fill red -pointsize 22 -annotate +10+6 "Seite $i: rotes enternt, gr=FCnes erg=E4nzt" page_b1-s$i.png convert page_r-s$i.png -gravity NorthWest -font Times-Roman -fill red -pointsize 22 -annotate +10+6 "Seite $i: rotes entfernt" page_r1-s $i.png convert page_g-s$i.png -gravity NorthWest -font Times-Roman -fill green -pointsize 22 -annotate +10+6 "Seite $i: gr=FCnes erg=E4nzt" page_g1- s$i.png #jetzt eine pdf-Datei erzeugen convert page_r1-s$i.png page_b1-s$i.png page_g1-s$i.png -compress zip page-s$i.pdf }

seq 1 $neu_seiten |while read i; do echo $neu-s$i.png sneu=3D$(md5sum $neu-s$i.png |awk '{print $1}') salt=3D$(md5sum $alt-s$i.png |awk '{print $1}') if [ $sneu =3D=3D $salt ]; then echo "no difference on page $i - skipping" pdftk A=3D$neu-s$i.pdf output seite-s$i.pdf else create_diffpage $neu $alt $i pdftk A=3D$alt-s$i.pdf B=3Dpage-s$i.pdf C=3D$neu-s$i.pdf output seite-s $i.pdf fi done

echo "creating 'modifikation.pdf'..." seiten=3D$(seq -f "seite-s%.0f.pdf" 1 $neu_seiten) pdftk $seiten output modifikation.pdf

echo "done." rm $neu-s* $alt-s* seite* page* tmp* screen*

Reply to
Jan Schmidt

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.