|
|
@ -683,8 +683,22 @@ void GaussianBlur(InputArray _src, OutputArray _dst, Size ksize, |
|
|
|
|
|
|
|
|
|
|
|
if (src.data == dst.data) |
|
|
|
if (src.data == dst.data) |
|
|
|
src = src.clone(); |
|
|
|
src = src.clone(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((sigma1 == 0.0) && (sigma2 == 0.0) && (ksize.height == ksize.width)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Point ofs; |
|
|
|
|
|
|
|
Size wsz(src.cols, src.rows); |
|
|
|
|
|
|
|
Mat src2 = src; |
|
|
|
|
|
|
|
if(!(borderType & BORDER_ISOLATED)) |
|
|
|
|
|
|
|
src2.locateROI( wsz, ofs ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CALL_HAL(gaussianBlurBinomial, cv_hal_gaussianBlurBinomial, src2.ptr(), src2.step, dst.ptr(), dst.step, src2.cols, src2.rows, sdepth, cn, |
|
|
|
|
|
|
|
ofs.x, ofs.y, wsz.width - src2.cols - ofs.x, wsz.height - src2.rows - ofs.y, ksize.width, borderType&~BORDER_ISOLATED); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CV_CPU_DISPATCH(GaussianBlurFixedPoint, (src, dst, (const uint16_t*)&fkx[0], (int)fkx.size(), (const uint16_t*)&fky[0], (int)fky.size(), borderType), |
|
|
|
CV_CPU_DISPATCH(GaussianBlurFixedPoint, (src, dst, (const uint16_t*)&fkx[0], (int)fkx.size(), (const uint16_t*)&fky[0], (int)fky.size(), borderType), |
|
|
|
CV_CPU_DISPATCH_MODES_ALL); |
|
|
|
CV_CPU_DISPATCH_MODES_ALL); |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -720,8 +734,22 @@ void GaussianBlur(InputArray _src, OutputArray _dst, Size ksize, |
|
|
|
|
|
|
|
|
|
|
|
if (src.data == dst.data) |
|
|
|
if (src.data == dst.data) |
|
|
|
src = src.clone(); |
|
|
|
src = src.clone(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((sigma1 == 0.0) && (sigma2 == 0.0) && (ksize.height == ksize.width)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Point ofs; |
|
|
|
|
|
|
|
Size wsz(src.cols, src.rows); |
|
|
|
|
|
|
|
Mat src2 = src; |
|
|
|
|
|
|
|
if(!(borderType & BORDER_ISOLATED)) |
|
|
|
|
|
|
|
src2.locateROI( wsz, ofs ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CALL_HAL(gaussianBlurBinomial, cv_hal_gaussianBlurBinomial, src2.ptr(), src2.step, dst.ptr(), dst.step, src2.cols, src2.rows, sdepth, cn, |
|
|
|
|
|
|
|
ofs.x, ofs.y, wsz.width - src2.cols - ofs.x, wsz.height - src2.rows - ofs.y, ksize.width, borderType&~BORDER_ISOLATED); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CV_CPU_DISPATCH(GaussianBlurFixedPoint, (src, dst, (const uint32_t*)&fkx[0], (int)fkx.size(), (const uint32_t*)&fky[0], (int)fky.size(), borderType), |
|
|
|
CV_CPU_DISPATCH(GaussianBlurFixedPoint, (src, dst, (const uint32_t*)&fkx[0], (int)fkx.size(), (const uint32_t*)&fky[0], (int)fky.size(), borderType), |
|
|
|
CV_CPU_DISPATCH_MODES_ALL); |
|
|
|
CV_CPU_DISPATCH_MODES_ALL); |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|