2017-05-05 7 views
2

Ich zeichne eine vektorielle Geometrie mit einigen Kalibrierungspunkten um sie herum.Geometrie an gedruckten Punkten anpassen

Original draw

I drucken diese Geometrie und dann physikalisch die gedruckten Kalibrierungspunkte I Scan (Ich kann die Geometrie scannen, kann ich nur den Kalibrierungspunkten abtasten). Wenn ich diese Punkte erhalte, sind diese aufgrund eines Druckfehlers oder einer schlechten Druckkalibrierung nicht mehr in ihrer Position.

Scanned image

Die Frage ist: Gibt es einen Algorithmus, der mir die ursprüngliche Geometrie in der Basis der neuen Punkte gescannt anzupassen hilft? In der Praxis muss ich die Geometrie verzerren, um die tatsächliche Geometrie zu erhalten, die auf dem Papier mit dem gleichen Druckfehler gedruckt wird, den ich auf den Kalibrierungspunkten habe.

Die Verzerrung wird durch die physische Verzerrung des Materials (nicht Papier, sondern Stoff) während des Druckvorgangs verursacht. Ich kann nicht wissen, wie stark sich das Material während des Drucks verzieht.

+0

Es gibt unendlich viele * mögliche * Möglichkeiten zu tun, was Sie scheinbar fragen. Wissen Sie mehr über die wahrscheinlichen Verzerrungen, die von den Druck- und Scanprozessen ausgehen? –

+0

Um etwas zu Rorys Kommentar zu kommentieren: Die Verzerrung scheint nicht zu den Standardmodellen zu gehören (z. B. radiale Verzerrung, perspektivische Transformation usw.) Was können Sie über die Unabhängigkeit der Verzerrung jedes Punktes sagen? Es scheint, als ob es ein zugrunde liegendes grobes Verzerrungsmuster gibt (könnte sogar mit einer linearen Transformation darstellbar sein). Gibt es an jedem Punkt zusätzliches (unabhängiges) Rauschen? Ansonsten sieht der mittlere Punkt in der oberen Reihe wirklich fehl am Platz aus. Welche möglichen Verzerrungsquellen gibt es in Ihrem Erfassungssetup? –

+1

Vielen Dank. Die Verzerrung ist durch die physikalische Verzerrung des Materials (nicht Papier, sondern Stoff) während des Druckvorgangs gegeben. Ich kann nicht wissen, wie sehr das Material während des Drucks verfälscht wird. Wenn ich eine originale Matrix von Punkten und eine letzte Matrix von Punkten habe (ich kann mehr als 8 Punkte in die Zeichnung einfügen), kann ich auf keinen Fall die neuen Punkte des Pfades berechnen. – stefano

Antwort

0

Ja, es gibt Algorithmen, die Ihnen dabei helfen. Im Allgemeinen müssen Sie die Transformation zwischen den zwei Bildern, die Sie haben, lernen/finden.

Typische geometrische Transformationen sind affine Transformationen (Verschiebung, Skalierung, Rotation, Scherung, Reflexionen), die mindestens drei Kontrollpunkte oder stückweise lokal linear/lokal gewichtetes Mittel benötigen und mindestens 4-6 Kontrollpunkte benötigen. Je mehr Kontrollpunkte Sie haben, desto besser im Allgemeinen.

Bei gegebenen Kontrollpunkten in einem Bild und den entsprechenden Kontrollpunkten im anderen Bild gibt es Algorithmen zum Finden der optimalen Transformation zwischen, wenn Sie eine Klasse angeben (affine oder stückweise lokal linear). Siehe zum Beispiel fitgeotrans in Matlab. Ich weiß nicht, wie genau es das Problem löst, denke ich durch eine Art Optimierung. Es sollte leicht sein, verfügbare Implementierungen für andere Programmiersprachen (Python, C, Java) zu finden.

Was bleibt, ist die Entsprechung zwischen den Kontrollpunkten in den beiden Bildern zu finden. Für einige Bilder können Sie das vielleicht von Hand machen, aber im allgemeinen Fall möchten Sie vielleicht auch das automatisieren. Allgemeine Bildregistrierungsalgorithmen wie imregister sollten sich gut für Ihre Bilder eignen. Sie geben Ihnen eine gute erste Schätzung für die Transformation (möglicherweise bereits ausreichend), so dass dann die Identifizierung der entsprechenden Punktpaare trivial ist (immer den nächsten zu nehmen) und die Feinabstimmung erlauben.

So rate ich Ihnen zuerst zu versuchen, die Bilder (Graustufendaten) mit einer Identitätstransformation als Startwert zu registrieren. Identifizieren Sie dann die entsprechenden Punktpaare und verfeinern Sie die Transformation entweder mit einer affinen oder einer stückweisen/lokalen Transformation. Wenden Sie dann die Transformation auf die Geometrie an, um die gedruckte Geometrie zu erhalten. Abhängig von Ihrer Wahl der Programmiersprachen finden Sie viele Implementierungen, die diese Aufgabe erfüllen.

Verwandte Themen