xref: /aosp_15_r20/external/libaom/third_party/fastfeat/README.libaom (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
1*77c1e3ccSAndroid Build Coastguard WorkerURL: https://github.com/edrosten/fast-C-src
2*77c1e3ccSAndroid Build Coastguard WorkerVersion: 391d5e939eb1545d24c10533d7de424db8d9c191
3*77c1e3ccSAndroid Build Coastguard WorkerLicense: BSD
4*77c1e3ccSAndroid Build Coastguard WorkerLicense File: LICENSE
5*77c1e3ccSAndroid Build Coastguard Worker
6*77c1e3ccSAndroid Build Coastguard WorkerDescription:
7*77c1e3ccSAndroid Build Coastguard WorkerLibrary to compute FAST features with non-maximum suppression.
8*77c1e3ccSAndroid Build Coastguard Worker
9*77c1e3ccSAndroid Build Coastguard WorkerThe files are valid C and C++ code, and have no special requirements for
10*77c1e3ccSAndroid Build Coastguard Workercompiling, and they do not depend on any libraries. Just compile them along with
11*77c1e3ccSAndroid Build Coastguard Workerthe rest of your project.
12*77c1e3ccSAndroid Build Coastguard Worker
13*77c1e3ccSAndroid Build Coastguard WorkerTo use the functions, #include "fast.h"
14*77c1e3ccSAndroid Build Coastguard Worker
15*77c1e3ccSAndroid Build Coastguard WorkerThe corner detectors have the following prototype (where X is 9, 10, 11 or 12):
16*77c1e3ccSAndroid Build Coastguard Worker
17*77c1e3ccSAndroid Build Coastguard Workerxy* fastX_detect_nonmax(const unsigned char * data, int xsize, int ysize, int stride, int threshold, int* numcorners)
18*77c1e3ccSAndroid Build Coastguard Worker
19*77c1e3ccSAndroid Build Coastguard WorkerWhere xy is the following simple struct typedef:
20*77c1e3ccSAndroid Build Coastguard Worker
21*77c1e3ccSAndroid Build Coastguard Workertypedef struct
22*77c1e3ccSAndroid Build Coastguard Worker{
23*77c1e3ccSAndroid Build Coastguard Worker	int x, y;
24*77c1e3ccSAndroid Build Coastguard Worker} xy;
25*77c1e3ccSAndroid Build Coastguard Worker
26*77c1e3ccSAndroid Build Coastguard WorkerThe image is passed in as a block of data and dimensions, and the list of
27*77c1e3ccSAndroid Build Coastguard Workercorners is returned as an array of xy structs, and an integer (numcorners)
28*77c1e3ccSAndroid Build Coastguard Workerwith the number of corners returned.  The data can be deallocated with free().
29*77c1e3ccSAndroid Build Coastguard WorkerNonmaximal suppression is performed on the corners. Note that the stride
30*77c1e3ccSAndroid Build Coastguard Workeris the number of bytes between rows. If your image has no padding, then this
31*77c1e3ccSAndroid Build Coastguard Workeris the same as xsize.
32*77c1e3ccSAndroid Build Coastguard Worker
33*77c1e3ccSAndroid Build Coastguard WorkerThe detection, scoring and nonmaximal suppression are available as individual
34*77c1e3ccSAndroid Build Coastguard Workerfunctions.  To see how to use the individual functions, see fast.c
35*77c1e3ccSAndroid Build Coastguard Worker
36*77c1e3ccSAndroid Build Coastguard WorkerLocal Modifications:
37*77c1e3ccSAndroid Build Coastguard WorkerAdd lines to turn off clang formatting for these files
38*77c1e3ccSAndroid Build Coastguard WorkerRemove Fast 10, 11 and 12
39*77c1e3ccSAndroid Build Coastguard WorkerConvert tabs to spaces
40*77c1e3ccSAndroid Build Coastguard WorkerPrefix global functions with "aom_"
41*77c1e3ccSAndroid Build Coastguard WorkerAdd error checking
42*77c1e3ccSAndroid Build Coastguard WorkerAdd output argument to hold the scores of the detected features
43*77c1e3ccSAndroid Build Coastguard WorkerAdd assertion and rewrite comparisons to appease the scan-build static analyzer
44*77c1e3ccSAndroid Build Coastguard WorkerSet output argument *ret_num_corners to -1 to signal memory allocation failure
45