/* This is AGAST and OAST, an optimal and accelerated corner detector
based on the accelerated segment tests
Below is the original copyright and the references */
/*
Copyright (C) 2010 Elmar Mair
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
*Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
*Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
*Neither the name of the University of Cambridge nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
The references are:
* Adaptive and Generic Corner Detection Based on the Accelerated Segment Test,
Elmar Mair and Gregory D. Hager and Darius Burschka
and Michael Suppa and Gerhard Hirzinger ECCV 2010
URL: http://www6.in.tum.de/Main/ResearchAgast
*/
#include "agast_score.hpp"
#ifdef _MSC_VER
#pragma warning( disable : 4127 )
#endif
namespace cv
{
void makeAgastOffsets(int pixel[16], int rowStride, int type)
{
static const int offsets16[][2] =
{
{-3, 0}, {-3, -1}, {-2, -2}, {-1, -3}, {0, -3}, { 1, -3}, { 2, -2}, { 3, -1},
{ 3, 0}, { 3, 1}, { 2, 2}, { 1, 3}, {0, 3}, {-1, 3}, {-2, 2}, {-3, 1}
};
static const int offsets12d[][2] =
{
{-3, 0}, {-2, -1}, {-1, -2}, {0, -3}, { 1, -2}, { 2, -1},
{ 3, 0}, { 2, 1}, { 1, 2}, {0, 3}, {-1, 2}, {-2, 1}
};
static const int offsets12s[][2] =
{
{-2, 0}, {-2, -1}, {-1, -2}, {0, -2}, { 1, -2}, { 2, -1},
{ 2, 0}, { 2, 1}, { 1, 2}, {0, 2}, {-1, 2}, {-2, 1}
};
static const int offsets8[][2] =
{
{-1, 0}, {-1, -1}, {0, -1}, { 1, -1},
{ 1, 0}, { 1, 1}, {0, 1}, {-1, 1}
};
const int (*offsets)[2] = type == AgastFeatureDetector::OAST_9_16 ? offsets16 :
type == AgastFeatureDetector::AGAST_7_12d ? offsets12d :
type == AgastFeatureDetector::AGAST_7_12s ? offsets12s :
type == AgastFeatureDetector::AGAST_5_8 ? offsets8 : 0;
CV_Assert(pixel && offsets);
int k = 0;
for( ; k < 16; k++ )
pixel[k] = offsets[k][0] + offsets[k][1] * rowStride;
}
// 16 pixel mask
template<>
int agast_cornerScore<AgastFeatureDetector::OAST_9_16>(const uchar* ptr, const int pixel[], int threshold)
{
int bmin = threshold;
int bmax = 255;
int b_test = (bmax + bmin) / 2;
short offset0 = (short) pixel[0];
short offset1 = (short) pixel[1];
short offset2 = (short) pixel[2];
short offset3 = (short) pixel[3];
short offset4 = (short) pixel[4];
short offset5 = (short) pixel[5];
short offset6 = (short) pixel[6];
short offset7 = (short) pixel[7];
short offset8 = (short) pixel[8];
short offset9 = (short) pixel[9];
short offset10 = (short) pixel[10];
short offset11 = (short) pixel[11];
short offset12 = (short) pixel[12];
short offset13 = (short) pixel[13];
short offset14 = (short) pixel[14];
short offset15 = (short) pixel[15];
while(true)
{
const int cb = *ptr + b_test;
const int c_b = *ptr - b_test;
if(ptr[offset0] > cb)
if(ptr[offset2] > cb)
if(ptr[offset4] > cb)
if(ptr[offset5] > cb)
if(ptr[offset7] > cb)
if(ptr[offset3] > cb)
if(ptr[offset1] > cb)
if(ptr[offset6] > cb)
if(ptr[offset8] > cb)
goto is_a_corner;
else
if(ptr[offset15] > cb)
goto is_a_corner;
else
goto is_not_a_corner;
else
if(ptr[offset13] > cb)
if(ptr[offset14] > cb)
if(ptr[offset15] > cb)
goto is_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
if(ptr[offset8] > cb)
if(ptr[offset9] > cb)
if(ptr[offset10] > cb)
if(ptr[offset6] > cb)
goto is_a_corner;
else
if(ptr[offset11] > cb)
if(ptr[offset12] > cb)
if(ptr[offset13] > cb)
if(ptr[offset14] > cb)
if(ptr[offset15] > cb)
goto is_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
if(ptr[offset10] > cb)
if(ptr[offset11] > cb)
if(ptr[offset12] > cb)
if(ptr[offset8] > cb)
if(ptr[offset9] > cb)
if(ptr[offset6] > cb)
goto is_a_corner;
else
if(ptr[offset13] > cb)
if(ptr[offset14] > cb)
if(ptr[offset15] > cb)
goto is_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
goto is_not_a_corner;
else
if(ptr[offset1] > cb)
if(ptr[offset13] > cb)
if(ptr
没有合适的资源?快使用搜索试试~ 我知道了~
opencv3.4.2源码
共5920个文件
cpp:1364个
png:732个
h:583个
4星 · 超过85%的资源 需积分: 10 46 下载量 7 浏览量
2018-07-20
20:09:57
上传
评论
收藏 81.89MB 7Z 举报
温馨提示
opencv官方源码3.4.2版本。2018年七月更新,可自行编译所需要的库。
资源推荐
资源详情
资源评论
收起资源包目录
opencv3.4.2源码 (5920个子文件)
OpenCVEngineInterface.aidl 1KB
OpenCVEngineInterface.aidl 1KB
README.android 41B
Package.appxmanifest 2KB
Package.appxmanifest 2KB
Package.appxmanifest 2KB
package.appxmanifest 1KB
Package.appxmanifest 1KB
Package.appxmanifest 1KB
Package.appxmanifest 1KB
vtest.avi 7.75MB
tree.avi 1.19MB
Megamind.avi 1.13MB
Megamind_bugy.avi 841KB
run_agast_tables.bat 1KB
setup_winrt.bat 82B
opencv.bib 35KB
calib3d.bib 1KB
LICENSE.BSD 1KB
jidctint.c 186KB
pngrtran.c 170KB
jfdctint.c 159KB
png.c 159KB
tif_dirread.c 151KB
pngrutil.c 148KB
pngread.c 143KB
jidctint.c 105KB
tif_fax3sm.c 104KB
tif_dirwrite.c 92KB
jpc_qmfb.c 89KB
jpc_enc.c 84KB
pngwutil.c 82KB
enc_mips_dsp_r2.c 82KB
tif_jpeg.c 82KB
tif_getimage.c 81KB
deflate.c 79KB
tif_ojpeg.c 79KB
pngwrite.c 77KB
jpc_dec.c 70KB
dec_neon.c 69KB
vp8l_enc.c 69KB
anim_encode.c 59KB
vp8l_dec.c 58KB
inflate.c 55KB
enc_sse2.c 54KB
jas_icc.c 53KB
pngset.c 52KB
jpc_cs.c 51KB
tif_read.c 51KB
tif_dir.c 51KB
tif_dirinfo.c 51KB
dec_mips_dsp_r2.c 51KB
quant_enc.c 49KB
jquant2.c 49KB
jdhuff.c 49KB
jquant2.c 49KB
jchuff.c 48KB
dec_sse2.c 48KB
ittnotify_static.c 47KB
tif_fax3.c 47KB
jdmarker.c 46KB
tif_luv.c 46KB
jmemmgr.c 45KB
picture_csp_enc.c 44KB
tif_pixarlog.c 44KB
trees.c 44KB
jdmarker.c 43KB
cpu-features.c 43KB
jas_image.c 43KB
jmemmgr.c 41KB
dec_msa.c 41KB
lossless_enc.c 41KB
jas_cm.c 40KB
histogram_enc.c 39KB
lossless_mips_dsp_r2.c 39KB
enc_neon.c 37KB
enc_mips32.c 35KB
jchuff.c 35KB
backward_references_enc.c 35KB
pngget.c 35KB
yuv_sse2.c 34KB
tif_lzw.c 34KB
enc_msa.c 33KB
jas_stream.c 33KB
jquant1.c 33KB
pngpread.c 32KB
demux.c 32KB
predictor_enc.c 32KB
jquant1.c 31KB
jcmaster.c 31KB
jpc_t1enc.c 31KB
idec_dec.c 31KB
lossless_sse2.c 30KB
jpc_t1dec.c 30KB
lossless_enc_sse2.c 30KB
webp_dec.c 30KB
jcarith.c 30KB
backward_references_cost_enc.c 30KB
pngerror.c 29KB
jdcolor.c 29KB
共 5920 条
- 1
- 2
- 3
- 4
- 5
- 6
- 60
资源评论
- Howardk2019-08-14可以。。。。
blanklog
- 粉丝: 35
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功