1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.2 KiB

#ifndef __ORB_H__
#define __ORB_H__
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX_POINTS 40000
#define FAST_CANDIDATE 16 // fast9 use surrounding 16 points
#define MAX_CONSECUTIVE 9
#define PATCH_SIZE 15
#define HALF_PATCH_SIZE (PATCH_SIZE >> 1)
#define DESCRIPTOR_SIZE 15
#define DARKER 1
#define SIMILAR 2
#define BRIGHTER 3
#define ROUND(x) (int)(((x) >= 0)?((x) + 0.5) : ((x) - 0.5))
class rkisp_orb
{
public:
unsigned char fast9_limit;
unsigned char cur_limit;
int feature_size;
int feature_capacity;
int non_max_sup_radius;
unsigned char* imgSrc;
int width;
int height;
int data_bits;
unsigned short* pXs;
unsigned short* pYs;
unsigned char* pDescriptors;
unsigned char* pScores;
public:
int process();
int fast9_detect();
int compare_pixel(unsigned char center, unsigned char* compare, unsigned char* candidate);
int find_9consecutive_pixel(unsigned char* compare);
int non_max_suppress();
int orb_feature();
int get_rotation_value(unsigned char* center_ptr, int* cur_point_pattern, int idx, int cos_value, int sin_value);
};
#endif