Está en la página 1de 6

Maestría en ciencia de la ingeniería en

mecatrónica.

Ovalle Ozuna Edgar Omar

Reconstrucción 3D

15 de Octubre del 2021


RESUMEN

En el siguiente trabajo se implementó un código para la reconstrucción 3D a


partir de imágenes 2D para obtener una nube de puntos como representación
tridimensional de la imagen.

INTRODUCCION

Las técnicas de reconstrucción 3D son un conjunto de procedimientos sistemáticos cuyo


objetivo es obtener una representación tridimensional de objetos físicos. Hoy en día existen
sistemas y/o instrumentos que aplican estas técnicas y que permiten obtener diversa información y
modelos 3D de objetos, algunos de estos son: los escáneres digitales, que Reconstrucción 3D de
objetos sumergidos en aguas limpias pueden representar modelos CAD (Diseño Asistido por
Computador), los sonares y ecosondas, que obtienen información completa del océano (forma,
textura, tamaño, color, etc.) y la Kinect de Microsoft.

Una nube de puntos es una estructura de datos utilizada para representar una colección de
puntos multidimensionales y se usa comúnmente para representar datos tridimensionales. En una
nube de puntos 3D, los puntos generalmente representan las coordenadas geométricas X, Y y Z de
una superficie muestreada subyacente. Cuando la información de color está presente.

Existe la librería Point Cloud Library que es un proyecto abierto a gran escala para
procesamiento de imágenes 2D y 3D y de nubes de puntos. El framewrok de esta librería contiene
numerosos algoritmos del estado del arte incluyendo filtros, reconstrucción de superficies,
alineamientos y segmentación. Estos algoritmos se usan en un conjunto de datos conruido,
uniendo nubes de puntos 3D, segmentar partes relevantes de una escena y crear superficies a partir
de nubes de puntos y visualizarlas.
DESARROLLO
Comenzamos importando las librerías y creando la clase donde Reconstrucción, en ella
abrimos la imagen a color y la imagen de profundidad convertida a escala de grises.

Figura 1

Continuamos creando una función para obtener los datos de las imágenes en array e
insertar los datos en un DataFrame con la ayuda de pandas. Retornamos el DataFrame

Figura 2
Creamos otra función, donde abrimos la imagen de profundidad convertida en
array y recibimos el DataFrame de la función anterior. Estos datos se combinan en el
DataFrame para que la librería PyntCloud cree la nube de puntos y la muestre en las
gráficas.

Figura 3

RESULTADOS.

a) Imagen a color b) imagen de profundidad


Figura 4. Imágenes de entrada
Figura 5. Representación 3D

Figura 6. Representación3D
CONCLUSION
En el siguiente trabajo se implementó un código para la reconstrucción 3D capaz de extraer
los objetos de una escena de una imagen en 2D. Este trabajo nos servirá para implementar el código
a una secuencia de imágenes para la navegación autónoma de nuestro robot.

ANEXO A
import pandas as pd
import numpy as np
from pyntcloud import PyntCloud
from PIL import Image

class Reconstruccion:
def __init__(self):
self.colourImg = Image.open("img_color.jpg")
self.colourPixels = self.colourImg.convert("RGB")
self.depthImg = Image.open('img_depth.jpg').convert('L')
print(self.colourImg, self.depthImg)

def data(self):
colourArray = np.array(self.colourPixels.getdata()).reshape((self.colourImg.height,
self.colourImg.width) + (3,))
indicesArray = np.moveaxis(np.indices((self.colourImg.height, self.colourImg.width)), 0, 2)

imageArray = np.dstack((indicesArray, colourArray)).reshape((-1,5))


df = pd.DataFrame(imageArray, columns=["x", "y", "red","green","blue"])
print(df)
return df

def building(self):
dataframe = self.data()
depthArray = np.array(self.depthImg.getdata())
dataframe.insert(loc=2, column='z', value=depthArray)
dataframe[['x','y','z']] = dataframe[['x','y','z']].astype(float)
dataframe['z'] = dataframe['z']*0.5
dataframe[['red','green','blue']] = dataframe[['red','green','blue']].astype(np.uint)
cloud = PyntCloud(dataframe)
cloud.plot()
#cloud.show()

tresD = Reconstruccion()
#tresD.data()
#tresD.building()

También podría gustarte