This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

What is 'orbPattern31' in VLIB

Other Parts Discussed in Thread: TMS320DM6467T, MATHLIB

Hi all ~

The function "VLIB_ORB_getHarrisScore" provided in VLIB has a parameter [const CORBInput   input] , which is a struct defined as

CORBPatterns patterns
CORBOrientationOffsets offsets
uint8_t * image
uint8_t * prefimage
int16_t * harrisImage
uint32_t * integralImage
char * scratchBuffer
int8_t * orbPattern31

My question is:

what is the last item [int8_t *orbPattern31]

No explaination is listed in all docs of VLIB~~~

  • Hi,

    Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com). Please read all the links below my signature.

    What is the target DSP used?

    Thank you.

  • TMS320DM6467t
  • Hello Raja, thanks for your timely reply~~
    But this is a software issue ~~
    In short, in the VLIB provided by Ti, there exists a C routine called VLIB_ORB_getHarrisScore, which needs an input parameter "int8_t * orbPattern31"


    But i found no description regarding "orbPattern31" ~~~
  • This static symbol is currently compiled into the common library that is included with VLIB. If the calling file of this function defines:

    extern int8_t orbPattern31[];

    and you link against the common library, then the program should get what it needs.  Thank you for bringing this problem to our attention, since this is an internal structure, we may remove this parameter from the API in future releases and include the object in the appropriate library moving forward.  Please let us know if this solution fixes your problem.

  • Hi, Jesse, thank you so much ~~

    But i got some other problems, i.e.

    1. VLIB_ORB_computeOrientation outputs the pixel-patch orientations using "outCosAngles & outSinAngles"

    2. VLIB_ORB_computeRBrief accepts the orientations from the parameter "uint_8 featWedge" --- which is actually binned orientations.

    Thus, to relate 1 and 2, i tried the following things:

    for i = 0 to N   // N = the number of features

    theta[i] = atan2(outSinAngles[i], outCosAngles[i]) * 180.0 / PI + 180.0;    // this translates the angular value (specified by outSinAngles[i], outCosAngles[i]) into 

                                                                                                                                    //  a floating value between 0.0 ~ 360.0

    featWedges[i] = MIN(theta[i] *CORB_NUM_ORIENTATIONS/360.0, CORB_NUM_ORIENTATIONS - 1); // Note that CORB_NUM_ORIENTATIONS = 30

                                                                                                                                    //  so this step puts theta[i] in to different angle bins aganst their values

    end for

     

    Then i feed VLIB_ORB_computeRBrief with the featWedges computed as above

     

    Please let me know whether the work flow is correct ~~

     

    Thanks

                                

                                                                                                                           

  • Yes, your code looks correct to me.

    Please check that you are getting theta range as [0,359]. Also please use atan2 implementation from TI Provided MATHLIB for better cycle performance. 

    There is difference in the format of angle , between VLIB_ORB_computeOrientation, and VLIB_ORB_computeRBrief APIs.  This we are planning to correct in coming releases of VLIB.

    Regards

    Deepak Poddar