主要内容

changePath

Update model folder property of trained Nerfacto NeRF model

Since R2026a

    Description

    Add-On Required: This feature requires the Computer Vision Toolbox Interface for Nerfstudio Library add-on.

    nerfUpdated = changePath(nerf,newFolderPath) updates the model folder property of a trained Nerfacto NeRF model [1] from the Nerfstudio library [2].

    You can use this function to update the ModelFolder property of a trained nerfacto object , nerf, when you move the associated model folder to a new location, newFolderPath. This allows the object to access the model folder to generate a dense colored point cloud and create novel views of the scene.

    Note

    This feature requires the Computer Vision Toolbox Interface for Nerfstudio Library add-on, a Deep Learning Toolbox™ license, a Parallel Computing Toolbox™ license, and a CUDA® enabled NVIDIA® GPU with at least 16 GB of available GPU memory.

    example

    Examples

    collapse all

    Download Pretrained NeRF Model

    The tum_rgbd_nerfacto.zip file contains the trainedNerfactoTUMRGBD folder. The folder contains the saved-nerfacto-tum-rgbd.mat supporting file, which contains a nerfacto object that has been trained on a sequence of indoor images from the TUM RGB-D data set [1], and the nerfactoModelFolder folder, which contains the data and configuration files required for the Nerfstudio Library [2] to load and execute the trained NeRF model [3].

    Download and extract tum_rgbd_nerfacto.zip.

    if ~exist("tum_rgbd_nerfacto.zip","file")
        websave("tum_rgbd_nerfacto.zip","https://ssd.mathworks.com/supportfiles/3DReconstruction/tum_rgbd_nerfacto.zip");
        unzip("tum_rgbd_nerfacto.zip", pwd);
    end

    Specify the path to the folder containing the saved-nerfacto-tum-rgbd MAT file, and then load the pretrained nerfacto object into the workspace.

    modelRoot = fullfile(pwd, "trainedNerfactoTUMRGBD");
    load(fullfile(modelRoot, "saved-nerfacto-tum-rgbd.mat"))
    Warning: The model folder for the nerfacto object could not be loaded. Update the model folder location using the <a href="matlab:doc('changePath')">changePath</a> method.
      '\\mathworks\devel\sandbox\user\Shared\EX_25b\EX_nerfacto_feature\train_nerfacto_small'
    

    MATLAB® displays a warning when you first load the pretrained nerfacto object into the workspace because the path to the model folder associated with the object, nerfactoModelFolder, changes when you extract the nerfacto_saved_model.zip.

    To resolve this issue, use the changePath function to update the ModelFolder property of the trained nerfacto object to the current path of nerfactoModelFolder. This process can take a few minutes.

    nerf = changePath(nerf, fullfile(modelRoot, "nerfactoModelFolder"));
    Changing nerfacto object model folder path.
    nerfacto object model folder path change complete.
    

    Display the nerfacto object properties to verify that the ModelFolder property is set to the current path of nerfactoModelFolder on your system.

    disp(nerf)
      nerfacto with properties:
    
          ModelFolder: "/home/user/Documents/MATLAB/ExampleManager/user.Bdoc.EX_26a_v1/vision-ex39493372/trainedNerfactoTUMRGBD/nerfactoModelFolder"
        MaxIterations: 30000
           Intrinsics: [1×1 cameraIntrinsics]
    

    Load Camera Poses

    This example contains a set of predefined camera poses that are stored as an array of rigidtform3d objects in the camera-poses-tum.mat file. These represent the position and orientation of the camera in the 3-D world coordinate system of the scene.

    Load the camera-poses-tum.mat file into workspace, which contains the camera poses camPoses.

    load("camera-poses-tum.mat","camPoses");

    Display the camera poses by using the plotCamera function.

    figure
    pcshow([NaN NaN NaN], VerticalAxis="y", VerticalAxisDir="down");
    xlabel("X")
    ylabel("Y")
    zlabel("Z")
    hold on
    
    colors = sky(length(camPoses));
    for i = 1:length(camPoses)
    plotCamera(camPoses(i), Size=0.1, Color=colors(i,:), Opacity=0.1);
    end
    
    hold off

    Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 51 objects of type line, text, patch, scatter.

    Generate Novel Views with Pretrained NeRF Model

    Generate the views captured by the camera poses camPoses by using the generateViews function.

    images = generateViews(nerf,camPoses);
    Generating views from nerfacto object.
    Loading latest checkpoint from load_dir
    nerfacto object view generation complete.
    

    Tip: If you want to generate a large number of novel views, use the writeViews function instead of generateViews to avoid an out-of-memory error.

    Display the generated images. The images show the globe and chairs in front of the desk that are present in the images used to train this NeRF model.

    figure
    montage(images, BorderSize=[2 2])
    title("Rendered Images from Trained NeRF")

    Figure contains an axes object. The hidden axes object with title Rendered Images from Trained NeRF contains an object of type image.

    References

    [1] Sturm, Jürgen, Nikolas Engelhard, Felix Endres, Wolfram Burgard, and Daniel Cremers. “A Benchmark for the Evaluation of RGB-D SLAM Systems.” 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, October 2012, 573–80. https://doi.org/10.1109/IROS.2012.6385773.

    [2] Tancik, Matthew, Ethan Weber, Evonne Ng, et al. “Nerfstudio: A Modular Framework for Neural Radiance Field Development.” Special Interest Group on Computer Graphics and Interactive Techniques Conference Proceedings, ACM, July 23, 2023, 1–12. https://doi.org/10.1145/3588432.3591516.

    [3] Mildenhall, Ben, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, and Ren Ng. "NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis." In Computer Vision - ECCV 2020, edited by Andrea Vedaldi, Horst Bischof, Thomas Brox, and Jan-Michael Frahm. Springer International Publishing, 2020. https://doi.org/10.1007/978-3-030-58452-8_24.

    Input Arguments

    collapse all

    Trained Nerfacto NeRF model, specified as a nerfacto object.

    New model folder path, specified as a string scalar or character vector.

    Data Types: char | string

    Output Arguments

    collapse all

    Trained Nerfacto NeRF model with the updated model folder path, returned as a nerfacto object.

    References

    [1] Mildenhall, Ben, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, and Ren Ng. “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.” In Computer Vision – ECCV 2020, edited by Andrea Vedaldi, Horst Bischof, Thomas Brox, and Jan-Michael Frahm. Springer International Publishing, 2020. https://doi.org/10.1007/978-3-030-58452-8_24.

    [2] Tancik, Matthew, Ethan Weber, Evonne Ng, et al. “Nerfstudio: A Modular Framework for Neural Radiance Field Development.” Special Interest Group on Computer Graphics and Interactive Techniques Conference Proceedings, ACM, July 23, 2023, 1–12. https://doi.org/10.1145/3588432.3591516.

    Version History

    Introduced in R2026a