Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
faae5edf
Commit
faae5edf
authored
7 years ago
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #11590 from alalek:calib3d_chessboard_fix2
parents
29421d7d
ad57750d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
8 deletions
+28
-8
calibinit.cpp
modules/calib3d/src/calibinit.cpp
+28
-8
No files found.
modules/calib3d/src/calibinit.cpp
View file @
faae5edf
...
...
@@ -293,7 +293,7 @@ static bool icvBinarizationHistogramBased( Mat & img )
std
::
vector
<
int
>
piHistSmooth
(
iNumBins
,
0
);
std
::
vector
<
int
>
piHistGrad
(
iNumBins
,
0
);
std
::
vector
<
int
>
piAccumSum
(
iNumBins
,
0
);
std
::
vector
<
int
>
piMaxPos
(
20
,
0
);
std
::
vector
<
int
>
piMaxPos
;
piMaxPos
.
reserve
(
2
0
);
int
iThresh
=
0
;
int
iIdx
;
int
iWidth
=
1
;
...
...
@@ -319,7 +319,7 @@ static bool icvBinarizationHistogramBased( Mat & img )
{
if
(
(
piHistGrad
[
i
-
1
]
<
0
)
&&
(
piHistGrad
[
i
]
>
0
)
)
{
piMaxPos
[
iCntMaxima
]
=
i
;
piMaxPos
.
push_back
(
i
)
;
iCntMaxima
++
;
}
}
...
...
@@ -332,15 +332,35 @@ static bool icvBinarizationHistogramBased( Mat & img )
iSumAroundMax
=
piHistSmooth
[
iIdx
-
1
]
+
piHistSmooth
[
iIdx
]
+
piHistSmooth
[
iIdx
+
1
];
if
(
iSumAroundMax
<
iMaxPix1
&&
iIdx
<
64
)
{
for
(
int
j
=
i
;
j
<
iCntMaxima
-
1
;
j
++
)
{
piMaxPos
[
j
]
=
piMaxPos
[
j
+
1
];
}
piMaxPos
.
erase
(
piMaxPos
.
begin
()
+
i
);
iCntMaxima
--
;
i
--
;
}
}
if
(
iCntMaxima
==
1
)
CV_Assert
((
size_t
)
iCntMaxima
==
piMaxPos
.
size
());
PRINTF
(
"HIST: MAXIMA COUNT: %d (%d, %d, %d, ...)
\n
"
,
iCntMaxima
,
iCntMaxima
>
0
?
piMaxPos
[
0
]
:
-
1
,
iCntMaxima
>
1
?
piMaxPos
[
1
]
:
-
1
,
iCntMaxima
>
2
?
piMaxPos
[
2
]
:
-
1
);
if
(
iCntMaxima
==
0
)
{
// no any maxima inside (except 0 and 255 which are not handled above)
// Does image black-write already?
const
int
iMaxPix2
=
iMaxPix
/
2
;
for
(
int
sum
=
0
,
i
=
0
;
i
<
256
;
++
i
)
// select mean intensity
{
sum
+=
piHistIntensity
[
i
];
if
(
sum
>
iMaxPix2
)
{
iThresh
=
i
;
break
;
}
}
}
else
if
(
iCntMaxima
==
1
)
{
iThresh
=
piMaxPos
[
0
]
/
2
;
}
...
...
@@ -380,7 +400,7 @@ static bool icvBinarizationHistogramBased( Mat & img )
int
iMaxVal
=
piHistIntensity
[
piMaxPos
[
iIdxBGMax
]];
//IF TOO CLOSE TO 255, jump to next maximum
if
(
piMaxPos
[
iIdxBGMax
]
>=
250
&&
iIdxBGMax
<
iCntMaxima
)
if
(
piMaxPos
[
iIdxBGMax
]
>=
250
&&
iIdxBGMax
+
1
<
iCntMaxima
)
{
iIdxBGMax
++
;
iMaxVal
=
piHistIntensity
[
piMaxPos
[
iIdxBGMax
]];
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment