Frage an matlab, image-processing, opencv – Umgang mit Gleitkomma-Koordinatenwerten im Bild

4

Ich zeichne eine Geometrie auf ein Bild. Das Problem ist, dass die Koordinaten als Floats ausgegeben werden, sodass ich sie nicht zeichnen kann. Als Workaround benutze ich floor (); um es auf die nächste Ganzzahl zu kürzen. Dies funktioniert in einigen Fällen einwandfrei, mit der Ausnahme, dass dadurch mein Bild ein wenig verschoben wird.

  x=9.7 

  x'=floor(x)= 9  //the plot is now at 9 and not at 9.7 as desired, (this is 'shift')   

Aber in Fällen, in denen ich mehrere Formen zeichnen möchtegleicher Abstand Ich stehe vor einem Problem, da die Verschiebung (wegen des Bodens ();) nicht für jede Form gleich ist.
Es ist wie Quantisierungsrauschen in der digitalen Kommunikation.

Kann ich dieses Problem irgendwie umgehen?

Das ist nichtGenau wie Quantisierungsrauschen in der digitalen Kommunikation es istQuantisierungsrauschen in der digitalen Kommunikation. Jeder Ansatz zum Runden einer f-p-Zahl auf eine Ganzzahl stellt dieses Problem dar, obwohl eine geschickte (?) Wahl der Rundungsmethode die Auswirkung auf Ihre Situation minimieren kann. High Performance Mark
Verwenden Sie Antialiasing Spektre

Deine Antwort

1   die antwort
3

Rasterisierung ist die Problemdomäne, mit der Sie derzeit zu kämpfen haben. Du wirst vielleicht findenBresenhams Linienalgorithmus eine gute Einführung in das Thema.Hier ist eine nette interaktive Seite mit ein paar verschiedenen Rasterisierungsalgorithmen.

Hoffentlich hilft das!

+1 Erinnert mich an die Diskussion:GL_LINEAR vs GL_NEAREST, wenn Sie in OpenGL sind.Diese Seite ist auch toll und erwähnt, dass GL_NEAREST verwendetManhattan Entfernung. karlphillip

Verwandte Fragen