docs: private void visualizeResults( SceneStructureMetric structure,
  								   List<BufferedImage> colorImages ) {
  
  		List<Point3D_F64> cloudXyz = new ArrayList<>();
  		GrowQueue_I32 cloudRgb = new GrowQueue_I32();
  		Point3D_F64 world = new Point3D_F64();
  		Point3D_F64 camera = new Point3D_F64();
  		Point2D_F64 pixel = new Point2D_F64();
  		for( int i = 0; i < structure.points.length; i++ ) {
  			// Get 3D location
  			SceneStructureMetric.Point p = structure.points[i];
  			p.get(world);
  
  			// Project point into an arbitrary view
  			for (int j = 0; j < p.views.size; j++) {
  				int viewIdx  = p.views.get(j);
  				SePointOps_F64.transform(structure.views[viewIdx].worldToView,world,camera);
  				int cameraIdx = structure.views[viewIdx].camera;
  				structure.cameras[cameraIdx].model.project(camera.x,camera.y,camera.z,pixel);
  
  				// Get the points color
  				BufferedImage image = colorImages.get(viewIdx);
  				int x = (int)pixel.x;
  				int y = (int)pixel.y;
  
  				// After optimization it might have been moved out of the camera's original FOV.
  				// hopefully this isn't too common
  				if( x < 0 || y < 0 || x >= image.getWidth() || y >= image.getHeight() )
  					continue;
  				cloudXyz.add( world.copy() );
  				cloudRgb.add(image.getRGB((int)pixel.x,(int)pixel.y));
  				break;
  			}
  		}
  
  		PointCloudViewer viewer = VisualizeData.createPointCloudViewer();
  		viewer.setTranslationStep(0.05);
  		viewer.addCloud(cloudXyz,cloudRgb.data);
  		viewer.setCameraHFov(UtilAngle.radian(60));
  
  		SwingUtilities.invokeLater(()->{
  			viewer.getComponent().setPreferredSize(new Dimension(500,500));
  			ShowImages.showWindow(viewer.getComponent(), "Reconstruction Points", true);
  		});
  
  	}