vistas tecnico solido sacar planos pasar objeto lineas las dibujo crear convertir como 3d geometry matrix 2d projection

tecnico - 3d a 2d Matriz de proyección



sacar vistas en autocad 2017 (4)

Tengo 3 puntos en un espacio 3D del cual sé las ubicaciones exactas. Supongamos que son: (x0,y0,z0) , (x1,y1,z1) y (x2,y2,z2) .

También tengo una cámara que está mirando estos 3 puntos y conozco las ubicaciones 2D de esos tres puntos en el plano de vista de cámara. Entonces, por ejemplo (x0,y0,z0) será (x0'',y0'') , y (x1,y1,z1) será (x1'',y1'') y (x2,y2,z2) será (x2'',y2'') desde el punto de vista de la cámara.

¿Cuál es la forma más fácil de encontrar la matriz de proyección que proyectará esos puntos 3D en puntos 2D en el plano de visualización de la cámara? No sabemos nada sobre la ubicación de la cámara.


Lo que estás buscando se llama algoritmo de Estimación de Pose. Eche un vistazo a la implementación de POSIT en OpenCV: http://opencv.willowgarage.com/documentation/c/calib3d_camera_calibration_and_3d_reconstruction.html#posit

Necesitará cuatro o más puntos, y es posible que no se encuentren en el mismo plano.

Un tutorial para esta implementación está aquí: http://opencv.willowgarage.com/wiki/Posit

Sin embargo, ten cuidado: en el tutorial se usa una ventana gráfica cuadrada, por lo que todas las coordenadas de vista están en el rango -1, -1 a 1,1. Esto lleva a suponer que estos deben estar en el sistema de coordenadas de la cámara (antes de la corrección de la relación de aspecto). Este no es el caso, por lo que si usa una ventana gráfica con una relación de aspecto de 4: 3, entonces sus coordenadas de entrada deberían estar en el rango -1.3333, -1 a 1.3333,1.

Por cierto, si tus puntos deben estar en el mismo plano, entonces también puedes mirar el algoritmo CameraCalibration desde OpenCV, pero esto es más complicado de configurar y requiere más puntos como entrada. Sin embargo, también le proporcionará la información de distorsión y los parámetros intrínsecos de su cámara.


Esto le da dos juegos, cada uno de tres ecuaciones en 3 variables:

a*x0+b*y0+c*z0 = x0'' a*x1+b*y1+c*z1 = x1'' a*x2+b*y2+c*z2 = x2'' d*x0+e*y0+f*z0 = y0'' d*x1+e*y1+f*z1 = y1'' d*x2+e*y2+f*z2 = y2''

Simplemente use cualquier método de resolución de ecuaciones simultáneas más fácil en su situación (ni siquiera es difícil resolverlos "a mano"). Entonces su matriz de transformación es justa ((a, b, c) (d, e, f)).

...

En realidad, eso es demasiado simplificado y supone una cámara apuntando al origen de su sistema de coordenadas 3D y sin perspectiva.

Para la perspectiva, la matriz de transformación funciona más como:

( a, b, c, d ) ( xt ) ( x, y, z, 1 ) ( e, f, g, h ) = ( yt ) ( i, j, k, l ) ( zt ) ( xv, yv ) = ( xc+s*xt/zt, yc+s*yt/zt ) if md < zt;

pero la matriz de 4x3 es más restringida que 12 grados de libertad ya que deberíamos tener

a*a+b*b+c*c = e*e+f*f+g*g = i*i+j*j+k*k = 1 a*a+e*e+i*i = b*b+f*f+j*j = c*c+g*g+k*k = 1

Así que probablemente deberías tener 4 puntos para obtener 8 ecuaciones para cubrir las 6 variables para la posición y el ángulo de la cámara y 1 más para escalar los puntos de vista bidimensionales, ya que podremos eliminar las coordenadas "centrales" (xc, yc )

Entonces, si tienes 4 puntos y transformas tus puntos de vista 2-D para que sean relativos al centro de tu pantalla, entonces puedes obtener 14 ecuaciones simultáneas en 13 variables y resolverlas.

Desafortunadamente, seis de las ecuaciones no son ecuaciones lineales. Afortunadamente, todas las variables en esas ecuaciones están restringidas a los valores entre -1 y 1 por lo que aún es posible resolver las ecuaciones.


No creo que haya suficiente información para encontrar una solución definitiva. Sin conocer la ubicación de su cámara y sin conocer su plano de visión, hay un número infinito de matrices que pueden resolver este problema.


Su cámara tiene (al menos) 7 grados de libertad, 3 para posición, 3 para orientación y 1 para FOV. Estoy seguro de que alguien me va a corregir si me equivoco, pero no parece que 3 puntos sean suficientes para una solución completa.

Para una solución generalizada a este problema, busque ''Ver correlación'' en Graphics Gems II.