Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8525493
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T07:59:37+00:00 2026-06-11T07:59:37+00:00

or is it entirely dependent on Bumblebee (or any other Point Gray Imaging sensor

  • 0

or is it entirely dependent on Bumblebee (or any other Point Gray Imaging sensor for that matter)??
I am trying to link the stereo processing API that comes with bumblebee 2 stereo rig to process some offline images. It appears that the triclops stereo function needs some context flag and calibration file in the form input.cal and input.ppm (i.e one image that contains the two stereo rectified images somehow blurry and overlaid). How do I go about obtaining this input.ppm file from other offline images to still be able to use triclops stereo API. And how about the calibration file input.cal, can it be obtained such that it is consistent with the offline images and how ?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T07:59:39+00:00Added an answer on June 11, 2026 at 7:59 am

    Yes, the Triclops API can be used to process offline images. The requirements as you point out are the calibration file (.cal) which comes from the camera and the image file. The calibration file is best extracted at image capture time, though in my experience unless you change the settings it always stays the same. To satisfy the inputs for the Triclops API you’ll also need to use the Point Grey Fly Capture API as it provides the methods for image conversion. My project is doing exactly all of what you are asking. I capture raw pixel interleaved images in the field and then process them later using the FlyCapture and Triclops API to create rectified and disparity images as well as a point cloud from the stereo pair.

    Check the Point Grey samples and their API documentation for how to capture the calibration file. Essentially the method is this: flycaptureGetCalibrationFileFromCamera( context, &szCalFile ); Where the context is the ‘camera context’

    Your initial image file format will vary the conversion method, but in my case here is how I did the conversion from raw to the stereo using C++. I’m using a bumblebee XB3 color camera with raw images 1280×960 in size and grabbing images from the outer two cameras:

       // Read raw file 
       //pFile = fopen ( "FlyCap.raw" , "rb" );
       pFile = fopen ( argv[1] , "rb" );
       if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
    
       // Set raw file size 
       ISize = (numCols*numRows*bytesPerPixel);
    
       // allocate memory to contain the whole file:
       buffer = (unsigned char*) malloc (sizeof(char)*ISize);
       if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
    
       // copy the file into the buffer:
       result = fread (buffer,1,ISize,pFile);
       if (result != ISize) {fputs ("Reading error",stderr); exit (3);}
    
       // Create the FlyCapture Context for processing
       fe = flycaptureCreateContext( &flycapture );
       _HANDLE_FLYCAPTURE_ERROR( "flycaptureCreateContext()", fe );
    
       fe = flycaptureSetColorProcessingMethod(flycapture, FLYCAPTURE_HQLINEAR);
       _HANDLE_FLYCAPTURE_ERROR( "flycaptureSetColorProcessingMethod()", fe );
    
       fe = flycaptureSetColorTileFormat(flycapture, FLYCAPTURE_STIPPLEDFORMAT_GBRG);
       _HANDLE_FLYCAPTURE_ERROR( "flycaptureSetColorTileFormat()", fe );
    
       //Import the raw image in buffer into FlyCaptureImage structure
       flycaptureImage.iCols = 1280;
       flycaptureImage.iRows = 960;
       flycaptureImage.iNumImages = 2;
       flycaptureImage.bStippled = true;
       flycaptureImage.pixelFormat = FLYCAPTURE_RAW16;   
       flycaptureImage.iRowInc = 2560;
       flycaptureImage.timeStamp.ulSeconds = 100;
       flycaptureImage.timeStamp.ulMicroSeconds = 100;
       flycaptureImage.pData = buffer;
    
       // Create buffers for holding the color and mono images
       unsigned char* rowIntColor = 
       new unsigned char[ numCols * numRows * flycaptureImage.iNumImages * 4 ];
       unsigned char* rowIntMono = 
       new unsigned char[ numCols * numRows * flycaptureImage.iNumImages ];
    
       // Create a temporary FlyCaptureImage for preparing the stereo image
       FlyCaptureImage tempColorImage;
       FlyCaptureImage tempMonoImage;
    
       tempColorImage.pData = rowIntColor;
       tempMonoImage.pData = rowIntMono;
    
    
       // Convert the pixel interleaved raw data to row interleaved format
       fe = flycapturePrepareStereoImage( flycapture, flycaptureImage, &tempMonoImage,   &tempColorImage  );
       _HANDLE_FLYCAPTURE_ERROR( "flycapturePrepareStereoImage()", fe );
    
       //Save side-by-side color stereo image
       fe = flycaptureSaveImage( flycapture, &tempColorImage, stereoimg, FLYCAPTURE_FILEFORMAT_PPM );
       _HANDLE_FLYCAPTURE_ERROR( "flycaptureSaveImage()", fe );  
    
       printf ("Saving Stereo...\n");
    

    Note that so far I didn’t use the Triclops API at all. The output from the flycaptureSaveImage(); is what feeds into the Triclops methods. There are some options at that point which deal with color vs mono. Take a look at the Point Grey sample that comes with their Triclops API called ‘stereoto3dpoints.cpp’ It takes over from where I left off. I hope this helps you out.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm working on (surprise) a web framework that entirely is dependent on mod_rewrite, however
I am entirely new to regex, and am trying to use it to match
I'm trying to create a form whose layout is entirely data driven. Example data
One thing I've noticed about spritesheets is that their filesize is not entirely consistent.
I building a page that will depend entirely on JavaScript. Whenever a user clicks
I am trying to design a page that handles both Employee and Station CRUD
Not entirely sure of a good title for this, feel free to edit it
Not entirely sure my question title describes what I want to do, but couldn't
I'm not entirely too familiar with prototypes, and I'm sure this is the incorrect
I am not entirely sure how to explain my problem but I will try.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.