2 votos

¿De 3D a 2D a partir de una nube de puntos utilizando una ortofoto georreferenciada?

Tengo una nube de puntos 3D (escaneado láser) y una ortofoto, georreferenciadas mediante un archivo TIFF World File (.tfw). Quiero proyectar cada punto 3D de la nube de puntos en la imagen 2D.

He aquí un ejemplo de archivo .TFW:

2.4384
0.0000
0.0000
-2.4384
441794.4342
5094101.4520

Son los 6 coeficientes de una matriz de transformación de tres por tres. Indican que un píxel tiene 2,4384 metros cuadrados, y que el centro del píxel superior izquierdo tiene una coordenada x de 441794,4342 y 5094101,4520. Véase aquí .

Así puedo obtener la X,Y de la nube de puntos (suponiendo que la Z es 0):

x_cloud = 2.4384 * column + 0.0 * row + 441794.4342
y_cloud = (-2.4384) * row + 0.0 * column + 5094101.4520

¿Cómo puedo encontrar (X_pixel, Y_pixel) de un punto 3D utilizando el archivo TFW?


Solución

He encontrado una solución para mi problema, era simple. vamos a ver nuestro archivo TIFF Mundo

2.4384 -> A
0.0000 -> B
0.0000 -> C
-2.4384 -> D
441794.4342 -> E
5094101.4520 ->F

aquí está mi pseudocódigo:

forEach point cloud  {

    x_cloud = currentX_cloud;
    y_cloud = currentY_cloud;
    z_cloud = currentZ_cloud;

    x_pixel = (x_cloud - E) / A;
    y_pixel = img.rows - (y_cloud - F + A * img.rows) / A;

//accessing to pixel values

    R = img.at<cv::Vec3b>(y_pixel, x_pixel)[0];
    G = img.at<cv::Vec3b>(y_pixel, x_pixel)[1];
    B = img.at<cv::Vec3b>(y_pixel, x_pixel)[2];

}

(Estoy usando OpenCV para manipular la ortofoto y LidarFormat para tratar los datos de la nube de puntos (archivo LAS))

1voto

csmba Puntos 2440

PDAL lo permite utilizando GDAL con el filters.colorization Filtro . GDAL se encarga de todas las transformaciones geográficas, y tanto PDAL como GDAL se ocupan de las tonterías de los formatos. Puedes encontrar un ejemplo Canalización PDAL que aplica la operación en el Ejemplo de taller PDAL .

{
    "pipeline":[
    "uncolored.las",
    {
        "type":"filters.colorization",
        "raster":"aerial.tif"
     },
     "colorized.las"
     ]
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X