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
11ddb933
Commit
11ddb933
authored
Nov 23, 2017
by
elenagvo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add HAL for adaptiveThreshold
parent
c4b158ff
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
8 deletions
+32
-8
imgproc.hpp
modules/imgproc/include/opencv2/imgproc.hpp
+2
-1
perf_threshold.cpp
modules/imgproc/perf/perf_threshold.cpp
+9
-6
hal_replacement.hpp
modules/imgproc/src/hal_replacement.hpp
+17
-0
thresh.cpp
modules/imgproc/src/thresh.cpp
+4
-1
No files found.
modules/imgproc/include/opencv2/imgproc.hpp
View file @
11ddb933
...
@@ -2805,7 +2805,8 @@ The function can process the image in-place.
...
@@ -2805,7 +2805,8 @@ The function can process the image in-place.
@param src Source 8-bit single-channel image.
@param src Source 8-bit single-channel image.
@param dst Destination image of the same size and the same type as src.
@param dst Destination image of the same size and the same type as src.
@param maxValue Non-zero value assigned to the pixels for which the condition is satisfied
@param maxValue Non-zero value assigned to the pixels for which the condition is satisfied
@param adaptiveMethod Adaptive thresholding algorithm to use, see cv::AdaptiveThresholdTypes
@param adaptiveMethod Adaptive thresholding algorithm to use, see cv::AdaptiveThresholdTypes.
The BORDER_REPLICATE | BORDER_ISOLATED is used to process boundaries.
@param thresholdType Thresholding type that must be either THRESH_BINARY or THRESH_BINARY_INV,
@param thresholdType Thresholding type that must be either THRESH_BINARY or THRESH_BINARY_INV,
see cv::ThresholdTypes.
see cv::ThresholdTypes.
@param blockSize Size of a pixel neighborhood that is used to calculate a threshold value for the
@param blockSize Size of a pixel neighborhood that is used to calculate a threshold value for the
...
...
modules/imgproc/perf/perf_threshold.cpp
View file @
11ddb933
...
@@ -60,15 +60,16 @@ PERF_TEST_P(Size_Only, threshold_otsu, testing::Values(TYPICAL_MAT_SIZES))
...
@@ -60,15 +60,16 @@ PERF_TEST_P(Size_Only, threshold_otsu, testing::Values(TYPICAL_MAT_SIZES))
CV_ENUM
(
AdaptThreshType
,
THRESH_BINARY
,
THRESH_BINARY_INV
)
CV_ENUM
(
AdaptThreshType
,
THRESH_BINARY
,
THRESH_BINARY_INV
)
CV_ENUM
(
AdaptThreshMethod
,
ADAPTIVE_THRESH_MEAN_C
,
ADAPTIVE_THRESH_GAUSSIAN_C
)
CV_ENUM
(
AdaptThreshMethod
,
ADAPTIVE_THRESH_MEAN_C
,
ADAPTIVE_THRESH_GAUSSIAN_C
)
typedef
std
::
tr1
::
tuple
<
Size
,
AdaptThreshType
,
AdaptThreshMethod
,
int
>
Size_AdaptThreshType_AdaptThreshMethod_BlockSize
_t
;
typedef
std
::
tr1
::
tuple
<
Size
,
AdaptThreshType
,
AdaptThreshMethod
,
int
,
double
>
Size_AdaptThreshType_AdaptThreshMethod_BlockSize_Delta
_t
;
typedef
perf
::
TestBaseWithParam
<
Size_AdaptThreshType_AdaptThreshMethod_BlockSize_
t
>
Size_AdaptThreshType_AdaptThreshMethod_BlockSize
;
typedef
perf
::
TestBaseWithParam
<
Size_AdaptThreshType_AdaptThreshMethod_BlockSize_
Delta_t
>
Size_AdaptThreshType_AdaptThreshMethod_BlockSize_Delta
;
PERF_TEST_P
(
Size_AdaptThreshType_AdaptThreshMethod_BlockSize
,
adaptiveThreshold
,
PERF_TEST_P
(
Size_AdaptThreshType_AdaptThreshMethod_BlockSize
_Delta
,
adaptiveThreshold
,
testing
::
Combine
(
testing
::
Combine
(
testing
::
Values
(
TYPICAL_MAT_SIZES
),
testing
::
Values
(
TYPICAL_MAT_SIZES
),
AdaptThreshType
::
all
(),
AdaptThreshType
::
all
(),
AdaptThreshMethod
::
all
(),
AdaptThreshMethod
::
all
(),
testing
::
Values
(
3
,
5
)
testing
::
Values
(
3
,
5
),
testing
::
Values
(
0.0
,
10.0
)
)
)
)
)
{
{
...
@@ -76,12 +77,14 @@ PERF_TEST_P(Size_AdaptThreshType_AdaptThreshMethod_BlockSize, adaptiveThreshold,
...
@@ -76,12 +77,14 @@ PERF_TEST_P(Size_AdaptThreshType_AdaptThreshMethod_BlockSize, adaptiveThreshold,
AdaptThreshType
adaptThreshType
=
get
<
1
>
(
GetParam
());
AdaptThreshType
adaptThreshType
=
get
<
1
>
(
GetParam
());
AdaptThreshMethod
adaptThreshMethod
=
get
<
2
>
(
GetParam
());
AdaptThreshMethod
adaptThreshMethod
=
get
<
2
>
(
GetParam
());
int
blockSize
=
get
<
3
>
(
GetParam
());
int
blockSize
=
get
<
3
>
(
GetParam
());
double
C
=
get
<
4
>
(
GetParam
());
double
maxValue
=
theRNG
().
uniform
(
1
,
254
);
double
maxValue
=
theRNG
().
uniform
(
1
,
254
);
double
C
=
10.0
;
int
type
=
CV_8UC1
;
int
type
=
CV_8UC1
;
Mat
src
(
sz
,
type
);
Mat
src_full
(
cv
::
Size
(
sz
.
width
+
2
,
sz
.
height
+
2
),
type
);
Mat
src
=
src_full
(
cv
::
Rect
(
1
,
1
,
sz
.
width
,
sz
.
height
));
Mat
dst
(
sz
,
type
);
Mat
dst
(
sz
,
type
);
declare
.
in
(
src
,
WARMUP_RNG
).
out
(
dst
);
declare
.
in
(
src
,
WARMUP_RNG
).
out
(
dst
);
...
...
modules/imgproc/src/hal_replacement.hpp
View file @
11ddb933
...
@@ -630,6 +630,23 @@ inline int hal_ni_medianBlur(const uchar* src_data, size_t src_step, uchar* dst_
...
@@ -630,6 +630,23 @@ inline int hal_ni_medianBlur(const uchar* src_data, size_t src_step, uchar* dst_
#define cv_hal_medianBlur hal_ni_medianBlur
#define cv_hal_medianBlur hal_ni_medianBlur
//! @endcond
//! @endcond
/**
@brief Calculates adaptive threshold
@param src_data,src_step Source image
@param dst_data,dst_step Destination image
@param width,height Source image dimensions
@param maxValue Value assigned to the pixels for which the condition is satisfied
@param adaptiveMethod Adaptive thresholding algorithm
@param thresholdType Thresholding type
@param blockSize Size of a pixel neighborhood that is used to calculate a threshold value
@param C Constant subtracted from the mean or weighted mean
*/
inline
int
hal_ni_adaptiveThreshold
(
const
uchar
*
src_data
,
size_t
src_step
,
uchar
*
dst_data
,
size_t
dst_step
,
int
width
,
int
height
,
double
maxValue
,
int
adaptiveMethod
,
int
thresholdType
,
int
blockSize
,
double
C
)
{
return
CV_HAL_ERROR_NOT_IMPLEMENTED
;
}
//! @cond IGNORED
#define cv_hal_adaptiveThreshold hal_ni_adaptiveThreshold
//! @endcond
//! @}
//! @}
#if defined __GNUC__
#if defined __GNUC__
...
...
modules/imgproc/src/thresh.cpp
View file @
11ddb933
...
@@ -1530,6 +1530,9 @@ void cv::adaptiveThreshold( InputArray _src, OutputArray _dst, double maxValue,
...
@@ -1530,6 +1530,9 @@ void cv::adaptiveThreshold( InputArray _src, OutputArray _dst, double maxValue,
return
;
return
;
}
}
CALL_HAL
(
adaptiveThreshold
,
cv_hal_adaptiveThreshold
,
src
.
data
,
src
.
step
,
dst
.
data
,
dst
.
step
,
src
.
cols
,
src
.
rows
,
maxValue
,
method
,
type
,
blockSize
,
delta
);
Mat
mean
;
Mat
mean
;
if
(
src
.
data
!=
dst
.
data
)
if
(
src
.
data
!=
dst
.
data
)
...
@@ -1537,7 +1540,7 @@ void cv::adaptiveThreshold( InputArray _src, OutputArray _dst, double maxValue,
...
@@ -1537,7 +1540,7 @@ void cv::adaptiveThreshold( InputArray _src, OutputArray _dst, double maxValue,
if
(
method
==
ADAPTIVE_THRESH_MEAN_C
)
if
(
method
==
ADAPTIVE_THRESH_MEAN_C
)
boxFilter
(
src
,
mean
,
src
.
type
(),
Size
(
blockSize
,
blockSize
),
boxFilter
(
src
,
mean
,
src
.
type
(),
Size
(
blockSize
,
blockSize
),
Point
(
-
1
,
-
1
),
true
,
BORDER_REPLICATE
);
Point
(
-
1
,
-
1
),
true
,
BORDER_REPLICATE
|
BORDER_ISOLATED
);
else
if
(
method
==
ADAPTIVE_THRESH_GAUSSIAN_C
)
else
if
(
method
==
ADAPTIVE_THRESH_GAUSSIAN_C
)
{
{
Mat
srcfloat
,
meanfloat
;
Mat
srcfloat
,
meanfloat
;
...
...
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