From 320bee3bfede0baeb38b34e8e3c20bc72dad4eb0 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 26 Dec 2011 08:05:33 +0000 Subject: [PATCH] Fixed border interpolation problem in filter2D --- modules/imgproc/src/filter.cpp | 4 ++-- modules/imgproc/src/templmatch.cpp | 1 + modules/imgproc/src/utils.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index 6a90d3e4a3..772048db85 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -3026,8 +3026,8 @@ void cv::filter2D( InputArray _src, OutputArray _dst, int ddepth, } Ptr f = createLinearFilter(src.type(), dst.type(), kernel, - anchor, delta, borderType ); - f->apply(src, dst); + anchor, delta, borderType & ~BORDER_ISOLATED ); + f->apply(src, dst, Rect(0,0,-1,-1), Point(), (borderType & BORDER_ISOLATED) != 0 ); } diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index fdf08e08ab..4a62d359c2 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -144,6 +144,7 @@ void crossCorr( const Mat& img, const Mat& templ, Mat& corr, img0.adjustROI(roiofs.y, wholeSize.height-img.rows-roiofs.y, roiofs.x, wholeSize.width-img.cols-roiofs.x); } + borderType |= BORDER_ISOLATED; // calculate correlation by blocks for( i = 0; i < tileCount; i++ ) diff --git a/modules/imgproc/src/utils.cpp b/modules/imgproc/src/utils.cpp index 7684b996e5..a4c3e31d65 100644 --- a/modules/imgproc/src/utils.cpp +++ b/modules/imgproc/src/utils.cpp @@ -218,6 +218,8 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom, src.adjustROI(dtop, dbottom, dleft, dright); top -= dtop; left -= dleft; + bottom -= dbottom; + right -= dright; } borderType &= ~BORDER_ISOLATED;