Pregunta sobre opencv, matlab, image-processing – Cómo lidiar con los valores de coordenadas de punto flotante en la imagen

4

Estoy trazando algo de geometría en una imagen. El problema es que las coordenadas están saliendo como flotadores, por lo que no puedo trazarlas. Como un trabajo alrededor estoy usando floor (); Truncarlo al entero más cercano. Esto funciona bien en algunos casos, excepto que cambia un poco mi imagen.

  x=9.7 

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

Pero en casos donde mi requerimiento es dibujar múltiples formas endistancia igual Estoy enfrentando un problema ya que el cambio (debido al piso ();) no es uniforme para cada forma.
Es como el ruido de cuantización en la comunicación digital.

¿Hay alguna manera de evitar este problema?

Esto no esAl igual que el ruido de cuantización en la comunicación digital esCuantización del ruido en comunicación digital.. Cualquier enfoque para redondear un número f-p a un número entero planteará este problema, aunque una elección inteligente (?) Del método de redondeo podría minimizar su impacto en su situación. High Performance Mark
usar antialiasing Spektre

Tu respuesta

1   la respuesta
3

Este problema es en realidad bastante común en gráficos de computadora.Rasterización es el dominio del problema con el que estás luchando actualmente. Puedes encontrarAlgoritmo de línea de Bresenham Una buena introducción al tema.aquí Es un buen sitio interactivo con unos pocos algoritmos de rasterización diferentes.

¡Espero que ayude!

+1 me recuerda la discusión:GL_LINEAR vs GL_NEAREST, si estás en OpenGL.Esta página También es genial y menciona que usa GL_NEAREST.Distancia de manhattan. karlphillip

Preguntas relacionadas