hasNewKeyFrame
Compruebe si se agregó un nuevo fotograma clave en el objeto SLAM visual estéreo
Desde R2025a
Sintaxis
Descripción
Ejemplos
Realice la localización y el mapeo visual simultáneo estereoscópico (vSLAM) utilizando los datos del Conjunto de datos de localización y mapeo a largo plazo UTIAS proporcionado por el Instituto de Estudios Aeroespaciales de la Universidad de Toronto. Puede descargar los datos a un directorio mediante un navegador web o ejecutando este código:
ftpObj = ftp("asrl3.utias.utoronto.ca"); tempFolder = fullfile(tempdir); dataFolder = [tempFolder,'2020-vtr-dataset\UTIAS-In-The-Dark\']; zipFileName = [dataFolder,'run_000005.zip']; folderExists = exist(dataFolder,"dir");
Crea una carpeta en un directorio temporal para guardar el archivo descargado y extraer su contenido.
if ~folderExists mkdir(dataFolder) disp("Downloading run_000005.zip (818 MB). This download can take a few minutes.") mget(ftpObj,"/2020-vtr-dataset/UTIAS-In-The-Dark/run_000005.zip",tempFolder); disp("Extracting run_000005.zip (818 MB) ...") unzip(zipFileName,dataFolder); end
Crea dos objetos imageDatastore para almacenar las imágenes estéreo.
imgFolderLeft = [dataFolder,'\images\left\']; imgFolderRight = [dataFolder,'\images\right\']; imdsLeft = imageDatastore(imgFolderLeft); imdsRight = imageDatastore(imgFolderRight);
Especifique los parámetros intrínsecos y la línea base de la cámara estéreo, y utilícelos para crear un objeto SLAM visual estéreo. La distancia focal, el punto principal y el tamaño de la imagen están en píxeles, y la línea de base está en metros.
focalLength = [387.777 387.777];
principalPoint = [257.446 197.718];
imageSize = [384 512];
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);
baseline = 0.239965;
vslam = stereovslam(intrinsics,baseline,MaxNumPoints=600, ...
TrackFeatureRange=[30 120],SkipMaxFrames=5);Procese cada par de imágenes estéreo y visualice las poses de la cámara y los puntos del mapa 3D.
for i = 1:numel(imdsLeft.Files) leftImage = readimage(imdsLeft,i); rightImage = readimage(imdsRight,i); addFrame(vslam,leftImage,rightImage); if hasNewKeyFrame(vslam) % Query 3-D map points and camera poses xyzPoints = mapPoints(vslam); [camPoses,viewIds] = poses(vslam); % Display 3-D map points and camera trajectory plot(vslam); end % Get current status of system status = checkStatus(vslam); % Stop adding frames when tracking is lost if status == uint8(0) break end end
Una vez procesados todos los fotogramas, reinicie el sistema.
while ~isDone(vslam) plot(vslam) end

reset(vslam)
Argumentos de entrada
Objeto SLAM visual estéreo, especificado como un objeto stereovslam.
Argumentos de salida
Nuevo estado de fotograma clave, devuelto como un 0 (false) o 1 (true) lógico. Un valor de true indica que se ha agregado un nuevo fotograma clave dentro del objeto SLAM visual estéreo vslam. Un valor de false indica que no se ha agregado ningún nuevo fotograma clave. El objeto considera que un fotograma de imagen es un fotograma clave si la cantidad de puntos de características rastreados en el fotograma actual satisface una de estas condiciones:
La cantidad de puntos característicos rastreados está dentro de los límites especificados por la propiedad
TrackFeatureRangedel objetostereovslamvslam.La cantidad de puntos característicos rastreados es mayor que el límite superior especificado por la propiedad
TrackFeatureRangedel objetostereovslamvslam, y la cantidad de cuadros omitidos desde que se agregó el último cuadro clave es igual al valor de la propiedadSkipMaxFramesdevslam.
La función de objeto hasNewKeyFrame devuelve true solo cuando el objeto stereovslam ha agregado uno o más fotogramas clave nuevos desde la última llamada hasNewKeyFrame. Por ejemplo, si el objeto stereovslam agrega solo un fotograma clave, entonces dos llamadas consecutivas a hasNewKeyFrame devuelven true y false, respectivamente.
Historial de versiones
Introducido en R2025a
Consulte también
Objetos
Funciones
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)