资源简介
基础的图像处理算法C语言源码,很方便移植到各种arm处理器使用
代码片段和文件信息
#include
#include
#include “imlib.h“
#include “xalloc.h“
#include “fb_alloc.h“
#include “gc.h“
#define MAX_ROW (480)
#define MAX_CORNERS (2000)
#define Compare(X Y) ((X)>=(Y))
typedef struct {
uint16_t x;
uint16_t y;
uint16_t score;
} corner_t;
static int s_width=-1;
static int_fast16_t s_offset0;
static int_fast16_t s_offset1;
static int_fast16_t s_offset2;
static int_fast16_t s_offset3;
static int_fast16_t s_offset4;
static int_fast16_t s_offset5;
static int_fast16_t s_offset6;
static int_fast16_t s_offset7;
static corner_t *agast58_detect(image_t *img int b int* num_corners rectangle_t *roi);
static int agast58_score(const unsigned char* p int bstart);
static void nonmax_suppression(corner_t *corners int num_corners array_t *keypoints);
static kp_t *alloc_keypoint(uint16_t x uint16_t y uint16_t score)
{
// Note must set keypoint descriptor to zeros
kp_t *kpt = xalloc0(sizeof*kpt);
kpt->x = x;
kpt->y = y;
kpt->score = score;
return kpt;
}
static void init5_8_pattern(int image_width)
{
if(image_width==s_width)
return;
s_width=image_width;
s_offset0=(-1)+(0)*s_width;
s_offset1=(-1)+(-1)*s_width;
s_offset2=(0)+(-1)*s_width;
s_offset3=(1)+(-1)*s_width;
s_offset4=(1)+(0)*s_width;
s_offset5=(1)+(1)*s_width;
s_offset6=(0)+(1)*s_width;
s_offset7=(-1)+(1)*s_width;
}
void agast_detect(image_t *image array_t *keypoints int threshold rectangle_t *roi)
{
int num_corners=0;
init5_8_pattern(image->w);
// Find corners
corner_t *corners = agast58_detect(image threshold &num_corners roi);
if (num_corners) {
// Score corners
for(int i=0; i corners[i].score = agast58_score(image->pixels + (corners[i].y*image->w + corners[i].x) threshold);
}
// Non-max suppression
nonmax_suppression(corners num_corners keypoints);
}
// Free corners;
fb_free();
}
static void nonmax_suppression(corner_t *corners int num_corners array_t *keypoints)
{
gc_info_t info;
int last_row;
int16_t row_start[MAX_ROW+1];
const int sz = num_corners;
/* Point above points (roughly) to the pixel above
the one of interest if there is a feature there.*/
int point_above = 0;
int point_below = 0;
/* Find where each row begins (the corners are output in raster scan order).
A beginning of -1 signifies that there are no corners on that row. */
last_row = corners[sz-1].y;
for(int i=0; i row_start[i] = -1;
}
for (int i=0 prev_row=-1; i corner_t *c = &corners[i];
if (c->y != prev_row) {
row_start[c->y] = i;
prev_row = c->y;
}
}
for(int i=0; i corner_t pos = corners[i];
uint16_t score = pos.score;
/*Check left */
if (i > 0) {
if (corners[i-1].x == pos.x-1 && corners[i-1].y == pos.y && Compare(corners[i-1].score sco
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 32434 2018-12-10 11:20 img\agast.c
文件 371793 2018-12-10 11:20 img\apriltag.c
文件 35475 2018-12-10 11:20 img\binary.c
文件 48970 2018-12-10 11:20 img\blob.c
文件 9698 2018-12-10 11:20 img\bmp.c
文件 215433 2018-12-10 11:20 img\cascade.h
文件 20811 2018-12-10 11:20 img\clahe.c
文件 10600 2018-12-10 11:20 img\collections.c
文件 3342 2018-12-10 11:20 img\collections.h
文件 194820 2018-12-10 11:20 img\dmtx.c
文件 13132 2018-12-10 11:20 img\draw.c
文件 5043 2018-12-10 11:20 img\edge.c
文件 4222 2018-12-10 11:20 img\eye.c
文件 205469 2018-12-10 11:20 img\fast.c
文件 35735 2018-12-10 11:20 img\fft.c
文件 1873 2018-12-10 11:20 img\fft.h
文件 69042 2018-12-10 11:20 img\filter.c
文件 4031 2018-12-10 11:20 img\fmath.c
文件 697 2018-12-10 11:20 img\fmath.h
文件 11334 2018-12-10 11:20 img\font.c
文件 406 2018-12-10 11:20 img\font.h
文件 7950 2018-12-10 11:20 img\fsort.c
文件 349 2018-12-10 11:20 img\fsort.h
文件 3700 2018-12-10 11:20 img\gif.c
文件 11016 2018-12-10 11:20 img\haar.c
文件 4295 2018-12-10 11:20 img\hog.c
文件 36078 2018-12-10 11:20 img\hough.c
文件 30502 2018-12-10 11:20 img\imlib.c
文件 52985 2018-12-10 11:20 img\imlib.h
文件 3233 2018-12-10 11:20 img\integral.c
............此处省略32个文件信息
相关资源
- 纯C语言+libjpeg实现最简单jpeg图片解码
- YUV合成 YUV裁剪 YUV_to_JPEG 纯c语言编写
- 基于C++的JPEG图片信息隐藏及提取
- FFT算法的c语言实现
- VC6 实现FFT 显示频谱
- FFT C语言实现
- MSP430单片机实现FFT(全国大学生电子
- C++版本的FFT傅立叶变换程序源代码
- C++实现的JPEG压缩算法
- FFT算法的C语言实现可以直接用在单片
- 行人检测 opencv
- C语言实现傅里叶变换
- 自己写的HOG+SVM用于视频中的人体检测
- 基于C语言的快速傅里叶变换FFT算法含
- VC++解析并显示JPEG图片showjpeg.rar
- C语言实现FFT和IFFT
- 混合基fft变换
- FFT的C语言实现代码
- c语言jpeg压缩库
- ifft的c语言编程
- 16点基4dit-fft程序c++
- 用C语言实现FFT算法的编写,可与DFT时
- 快速傅里叶算法FFTc语言实现
- FFT 和IFFT基二的C语言和MATLAB实现
- 超级效率的FFT的代码(C语言)
- JPEG编解码的c语言实现
- DFT FFT 的C语言实现方法及程序
- NUFFT的matlab算法
- 图像序列编码为MJPEG视频文件
- 用fft求互相关,速度更快,c语言实现
评论
共有 条评论