#ifndef _ORB_ALGOS_H_
|
#define _ORB_ALGOS_H_
|
#include "rk_aiq_types_orb_algo.h"
|
|
typedef unsigned char U8 ;
|
typedef unsigned short U16 ;
|
typedef unsigned int U32 ;
|
typedef enum Byte { Uchar = 1, Float = 4, Rgb = 3} Byte;
|
|
typedef struct point_s {
|
float row;
|
float col;
|
} point_t;
|
|
typedef struct Mat {
|
void* buffer; //buffer to save the image
|
U16 height;
|
U16 width;
|
U8 channels;
|
Byte bytes;
|
} Mat;
|
|
typedef struct Node {
|
struct Node* next;
|
void* data;
|
} Node;
|
|
typedef struct ORBList {
|
struct Node* start;
|
struct Node* end;
|
U16 length;
|
U32 bytes;
|
} ORBList;
|
|
ORBList* initList(U32 bytes);
|
void resetList(ORBList* list);
|
void freeList(ORBList* list);
|
#if 0
|
int push(ORBList* list, void* data);
|
orb_point_t* init_orbpoint(U16 row, U16 col, bool descriptor[ORB_FEATURE_DESCRIPTOR_BITS]);
|
orb_matched_point_t* init_matchpoints(U16 row1, U16 col1, U16 row2, U16 col2);
|
#endif
|
void freeList(ORBList* list);
|
|
ORBList* get_roi_points_list (rk_aiq_orb_algo_stat_t* keypoints, orb_rect_t roi);
|
|
ORBList* matching(ORBList* roi_points_list, rk_aiq_orb_algo_stat_t* keypoints2, orb_rect_t roi);
|
|
int find_homography_by_four_points(ORBList* matched_keypoints, double homography[9]);
|
int elimate_affine_transform(ORBList* matched_keypoints, double homography[9]);
|
orb_rect_t map_rect(double homography[9], orb_rect_t* rect_src);
|
|
void work_begin();
|
void work_end(const char* module_name);
|
|
#endif
|