Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
53c39a7a
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
53c39a7a
编写于
2月 06, 2012
作者:
V
Vadim Pisarevsky
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added getGaborKernel function
上级
b3b80bc3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
103 addition
and
0 deletion
+103
-0
modules/imgproc/include/opencv2/imgproc/imgproc.hpp
modules/imgproc/include/opencv2/imgproc/imgproc.hpp
+5
-0
modules/imgproc/src/gabor.cpp
modules/imgproc/src/gabor.cpp
+98
-0
未找到文件。
modules/imgproc/include/opencv2/imgproc/imgproc.hpp
浏览文件 @
53c39a7a
...
...
@@ -347,6 +347,11 @@ CV_EXPORTS Ptr<FilterEngine> createBoxFilter( int srcType, int dstType, Size ksi
Point
anchor
=
Point
(
-
1
,
-
1
),
bool
normalize
=
true
,
int
borderType
=
BORDER_DEFAULT
);
//! returns the Gabor kernel with the specified parameters
CV_EXPORTS_W
Mat
getGaborKernel
(
Size
ksize
,
double
sigma
,
double
theta
,
double
lambd
,
double
gamma
,
double
psi
=
CV_PI
*
0.5
,
int
ktype
=
CV_64F
);
//! type of morphological operation
enum
{
MORPH_ERODE
=
CV_MOP_ERODE
,
MORPH_DILATE
=
CV_MOP_DILATE
,
MORPH_OPEN
=
CV_MOP_OPEN
,
MORPH_CLOSE
=
CV_MOP_CLOSE
,
...
...
modules/imgproc/src/gabor.cpp
0 → 100644
浏览文件 @
53c39a7a
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009-2012, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's 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.
//
// * The name of the copyright holders may not 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 Intel Corporation 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.
//
//M*/
#include "precomp.hpp"
/*
Gabor filters and such. To be greatly extended to have full texture analysis.
For the formulas and the explanation of the parameters see:
http://en.wikipedia.org/wiki/Gabor_filter
*/
cv
::
Mat
cv
::
getGaborKernel
(
Size
ksize
,
double
sigma
,
double
theta
,
double
lambd
,
double
gamma
,
double
psi
,
int
ktype
)
{
double
sigma_x
=
sigma
;
double
sigma_y
=
sigma
/
gamma
;
int
nstds
=
3
;
int
xmin
,
xmax
,
ymin
,
ymax
;
double
c
=
cos
(
theta
),
s
=
sin
(
theta
);
if
(
ksize
.
width
>
0
)
xmax
=
ksize
.
width
/
2
;
else
xmax
=
std
::
max
(
fabs
(
nstds
*
sigma_x
*
c
),
fabs
(
nstds
*
sigma_y
*
s
));
if
(
ksize
.
height
>
0
)
ymax
=
ksize
.
height
/
2
;
else
ymax
=
std
::
max
(
fabs
(
nstds
*
sigma_x
*
s
),
fabs
(
nstds
*
sigma_y
*
c
));
xmin
=
-
xmax
;
ymin
=
-
ymax
;
CV_Assert
(
ktype
==
CV_32F
||
ktype
==
CV_64F
);
Mat
kernel
(
ymax
-
ymin
+
1
,
xmax
-
xmin
+
1
,
ktype
);
double
scale
=
1
/
(
2
*
CV_PI
*
sigma_x
*
sigma_y
);
double
ex
=
-
0.5
/
(
sigma_x
*
sigma_x
);
double
ey
=
-
0.5
/
(
sigma_y
*
sigma_y
);
double
cscale
=
CV_PI
*
2
/
lambd
;
for
(
int
y
=
ymin
;
y
<=
ymax
;
y
++
)
for
(
int
x
=
xmin
;
x
<=
xmax
;
x
++
)
{
double
xr
=
x
*
c
+
y
*
s
;
double
yr
=
-
x
*
s
+
y
*
c
;
double
v
=
scale
*
exp
(
ex
*
xr
*
xr
+
ey
*
yr
*
yr
)
*
cos
(
cscale
*
xr
+
psi
);
if
(
ktype
==
CV_32F
)
kernel
.
at
<
float
>
(
ymax
-
y
,
xmax
-
x
)
=
(
float
)
v
;
else
kernel
.
at
<
double
>
(
ymax
-
y
,
xmax
-
x
)
=
v
;
}
return
kernel
;
}
/* End of file. */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录