triclops.h
Go to the documentation of this file.
00001 /**************************************************************************************************
00002  Software License Agreement (BSD License)
00003 
00004  Copyright (c) 2011-2013, LAR toolkit developers - University of Aveiro - http://lars.mec.ua.pt
00005  All rights reserved.
00006 
00007  Redistribution and use in source and binary forms, with or without modification, are permitted
00008  provided that the following conditions are met:
00009 
00010   *Redistributions of source code must retain the above copyright notice, this list of
00011    conditions and the following disclaimer.
00012   *Redistributions in binary form must reproduce the above copyright notice, this list of
00013    conditions and the following disclaimer in the documentation and/or other materials provided
00014    with the distribution.
00015   *Neither the name of the University of Aveiro nor the names of its contributors may be used to
00016    endorse or promote products derived from this software without specific prior written permission.
00017  
00018  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
00019  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
00020  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
00021  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00022  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00023  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
00024  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00025  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 ***************************************************************************************************/
00032 //=============================================================================
00033 // Copyright © 2004 Point Grey Research, Inc. All Rights Reserved.
00034 // 
00035 // This software is the confidential and proprietary information of Point
00036 // Grey Research, Inc. ("Confidential Information").  You shall not
00037 // disclose such Confidential Information and shall use it only in
00038 // accordance with the terms of the license agreement you entered into
00039 // with Point Grey Research, Inc. (PGR).
00040 // 
00041 // PGR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
00042 // SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
00043 // IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
00044 // PURPOSE, OR NON-INFRINGEMENT. PGR SHALL NOT BE LIABLE FOR ANY DAMAGES
00045 // SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
00046 // THIS SOFTWARE OR ITS DERIVATIVES.
00047 //
00048 //=============================================================================
00049 //=============================================================================
00050 // $Id: triclops.h,v 2.94 2010/06/25 00:35:21 arturp Exp $
00051 //=============================================================================
00052 #ifndef TRICLOPS_H
00053 #define TRICLOPS_H
00054 
00055 //=============================================================================
00056 //
00057 // This file defines the the API for the Triclops Stereo Vision SDK.
00058 //
00059 //=============================================================================
00060 
00061 
00062 //=============================================================================
00063 // Defines
00064 //=============================================================================
00065 
00066 //
00067 // The version of the library.
00068 //
00069 #define TRICLOPS_VERSION 3302
00070 
00071 //=============================================================================
00072 // System Includes  
00073 //=============================================================================
00074 
00075 #ifdef __cplusplus
00076 extern "C"
00077 {
00078 #endif
00079    
00080 //=============================================================================
00081 // Macros  
00082 //=============================================================================
00083 
00084 
00085 //=============================================================================
00086 // Enumerations  
00087 //=============================================================================
00088 //
00089 // Group = Enumerations
00090 
00091 //
00092 // Name: TriclopsError
00093 //
00094 // Description:
00095 //    All Triclops functions return an error value that indicates whether
00096 //    an error occurred, and if so what error.  The following enumerated
00097 //    type lists the kinds of errors that may be returned.
00098 //
00099 typedef enum TriclopsError
00100 {
00101    // Function succeeded.
00102    TriclopsErrorOk = 0,
00103    // User requested an option that is not yet implemented. 
00104    TriclopsErrorNotImplemented,
00105    // User specified input to the function that was not a valid value for 
00106    // this function.
00107    TriclopsErrorInvalidSetting,
00108    // The TriclopsContext passed in was corrupt or invalid.
00109    TriclopsErrorInvalidContext,
00110    // The specified camera is not valid for this camera configuration.
00111    TriclopsErrorInvalidCamera,
00112    // An impossible Region Of Interest was specified.  
00113    // For example, a region of interest with negative height or width. 
00114    TriclopsErrorInvalidROI,
00115    // Given the current specified options, the request is not valid. 
00116    // For example, requesting the disparity image from a context that has 
00117    // not executed 'triclopsStereo()'. 
00118    TriclopsErrorInvalidRequest,
00119    // Some options are illegal or contradictory. 
00120    TriclopsErrorBadOptions,
00121    // The configuration file is corrupted, missing mandatory fields,
00122    // or is for the wrong Triclops version. 
00123    TriclopsErrorCorruptConfigFile,
00124    // Can not find the configuration file. 
00125    TriclopsErrorNoConfigFile,
00126    // An indeterminable error occurred. 
00127    TriclopsErrorUnknown,
00128    // A function that requires MMX was called on a non-MMX enabled CPU. 
00129    TriclopsErrorNonMMXCpu,
00130    // An invalid parameter has been passed.
00131    TriclopsErrorInvalidParameter,
00132    // A call to TriclopsSetSurfaceValidation has caused an overflow. 
00133    TriclopsErrorSurfaceValidationOverflow,
00134    // An error has occurred during a system call.  Check 'errno' to 
00135    // determine the reason.
00136    // This includes the system running out of memory.
00137    TriclopsErrorCorruptTransformFile,
00138    // Can not find the transform file or its contents is invalid
00139    TriclopsErrorSystemError,
00140    // Error reading in a file.
00141    TriclopsErrorFileRead,
00142    // The PGR comment in a PGM header was corrupted
00143    TriclopsErrorCorruptPGRComment,
00144    // This Triclops functionality has been deprecated
00145    TriclopsErrorDeprecated
00146 
00147 } TriclopsError;
00148 
00149 //
00150 // Name: TriclopsImageType
00151 // 
00152 // Description:
00153 //  The enumerated type TriclopsImageType indicates what kind of image 
00154 //  is either being requested or returned. It also indicates the size 
00155 //  of each pixel in the image.
00156 //
00157 typedef enum TriclopsImageType
00158 {
00159    // Disparity image: This is the resultant depth image after stereo 
00160    // processing.
00161    TriImg_DISPARITY = 0,
00162    // Raw unrectified image: This is an image with the aspect ratio 
00163    // that was supplied by the input.  There is no correction for lens 
00164    // distortion or camera misalignment. 
00165    TriImg_RAW,
00166    // Rectified image: This is an image that has been corrected for lens 
00167    // distortion and camera misalignment to fit a pinhole camera model.
00168    TriImg_RECTIFIED,
00169    // Edge image: A Bandpass filter has been applied to this image.  
00170    // This image has values that range about 128.   A value of 128 
00171    // indicates no edge.  Values greater and less than 128 indicate 
00172    // an edge with strength relative to the difference between 128 and 
00173    // the pixel value. 
00174    TriImg_EDGE,
00175 
00176 } TriclopsImageType;
00177 
00178 //
00179 // Name: TriclopsImage16Type 
00180 //
00181 // Description:
00182 //  This enumerated type defines the various 16bit image types.
00183 //
00184 typedef enum TriclopsImage16Type
00185 {
00186    // Disparity Image:  This is the 16-bit resultant depth image after
00187    // stereo processing with subpixel on.
00188    TriImg16_DISPARITY = 0
00189 
00190 } TriclopsImage16Type;
00191 
00192 
00193 //
00194 // Name: TriclopsCamera
00195 // 
00196 // Description:
00197 //  This enumerated type identifies individual cameras given a specific
00198 //  camera configuration.
00199 //
00200 // Remarks: 
00201 //  TriCam_COLOR is only for use with the Color Triclops.  It is not
00202 //  used for any Bumblebee product (TriCam_COLOR may be phased 
00203 //  out in future releases of Triclops SDK).
00204 //
00205 typedef enum TriclopsCamera
00206 {
00207    TriCam_REFERENCE,
00208    TriCam_RIGHT,
00209    TriCam_TOP,
00210    TriCam_LEFT,
00211 
00212    // These are kept here as legacy code for now... should be replaced in user
00213    // code to not include the configuration specific "_L_"
00214    // These values may be phased out in future releases of Triclops SDK
00215    TriCam_L_RIGHT       = TriCam_RIGHT,
00216    TriCam_L_TOP         = TriCam_TOP,
00217    TriCam_L_LEFT        = TriCam_LEFT,
00218 
00219    TriCam_COLOR,
00220    TriCam_L_COLOR       = TriCam_COLOR
00221 
00222 } TriclopsCamera;
00223 
00224 //
00225 // Name: TriclopsInputType
00226 //
00227 // Description:
00228 //  This enumerated type identifies the format of the input to the 
00229 //  Triclops library.  This input has generally either been read from 
00230 //  a set of files (for off line processing) or has just been delivered 
00231 //  by a frame grabber.  There are two formats of input data that are 
00232 //  currently being supported.  RGB format indicates that the data is 
00233 //  supplied with a separate buffer for each R, G and B channel.  RGB 
00234 //  packed indicates that the 3 channels are interleaved.
00235 //
00236 typedef enum TriclopsInputType
00237 {   
00238    // This is used to mark that the input has not yet been set. 
00239    TriInp_NONE,
00240    // An array of pixels with color bands interleaved in the 
00241    // following order: [B G R U] [B G R U]. 
00242    TriInp_RGB_32BIT_PACKED,     
00243    // An array of separated bands with the following ordering: 
00244    // [R R R....][G G G...][B B B...]. 
00245    TriInp_RGB
00246 
00247 } TriclopsInputType;
00248 
00249 
00250 //=============================================================================
00251 // Types 
00252 //=============================================================================
00253 //
00254 // Group = Types 
00255 
00256 //
00257 // Name: TriclopsBool 
00258 // 
00259 // Description:
00260 //  Definition for Boolean variables. 
00261 //
00262 typedef int TriclopsBool;
00263 
00264 //
00265 // Name: TriclopsContext
00266 //
00267 // Description:
00268 //  Triclops context is a pointer to an internal structure that maintains
00269 //  all image and bookkeeping information necessary to the Triclops library.  
00270 //  It is the container for all parameters
00271 //
00272 typedef void*  TriclopsContext;
00273 
00274 //
00275 // Name: TriclopsTimestamp
00276 // 
00277 // Description:
00278 //  This structure describes the format by which time is represented in the 
00279 //  Triclops Stereo Vision SDK.
00280 //
00281 typedef struct TriclopsTimestamp
00282 {
00283    // The number of seconds since the epoch. 
00284    long sec;
00285    // The number of microseconds within the second. 
00286    long u_sec;
00287    
00288 } TriclopsTimestamp;
00289 
00290 //
00291 // Name: TriclopsImage
00292 //      
00293 // Description:
00294 //  This structure is used both for image input and output from the
00295 //  Triclops system.  
00296 //
00297 typedef struct TriclopsImage
00298 {
00299    // The number of rows in the image. 
00300    int   nrows;
00301    // The number of columns in the image. 
00302    int   ncols;
00303    // This is the pitch, or row increment for the image.  Data must be
00304    // contiguous within each row, and the rows must be equally spaced.
00305    // Rowinc indicates the number of bytes between the beginning of a 
00306    // row and the beginning of the following row. 
00307    int   rowinc;
00308    // The area for the pixel data.  This must be numRows * numCols bytes 
00309    // large. 
00310    unsigned char*       data; 
00311 
00312 } TriclopsImage;
00313 
00314 //
00315 // Name: TriclopsImage16
00316 //
00317 // Description: This structure is used for image output from the Triclops
00318 //   system for image types that require 16-bits per pixel.  This is the format
00319 //   for subpixel interpolated images.   The structure is identical to the 
00320 //   TriclopsImage structure except that the data contains unsigned shorts 
00321 //   rather than unsigned chars.  Rowinc is still the number of bytes between
00322 //   the beginning of a row and the beginning of the following row 
00323 //   (NOT number of pixels).
00324 //
00325 typedef struct TriclopsImage16
00326 {
00327    // The number of rows in the image.
00328    int               nrows;
00329    // The number of columns in the image.
00330    int               ncols;
00331    // The number row increment of the image.
00332    int               rowinc;
00333    // The pixel data of the image.
00334    unsigned short*   data;
00335 
00336 } TriclopsImage16;
00337 
00338 //
00339 // Name: TriclopsColorImage
00340 //
00341 // Description:
00342 //  This structure is used for image output from the Triclops system for color
00343 //  images.  The structure is the same as TriclopsImage except that the data
00344 //  field is replaced by three color bands; 'red', 'green' and 'blue'.  Each
00345 //  band is a complete image for that particular color band.  In this case, 
00346 //  rowinc is the row increment for each color band.
00347 //
00348 typedef struct TriclopsColorImage
00349 {
00350    // The number of rows in the image.
00351    int               nrows;
00352    // The number of columns in the image.
00353    int               ncols;
00354    // The row increment of the image.
00355    int               rowinc;
00356    // The pixel data for red band of the image.
00357    unsigned char*    red;
00358    // The pixel data for green band of the image.
00359    unsigned char*    green;
00360    // The pixel data for blue band of the image.
00361    unsigned char*    blue;
00362 
00363 } TriclopsColorImage;
00364 
00365 //
00366 // Name: TriclopsPackedColorPixel 
00367 //
00368 // Description:
00369 //  This structure defines the format for a 32bit color pixel.
00370 //
00371 typedef struct TriclopsPackedColorPixel
00372 {
00373    // The 32 bit pixel data.
00374    unsigned char     value[4];
00375 
00376 } TriclopsPackedColorPixel;
00377 
00378 //
00379 // Name: TriclopsPackedColorImage 
00380 //
00381 // Description:
00382 //  This structure defines the format of a 32bit packed color image.
00383 //
00384 typedef struct TriclopsPackedColorImage
00385 {
00386    // The number of rows in the image.
00387    int   nrows;
00388    // The number of columns in the image.
00389    int   ncols;  
00390    // The number of bytes in each row of the image.
00391    int   rowinc; 
00392    // A pointer to the pixel data.
00393    TriclopsPackedColorPixel*     data;  
00394 
00395 } TriclopsPackedColorImage;
00396 
00397 //
00398 // Name: TriclopsInputRGB32BitPacked
00399 //
00400 // Description:
00401 //  This structure contains RGB packed data.  
00402 //
00403 typedef struct TriclopsInputRGB32BitPacked
00404 {
00405    //  a pointer to an array of nrows*ncols*4 pixels. The pixels are 
00406    //  organized in the following fashion [RGBU][RGBU] ... 
00407    void*    data;
00408 
00409 } TriclopsInputRGB32BitPacked;
00410 
00411 //
00412 // Name: TriclopsInputRGB
00413 // 
00414 // Description:
00415 //  This structure consists of three separate buffers, 
00416 //  each containing nrows * ncols pixels for each of the RGB bands.
00417 typedef struct TriclopsInputRGB
00418 {
00419    // The red band.
00420    void*    red;
00421    // The green band.
00422    void*    green;
00423    // The blue band.
00424    void*    blue;
00425 
00426 } TriclopsInputRGB;
00427 
00428 //
00429 // Name: TriclopsInput 
00430 //
00431 // Description: 
00432 //  TriclopsInput structure contains image input to the Triclops library. 
00433 //  The library accepts two formats: 32-bit packed, and RGB separate buffer 
00434 //  inputs.  Field u contains a pointer to one of the two typed structures 
00435 //  that contain the image data.  The inputType field indicates which type of 
00436 //  input is actually present in the structure.  
00437 //
00438 typedef struct TriclopsInput
00439 {
00440    // The input type indicating packed or unpacked data.
00441    TriclopsInputType    inputType;
00442    // The timestamp on the image data (generated by the camera.)
00443    TriclopsTimestamp    timeStamp;
00444    // The number of rows in the input images. 
00445    int   nrows;
00446    // The number of columns in the input images. 
00447    int   ncols;
00448    // The row increment of the input images.
00449    int   rowinc;
00450 
00451    // The actual image data is either packed or unpacked and can be accessed
00452    // with either TriclopsinputRGB or TriclopsInputRGB32BitPacked.
00453    union
00454    {
00455       TriclopsInputRGB              rgb;
00456       TriclopsInputRGB32BitPacked   rgb32BitPacked;
00457    } u;
00458 
00459 } TriclopsInput;
00460 
00461 
00462 
00463 //=============================================================================
00464 // Function Prototypes  
00465 //=============================================================================
00466 
00467 //=============================================================================
00468 // Debugging and Error Reporting
00469 //=============================================================================
00470 //
00471 // Group = Debugging and Error Reporting
00472 
00473 //
00474 // Name: triclopsErrorToString
00475 // 
00476 // Synopsis:
00477 //  Converts a Triclops error into a meaningful string.
00478 // 
00479 // Input:
00480 //  error -     The value of a TriclopsError variable.
00481 //
00482 // Returns:
00483 //  char* - A string describing the nature of the TriclopsError.
00484 //
00485 // Description:
00486 //  This function returns a string that describes the given TriclopsError.  
00487 //  This allows error reporting software to report meaningful error messages
00488 //  to the user.
00489 //
00490 // See Also:
00491 //  TriclopsError
00492 //
00493 char*
00494 triclopsErrorToString( TriclopsError error );
00495 
00496 //=============================================================================
00497 // General
00498 //=============================================================================
00499 //
00500 // Group = General 
00501 
00502 //
00503 // Name: triclopsVersion
00504 //
00505 // Synopsis:
00506 //  Returns a string with the Triclops library version.
00507 //
00508 // Input:
00509 //  
00510 //  
00511 // Returns:
00512 //  char* - A string containing the version information for the context.
00513 //
00514 // Description:
00515 //  This function returns internally-handled memory.  The caller should not
00516 //  free the returned pointer.
00517 //  
00518 //
00519 const char*
00520 triclopsVersion();
00521 
00522 
00523 
00524 //
00525 // Name: triclopsGetImage
00526 //
00527 // Synopsis:
00528 //  Retrieves a specified type of image associated with the specified camera.
00529 //
00530 // Input:
00531 //  context   - The context.
00532 //  imageType - The image type requested.
00533 //  camera    - The camera that generated the requested image.  
00534 //
00535 // Output:
00536 //  image - A TriclopsImage with the image data.
00537 //
00538 // Returns:
00539 //  TriclopsErrorOk  - The operation succeeded.
00540 //  InvalidContext - The input context was invalid.
00541 //  InvalidCamera  - The camera does not match a camera in this configuration.
00542 //  InvalidRequest - The image type does not match the camera or is not being
00543 //                   generated by this system with the current context options. 
00544 // 
00545 // Description:
00546 //  This function supplies the data to a TriclopsImage.  The user is 
00547 //  responsible for allocating the TriclopsImage structure.  The data 
00548 //  value of the structure will point to memory within the stereo kernel 
00549 //  working space.  Therefore, if a permanent copy of this image is desired, 
00550 //  the user must copy it out.  
00551 //
00552 // See Also:
00553 //  triclopsSetImageBuffer()
00554 //
00555 TriclopsError
00556 triclopsGetImage( const TriclopsContext   context,
00557                   TriclopsImageType       imageType,
00558                   TriclopsCamera          camera,
00559                   TriclopsImage*          image );
00560 
00561 //
00562 // Name: triclopsBuildRGBTriclopsInput
00563 //
00564 // Synopsis:
00565 //  Uses the parameters passed in to build up a Triclops Input
00566 //
00567 // Input:
00568 //  iCols            - The number of columns in the image
00569 //  iRows            - The number of rows in the image
00570 //  iRowInc          - The number of bytes in each row of the image
00571 //  ulSeconds        - The second value of the image timestamp
00572 //  ulMicroSeconds   - The microsecond value of the image timestamp
00573 //
00574 // Output:
00575 //  pDataR           - A buffer to hold the R data
00576 //  pDataG           - A buffer to hold the G data
00577 //  pDataB           - A buffer to hold the B data
00578 //  triclopsInput - A TriclopsInput created by the FlyCapture image passed in.
00579 //
00580 // Returns:
00581 //  TriclopsErrorOk  - The operation succeeded.
00582 //  TriclopsErrorFailed - The operation failed.
00583 // 
00584 // Description:
00585 //  This function takes a FlyCapture image and converts it to a triclops input.
00586 //  Depending on the camera (BB, BB2, XB3), it will deinterleave the images
00587 //  and create a Triclops Input of RGB type.
00588 //
00589 //
00590 TriclopsError
00591 triclopsBuildRGBTriclopsInput (int iCols, 
00592            int iRows, 
00593            int iRowInc, 
00594            unsigned long ulSeconds, 
00595            unsigned long ulMicroSeconds, 
00596            unsigned char* pDataR, 
00597            unsigned char* pDataG, 
00598            unsigned char* pDataB, 
00599            TriclopsInput* triclopsInput);
00600 
00601 //
00602 // Name: triclopsBuildRGBTriclopsInput
00603 //
00604 // Synopsis:
00605 //  Uses the parameters passed in to build up a Triclops Input
00606 //
00607 // Input:
00608 //  iCols            - The number of columns in the image
00609 //  iRows            - The number of rows in the image
00610 //  iRowInc          - The number of bytes in each row of the image
00611 //  ulSeconds        - The second value of the image timestamp
00612 //  ulMicroSeconds   - The microsecond value of the image timestamp 
00613 //
00614 // Output:
00615 //  pDataPacked      - An array to hold the packed data
00616 //  triclopsInput    - A TriclopsInput created by the FlyCapture image passed in.
00617 //
00618 // Returns:
00619 //  TriclopsErrorOk  - The operation succeeded.
00620 //  TriclopsErrorFailed - The operation failed.
00621 // 
00622 // Description:
00623 //  This function takes a FlyCapture image and converts it to a triclops input.
00624 //  Depending on the camera (BB, BB2, XB3), it will deinterleave the images
00625 //  and create a Triclops Input of RGB type.
00626 //
00627 //
00628 TriclopsError
00629 triclopsBuildPackedTriclopsInput (int iCols, 
00630            int iRows, 
00631            int iRowInc, 
00632            unsigned long ulSeconds, 
00633            unsigned long ulMicroSeconds, 
00634            unsigned char* pDataPacked, 
00635            TriclopsInput* triclopsInput);
00636 
00637 //
00638 // Name: triclopsSaveImage
00639 //
00640 // Synopsis:
00641 //  Saves an image to the specified filename.  The file format currently 
00642 //  supported is PGM format.
00643 //
00644 // Input:
00645 // image    - The TriclopsImage to be saved.
00646 // filename - The file name in which to save the image. 
00647 // 
00648 // Returns:
00649 //  SystemError     - The file could not be opened
00650 //  TriclopsErrorOk - The operation succeeded.
00651 //
00652 // Description:
00653 //  This function saves the input image to the requested file.  Currently, this
00654 //  function will not detect if the file could not be opened, and will always 
00655 //  show successful return.
00656 //
00657 TriclopsError
00658 triclopsSaveImage( TriclopsImage* image, 
00659                    char*          filename );
00660 
00661 
00662 //
00663 // Name: triclopsGetImage16
00664 //
00665 // Synopsis:
00666 //  Retrieves a specified 16-bit image associated with the specified camera. 
00667 //
00668 // Input:
00669 //  context   - The context.
00670 //  imageType - The image type requested.
00671 //  camera    - The camera that generated the requested image.  
00672 //
00673 // Output:
00674 //  image - A TriclospImage16 with the image data.
00675 //
00676 // Returns:
00677 //  TriclopsErrorOk             - The operation succeeded.
00678 //  InvalidContext - The input context was invalid.
00679 //  InvalidCamera  - The camera does not match a camera in this configuration.
00680 //  InvalidRequest - The image type does not match the camera or is not being 
00681 //                   generated by this system with the current context options. 
00682 //
00683 // Description:
00684 //  This function performs the same action as triclopsGetImage(), except that 
00685 //  it retrieves a 16-bit image type.  Currently the only supported 16-bit 
00686 //  image is the resultant disparity image from subpixel interpolation.  
00687 //
00688 // See Also:
00689 //  triclopsGetImage()
00690 //
00691 TriclopsError
00692 triclopsGetImage16( const TriclopsContext       context,
00693                     TriclopsImage16Type         imageType,
00694                     TriclopsCamera              camera,
00695                     TriclopsImage16*            image );
00696 
00697 
00698 //
00699 // Name: triclopsSaveImage16
00700 //
00701 // Synopsis:
00702 //  Saves an image to the specified filename.  The file format currently 
00703 //  supported is PGM format.
00704 //
00705 // Input:
00706 //  image    - The TriclopsImage16 to be saved.
00707 //  filename - The file name in which to save the image.
00708 //
00709 // Returns:
00710 //  SystemError     - The file could not be opened
00711 //  TriclopsErrorOk - The operation succeeded.
00712 //
00713 // Description:
00714 //  This function saves the input image to the requested file. Currently,
00715 //  this function will not detect if the file could not be opened, and will 
00716 //  always return successful.
00717 //
00718 // See Also:
00719 //  triclopsSaveImage()
00720 //
00721 TriclopsError
00722 triclopsSaveImage16( TriclopsImage16*   image, 
00723                      char*              filename );
00724 
00725 
00726 
00727 //=============================================================================
00728 // Rectification
00729 //=============================================================================
00730 //
00731 // Group = Rectification
00732 
00733 //
00734 // Name: triclopsRectify
00735 //
00736 // Synopsis:
00737 //  Does image unpacking, smoothing, rectification and edge detection, 
00738 //  as specified by parameters.
00739 //
00740 // Input:
00741 //  context - The context.
00742 //  input   - The image to be processed.        
00743 //
00744 // Returns:
00745 //  TriclopsErrorOk   - The operation succeeded.
00746 //  InvalidContext    - The input context was invalid.
00747 //  NotImplemented    - TriclopsInput has rowinc < ncols*pixelsize
00748 //
00749 // Description:
00750 //  This function does all necessary preprocessing on the input data.  It 
00751 //  unpacks the data, which strips individual channels from 32-bit packed 
00752 //  data and puts them into 3 TriImg_RAW channels.  It applies a low-pass 
00753 //  filter on these channels if requested, and corrects for lens distortion 
00754 //  and camera misalignment, saving these images into TriImg_RECTIFIED.  
00755 //  Finally it performs 2nd derivative Gaussian edge processing on the 
00756 //  rectified images and saves them into TriImg_EDGE internal images.
00757 //
00758 // See Also:
00759 //  triclopsStereo(), triclopsSetResolution(), triclopsSetEdgeCorrelation(), 
00760 //  triclopsSetRectify(), triclopsSetLowpass()
00761 //
00762 TriclopsError
00763 triclopsRectify( TriclopsContext   context,
00764                  TriclopsInput*    input );
00765 
00766 
00767 //
00768 // Name: triclopsPreprocess
00769 //
00770 // Synopsis:
00771 //  Does image unpacking, smoothing, rectification and edge detection, 
00772 //  as specified by parameters.
00773 //
00774 // Input:
00775 //  context - The context.
00776 //  input   - The image to be processed.        
00777 //
00778 // Returns:
00779 //  TriclopsErrorOk  - The operation succeeded.
00780 //  InvalidContext   - The input context was invalid.
00781 //  NotImplemented   - TriclopsInput has rowinc < ncols*pixelsize
00782 //
00783 // Description:
00784 //  This function does all necessary preprocessing on the input data.  It 
00785 //  unpacks the data, which strips individual channels from 32-bit packed 
00786 //  data and puts them into 3 TriImg_RAW channels.  It applies a low-pass 
00787 //  filter on these channels if requested, and corrects for lens distortion 
00788 //  and camera misalignment, saving these images into TriImg_RECTIFIED.  
00789 //  Finally it performs 2nd derivative Gaussian edge processing on the 
00790 //  rectified images and saves them into TriImg_EDGE internal images.
00791 //
00792 // Remarks:
00793 //  This function has been renamed as "triclopsRectify()", which is a
00794 //  more descriptive name.  "triclopsPreprocess()" will be deprecated in
00795 //  the future.
00796 //
00797 // See Also:
00798 //  triclopsStereo(), triclopsSetResolution(), triclopsSetEdgeCorrelation(), 
00799 //  triclopsSetRectify(), triclopsSetLowpass()
00800 //
00801 TriclopsError
00802 triclopsPreprocess( TriclopsContext   context,
00803                     TriclopsInput*    input );
00804 
00805 
00806 //=============================================================================
00807 // Stereo
00808 //=============================================================================
00809 //
00810 // Group = Stereo 
00811 
00812 
00813 //
00814 // Name: triclopsStereo
00815 //
00816 // Synopsis:
00817 //  Does stereo processing, validation, and subpixel interpolation, as 
00818 //  specified by parameters.
00819 //
00820 // Input:
00821 //  context - The context.
00822 //
00823 // Returns:
00824 //  TriclopsErrorOk  - The operation succeeded.
00825 //  BadOptions       - There are some contradictory options set.
00826 //  NotImplemented   - The context camera configuration is not supported.
00827 //  InvalidROI       - ROI has negative dimensions or illegal starting position.
00828 //  InvalidRequest   - triclopsStereo called before triclopsPreprocess was
00829 //                     called.
00830 //
00831 // Description:
00832 //  This function performs the stereo processing and validation, and generates 
00833 //  the internal image TriImg_DISPARITY.
00834 //
00835 // Remarks:
00836 //  An illegal starting position is a upper/left corner that is closer to the 
00837 //  right/bottom edge of the image than the stereo mask size.   
00838 //
00839 // See Also:
00840 //  triclopsPreprocessing(), triclopsSetDoStereo(), triclopsEdgeCorrelation(), 
00841 //  triclopsSetTextureValidation(), triclopsSetUniquenessValidation(), 
00842 //  triclopsGetROIs(), triclopsSetSubpixelInterpolation()
00843 //
00844 TriclopsError
00845 triclopsStereo( TriclopsContext context );
00846 
00847 #include <triclops3d.h>
00848 #include <triclopsbuffer.h>
00849 #include <triclopscontext.h>
00850 #include <triclopsvalidation.h>
00851 #include <triclopsrectify.h>
00852 #include <triclopsstereo.h>
00853 #include <triclopsimageio.h>
00854 
00855 
00856 
00857 #ifdef __cplusplus
00858 }
00859 #endif
00860 
00861 #endif  // #ifndef TRICLOPS_H


xb3
Author(s): Miguel Oliveira, Tiago Talhada
autogenerated on Thu Nov 20 2014 11:36:02