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: "<