Skip to content

Commit

Permalink
Adding modifications as per feedback by Alexander
Browse files Browse the repository at this point in the history
  • Loading branch information
adsha-quic committed Mar 3, 2025
1 parent 423e3e1 commit 3c63f54
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 38 deletions.
2 changes: 1 addition & 1 deletion modules/fastcv/include/opencv2/fastcv/pyramid.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace fastcv {
* @param dx Horizontal Sobel gradient pyramid of the same size as pyr
* @param dy Verical Sobel gradient pyramid of the same size as pyr
* @param outType Type of output data, can be CV_8S, CV_16S or CV_32F
* @param clearBuffers If set to 1, output buffers are set to 0 before computation, to remove garbage values.
* @param clearBuffers If set to 1, output buffers are set to 0 before computation, to remove garbage values.
*/
CV_EXPORTS_W void sobelPyramid(InputArrayOfArrays pyr, OutputArrayOfArrays dx, OutputArrayOfArrays dy, int outType = CV_8S,
int clearBuffers = 0);
Expand Down
16 changes: 8 additions & 8 deletions modules/fastcv/src/arithm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ void arithmetic_op(InputArray _src1, InputArray _src2, OutputArray _dst, int op)
Mat dst = _dst.getMat();

INITIALIZATION_CHECK;

fcvConvertPolicy policy = FASTCV_CONVERT_POLICY_SATURATE;

int nStripes = cv::getNumThreads();

int func = FCV_OPTYPE(_src1.depth(), op);
switch(func)
{
Expand Down Expand Up @@ -118,23 +118,23 @@ void gemm(InputArray _src1, InputArray _src2, OutputArray _dst, float alpha, Inp

CV_Assert(!_src2.empty() && _src2.type() == CV_32FC1);
Mat src2 = _src2.getMat();

bool isSrc3 = !_src3.empty();

Mat src3 = _src3.getMat();

_dst.create(_src1.rows(), _src2.cols(), CV_32FC1);

Mat dst = _dst.getMat();

CV_Assert(!FCV_CMP_EQ(alpha,0));
CV_Assert(!FCV_CMP_EQ(alpha,0));

cv::Mat dst_temp1, dst_temp2;
float *dstp = NULL;
bool inplace = false;
size_t dst_stride;
fcvStatus status = FASTCV_SUCCESS;

int n = src1.cols, m = src1.rows, k = src2.cols;

INITIALIZATION_CHECK;
Expand Down
32 changes: 16 additions & 16 deletions modules/fastcv/src/channel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace cv {
namespace fastcv {

void merge(InputArrayOfArrays _mv, OutputArray _dst)
{
{
CV_Assert(!_mv.empty());
std::vector<cv::Mat> mv;
_mv.getMatVector(mv);
Expand All @@ -20,17 +20,17 @@ void merge(InputArrayOfArrays _mv, OutputArray _dst)
CV_Assert(count == 2 || count == 3 || count == 4);
CV_Assert(!mv[0].empty());
CV_Assert(mv[0].dims <= 2);

for(int i = 0; i < count; i++ )
{
CV_Assert(mv[i].size == mv[0].size && mv[i].step[0] == mv[0].step[0] && mv[i].type() == CV_8UC1);
}

_dst.create(mv[0].dims, mv[0].size, CV_MAKE_TYPE(CV_8U,count));
Mat dst = _dst.getMat();

INITIALIZATION_CHECK;

int nStripes = cv::getNumThreads();

switch(count)
Expand All @@ -45,7 +45,7 @@ void merge(InputArrayOfArrays _mv, OutputArray _dst)
}, nStripes);

break;

case 3:
cv::parallel_for_(cv::Range(0, mv[0].rows), [&](const cv::Range &range){
int height_ = range.end - range.start;
Expand All @@ -57,7 +57,7 @@ void merge(InputArrayOfArrays _mv, OutputArray _dst)
}, nStripes);

break;

case 4:
cv::parallel_for_(cv::Range(0, mv[0].rows), [&](const cv::Range &range){
int height_ = range.end - range.start;
Expand All @@ -78,31 +78,31 @@ void merge(InputArrayOfArrays _mv, OutputArray _dst)
}

void split(InputArray _src, OutputArrayOfArrays _mv)
{
{
CV_Assert(!_src.empty());
Mat src = _src.getMat();

int depth = src.depth(), cn = src.channels();

std::vector<cv::Mat> mv(cn);
_mv.getMatVector(mv);

CV_Assert(depth == CV_8U && (cn == 2 || cn == 3 || cn == 4));
CV_Assert(src.dims <= 2);

for( int k = 0; k < cn; k++ )
{
mv[k].create(src.dims, src.size, depth);
_mv.create(src.dims, src.size, depth, k);
}


std::vector<cv::Mat> mv(cn);
_mv.getMatVector(mv);

INITIALIZATION_CHECK;

int nStripes = cv::getNumThreads();

if(src.rows * src.cols < 640 * 480)
if(cn == 3 || cn == 4)
nStripes = 1;

if(cn == 2)
{
cv::parallel_for_(cv::Range(0, src.rows), [&](const cv::Range &range){
Expand All @@ -123,7 +123,7 @@ void split(InputArray _src, OutputArrayOfArrays _mv)
uchar* yD = mv[i].data + static_cast<size_t>(range.start) * mv[i].step[0];
fcvChannelExtractu8(yS, src.cols, height_, src.step[0], NULL, 0, NULL, 0, (fcvChannelType)i, (fcvImageFormat)FASTCV_RGB, yD, mv[i].step[0]);
}, nStripes);
}
}
}
else if(cn == 4)
{
Expand All @@ -135,7 +135,7 @@ void split(InputArray _src, OutputArrayOfArrays _mv)
uchar* yD = mv[i].data + static_cast<size_t>(range.start) * mv[i].step[0];
fcvChannelExtractu8(yS, src.cols, height_, src.step[0], NULL, 0, NULL, 0, (fcvChannelType)i, (fcvImageFormat)FASTCV_RGBX, yD, mv[i].step[0]);
}, nStripes);
}
}
}
}

Expand Down
4 changes: 2 additions & 2 deletions modules/fastcv/src/pyramid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,13 @@ void sobelPyramid(InputArrayOfArrays _pyr, OutputArrayOfArrays _dx, OutputArrayO
}

if(clearBuffers == 1)
{
{
for(size_t i=0; i<nLevels; i++)
{
memset((void*)ldx[i].ptr, 0, ldx[i].width * ldx[i].height * pyrElemSz);
memset((void*)ldy[i].ptr, 0, ldy[i].width * ldy[i].height * pyrElemSz);
}
}
}

int returnCode = -1;
switch (outType)
Expand Down
2 changes: 1 addition & 1 deletion modules/fastcv/test/test_arithm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ TEST_P(ArithmOpTest, accuracy)

Mat dst;
cv::fastcv::arithmetic_op(src1, src2, dst, op);

Mat ref;
if(op == 0)
cv::add(src1, src2, ref);
Expand Down
20 changes: 10 additions & 10 deletions modules/fastcv/test/test_channel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,23 +46,23 @@ TEST_P(ChannelSplitTest, accuracy)
{
Size sz = std::get<0>(GetParam());
int cn = std::get<1>(GetParam());
std::vector<Mat> dst_mats;
std::vector<Mat> dst_mats(cn), ref_mats(cn);

RNG& rng = cv::theRNG();
Mat src(sz, CV_MAKE_TYPE(CV_8U,cn));
cvtest::randUni(rng, src, Scalar::all(0), Scalar::all(127));

Mat dst;
cv::fastcv::split(src, dst_mats);

Mat ref;
cv::split(src, dst_mats);

double normInf = cvtest::norm(ref, dst, cv::NORM_INF);
double normL2 = cvtest::norm(ref, dst, cv::NORM_L2);
cv::split(src, ref_mats);

EXPECT_EQ(normInf, 0);
EXPECT_EQ(normL2, 0);
for(int i=0; i<cn; i++)
{
double normInf = cvtest::norm(ref_mats[i], dst_mats[i], cv::NORM_INF);
double normL2 = cvtest::norm(ref_mats[i], dst_mats[i], cv::NORM_L2);
EXPECT_EQ(normInf, 0);
EXPECT_EQ(normL2, 0);
}
}

INSTANTIATE_TEST_CASE_P(FastCV_Extension, ChannelMergeTest,
Expand Down

0 comments on commit 3c63f54

Please sign in to comment.