Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
ccadad42
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,发现更多精彩内容 >>
提交
ccadad42
编写于
4月 22, 2016
作者:
P
Pavel Rojtberg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fisheye: allow using transposed image and object point arrays
上级
8d4cebe0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
11 deletion
+15
-11
modules/calib3d/src/fisheye.cpp
modules/calib3d/src/fisheye.cpp
+15
-11
未找到文件。
modules/calib3d/src/fisheye.cpp
浏览文件 @
ccadad42
...
...
@@ -1304,12 +1304,12 @@ cv::Mat cv::internal::NormalizePixels(const Mat& imagePoints, const IntrinsicPar
CV_Assert
(
!
imagePoints
.
empty
()
&&
imagePoints
.
type
()
==
CV_64FC2
);
Mat
distorted
((
int
)
imagePoints
.
total
(),
1
,
CV_64FC2
),
undistorted
;
const
Vec2d
*
ptr
=
imagePoints
.
ptr
<
Vec2d
>
(
0
);
Vec2d
*
ptr_d
=
distorted
.
ptr
<
Vec2d
>
(
0
);
const
Vec2d
*
ptr
=
imagePoints
.
ptr
<
Vec2d
>
();
Vec2d
*
ptr_d
=
distorted
.
ptr
<
Vec2d
>
();
for
(
size_t
i
=
0
;
i
<
imagePoints
.
total
();
++
i
)
{
ptr_d
[
i
]
=
(
ptr
[
i
]
-
param
.
c
).
mul
(
Vec2d
(
1.0
/
param
.
f
[
0
],
1.0
/
param
.
f
[
1
]));
ptr_d
[
i
][
0
]
=
ptr_d
[
i
][
0
]
-
param
.
alpha
*
ptr_d
[
i
][
1
];
ptr_d
[
i
][
0
]
-=
param
.
alpha
*
ptr_d
[
i
][
1
];
}
cv
::
fisheye
::
undistortPoints
(
distorted
,
undistorted
,
Matx33d
::
eye
(),
param
.
k
);
return
undistorted
;
...
...
@@ -1317,12 +1317,11 @@ cv::Mat cv::internal::NormalizePixels(const Mat& imagePoints, const IntrinsicPar
void
cv
::
internal
::
InitExtrinsics
(
const
Mat
&
_imagePoints
,
const
Mat
&
_objectPoints
,
const
IntrinsicParams
&
param
,
Mat
&
omckk
,
Mat
&
Tckk
)
{
CV_Assert
(
!
_objectPoints
.
empty
()
&&
_objectPoints
.
type
()
==
CV_64FC3
);
CV_Assert
(
!
_imagePoints
.
empty
()
&&
_imagePoints
.
type
()
==
CV_64FC2
);
Mat
imagePointsNormalized
=
NormalizePixels
(
_imagePoints
.
t
()
,
param
).
reshape
(
1
).
t
();
Mat
objectPoints
=
Mat
(
_objectPoints
.
t
())
.
reshape
(
1
).
t
();
Mat
imagePointsNormalized
=
NormalizePixels
(
_imagePoints
,
param
).
reshape
(
1
).
t
();
Mat
objectPoints
=
_objectPoints
.
reshape
(
1
).
t
();
Mat
objectPointsMean
,
covObjectPoints
;
Mat
Rckk
;
int
Np
=
imagePointsNormalized
.
cols
;
...
...
@@ -1375,9 +1374,12 @@ void cv::internal::CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArr
objectPoints
.
getMat
(
image_idx
).
convertTo
(
object
,
CV_64FC3
);
imagePoints
.
getMat
(
image_idx
).
convertTo
(
image
,
CV_64FC2
);
InitExtrinsics
(
image
,
object
,
param
,
omckk
,
Tckk
);
bool
imT
=
image
.
rows
<
image
.
cols
;
bool
obT
=
object
.
rows
<
object
.
cols
;
InitExtrinsics
(
imT
?
image
.
t
()
:
image
,
obT
?
object
.
t
()
:
object
,
param
,
omckk
,
Tckk
);
ComputeExtrinsicRefine
(
image
,
object
,
omckk
,
Tckk
,
JJ_kk
,
maxIter
,
param
,
thresh_cond
);
ComputeExtrinsicRefine
(
!
imT
?
image
.
t
()
:
image
,
!
obT
?
object
.
t
()
:
object
,
omckk
,
Tckk
,
JJ_kk
,
maxIter
,
param
,
thresh_cond
);
if
(
check_cond
)
{
SVD
svd
(
JJ_kk
,
SVD
::
NO_UV
);
...
...
@@ -1388,7 +1390,6 @@ void cv::internal::CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArr
}
}
void
cv
::
internal
::
ComputeJacobians
(
InputArrayOfArrays
objectPoints
,
InputArrayOfArrays
imagePoints
,
const
IntrinsicParams
&
param
,
InputArray
omc
,
InputArray
Tc
,
const
int
&
check_cond
,
const
double
&
thresh_cond
,
Mat
&
JJ2
,
Mat
&
ex3
)
...
...
@@ -1410,12 +1411,13 @@ void cv::internal::ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayO
objectPoints
.
getMat
(
image_idx
).
convertTo
(
object
,
CV_64FC3
);
imagePoints
.
getMat
(
image_idx
).
convertTo
(
image
,
CV_64FC2
);
bool
imT
=
image
.
rows
<
image
.
cols
;
Mat
om
(
omc
.
getMat
().
col
(
image_idx
)),
T
(
Tc
.
getMat
().
col
(
image_idx
));
std
::
vector
<
Point2d
>
x
;
Mat
jacobians
;
projectPoints
(
object
,
x
,
om
,
T
,
param
,
jacobians
);
Mat
exkk
=
image
.
t
(
)
-
Mat
(
x
);
Mat
exkk
=
(
imT
?
image
.
t
()
:
image
)
-
Mat
(
x
);
Mat
A
(
jacobians
.
rows
,
9
,
CV_64FC1
);
jacobians
.
colRange
(
0
,
4
).
copyTo
(
A
.
colRange
(
0
,
4
));
...
...
@@ -1469,11 +1471,13 @@ void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputA
objectPoints
.
getMat
(
image_idx
).
convertTo
(
object
,
CV_64FC3
);
imagePoints
.
getMat
(
image_idx
).
convertTo
(
image
,
CV_64FC2
);
bool
imT
=
image
.
rows
<
image
.
cols
;
Mat
om
(
omc
.
getMat
().
col
(
image_idx
)),
T
(
Tc
.
getMat
().
col
(
image_idx
));
std
::
vector
<
Point2d
>
x
;
projectPoints
(
object
,
x
,
om
,
T
,
params
,
noArray
());
Mat
ex_
=
image
.
t
(
)
-
Mat
(
x
);
Mat
ex_
=
(
imT
?
image
.
t
()
:
image
)
-
Mat
(
x
);
ex_
.
copyTo
(
ex
.
rowRange
(
ex_
.
rows
*
image_idx
,
ex_
.
rows
*
(
image_idx
+
1
)));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录