From 6910754a9fb0d9e32ba77674edfb8fea730d3a31 Mon Sep 17 00:00:00 2001 From: uvos Date: Thu, 1 Jul 2021 15:43:35 +0200 Subject: [PATCH] remove border more robustly --- src/main.cpp | 2 +- src/matutils.cpp | 33 ++++++++++++++++----------------- src/matutils.h | 2 +- src/unwrap.cpp | 30 +++++++++++++++--------------- 4 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b183774..3ec1c41 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -241,7 +241,7 @@ int perfromOperation(int operation, char** fileNames, const Config& config) if(config.simpleStich) out = simpleStich(remapedImages); else - out = stich(remapedImages); + out = stich(remapedImages, true); if(config.verbose) { diff --git a/src/matutils.cpp b/src/matutils.cpp index 0a8df9b..fd316de 100644 --- a/src/matutils.cpp +++ b/src/matutils.cpp @@ -328,30 +328,27 @@ bool deleteEmptyCols(cv::Mat& mat) return false; } -void removeEmptyFrontBackCols(cv::Mat& mat) +void removeSparseCols(cv::Mat& mat, bool front) { assert(mat.type() == CV_32FC1); - int front = 0; - int back = 0; + int count = 0; for(int y = 0; y < mat.rows; ++y) { - if(mat.at(y,0) >= 0) ++front; - if(mat.at(y,mat.cols-1) >= 0) ++back; + if(front && mat.at(y,0) >= 0) ++count; + else if(mat.at(y,mat.cols-1) >= 0) ++count; } - Log(Log::DEBUG)<<__func__<<" front: "< static Type resizePointBilinear(const cv::Mat& inImage, { int u0 = static_cast(scaledX); int v0 = static_cast(scaledY); - int u1 = std::min(inImage.cols-1, static_cast(scaledX+1)); + int u1 = std::min(inImage.cols-1, static_cast(scaledX)+1); int v1 = v0; int u2 = u0; - int v2 = std::min(inImage.rows-1, static_cast(scaledY+1)); - int u3 = std::min(inImage.cols-1, static_cast(scaledX+1)); - int v3 = std::min(inImage.rows-1, static_cast(scaledY+1)); + int v2 = std::min(inImage.rows-1, static_cast(scaledY)+1); + int u3 = std::min(inImage.cols-1, static_cast(scaledX)+1); + int v3 = std::min(inImage.rows-1, static_cast(scaledY)+1); float col0 = linInterpolate(inImage.at(v0, u0), inImage.at(v1, u1), xFrac); float col1 = linInterpolate(inImage.at(v2, u2), inImage.at(v3, u3), xFrac); @@ -389,7 +386,7 @@ template static void resize(const cv::Mat& inImage, cv::Mat& out for (int x = 0; x < outImage.cols; x++) { float scaledX = x * scaleX; - float xFrac = scaledX - static_cast(scaledX); + float xFrac = scaledX - (static_cast(scaledX)); outImage.at(y, x) = resizePointBilinear(inImage, scaledX, scaledY, xFrac, yFrac); } @@ -402,6 +399,8 @@ bool bilinearResize(const cv::Mat& inImage, cv::Mat& outImage, const cv::Size si size.width < 2 || size.height < 2 || inImage.cols < 2 || inImage.rows < 2) return false; + std::cout<<"size: "<