Commit 4a53199e authored by Andrey Kamaev's avatar Andrey Kamaev

Quiet logs in stitching module

parent 7cc67701
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#include <list> #include <list>
#include "opencv2/core/core.hpp" #include "opencv2/core/core.hpp"
#define ENABLE_LOG 1 #define ENABLE_LOG 0
// TODO remove LOG macros, add logging class // TODO remove LOG macros, add logging class
#if ENABLE_LOG #if ENABLE_LOG
......
...@@ -74,7 +74,9 @@ void GainCompensator::feed(const vector<Point> &corners, const vector<Mat> &imag ...@@ -74,7 +74,9 @@ void GainCompensator::feed(const vector<Point> &corners, const vector<Mat> &imag
const vector<pair<Mat,uchar> > &masks) const vector<pair<Mat,uchar> > &masks)
{ {
LOGLN("Exposure compensation..."); LOGLN("Exposure compensation...");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
CV_Assert(corners.size() == images.size() && images.size() == masks.size()); CV_Assert(corners.size() == images.size() && images.size() == masks.size());
......
...@@ -105,7 +105,9 @@ void HomographyBasedEstimator::estimate(const vector<ImageFeatures> &features, c ...@@ -105,7 +105,9 @@ void HomographyBasedEstimator::estimate(const vector<ImageFeatures> &features, c
vector<CameraParams> &cameras) vector<CameraParams> &cameras)
{ {
LOGLN("Estimating rotations..."); LOGLN("Estimating rotations...");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
const int num_images = static_cast<int>(features.size()); const int num_images = static_cast<int>(features.size());
...@@ -172,7 +174,9 @@ void BundleAdjusterBase::estimate(const vector<ImageFeatures> &features, ...@@ -172,7 +174,9 @@ void BundleAdjusterBase::estimate(const vector<ImageFeatures> &features,
vector<CameraParams> &cameras) vector<CameraParams> &cameras)
{ {
LOG_CHAT("Bundle adjustment"); LOG_CHAT("Bundle adjustment");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
num_images_ = static_cast<int>(features.size()); num_images_ = static_cast<int>(features.size());
features_ = &features[0]; features_ = &features[0];
...@@ -582,7 +586,9 @@ void BundleAdjusterRay::calcJacobian(Mat &jac) ...@@ -582,7 +586,9 @@ void BundleAdjusterRay::calcJacobian(Mat &jac)
void waveCorrect(vector<Mat> &rmats, WaveCorrectKind kind) void waveCorrect(vector<Mat> &rmats, WaveCorrectKind kind)
{ {
LOGLN("Wave correcting..."); LOGLN("Wave correcting...");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
Mat moment = Mat::zeros(3, 3, CV_32F); Mat moment = Mat::zeros(3, 3, CV_32F);
for (size_t i = 0; i < rmats.size(); ++i) for (size_t i = 0; i < rmats.size(); ++i)
......
...@@ -52,10 +52,12 @@ void PairwiseSeamFinder::find(const vector<Mat> &src, const vector<Point> &corne ...@@ -52,10 +52,12 @@ void PairwiseSeamFinder::find(const vector<Mat> &src, const vector<Point> &corne
vector<Mat> &masks) vector<Mat> &masks)
{ {
LOGLN("Finding seams..."); LOGLN("Finding seams...");
if (src.size() == 0) if (src.size() == 0)
return; return;
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
images_ = src; images_ = src;
sizes_.resize(src.size()); sizes_.resize(src.size());
...@@ -87,10 +89,12 @@ void VoronoiSeamFinder::find(const vector<Size> &sizes, const vector<Point> &cor ...@@ -87,10 +89,12 @@ void VoronoiSeamFinder::find(const vector<Size> &sizes, const vector<Point> &cor
vector<Mat> &masks) vector<Mat> &masks)
{ {
LOGLN("Finding seams..."); LOGLN("Finding seams...");
if (sizes.size() == 0) if (sizes.size() == 0)
return; return;
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
sizes_ = sizes; sizes_ = sizes;
corners_ = corners; corners_ = corners;
...@@ -161,7 +165,9 @@ DpSeamFinder::DpSeamFinder(CostFunction costFunc) : costFunc_(costFunc) {} ...@@ -161,7 +165,9 @@ DpSeamFinder::DpSeamFinder(CostFunction costFunc) : costFunc_(costFunc) {}
void DpSeamFinder::find(const vector<Mat> &src, const vector<Point> &corners, vector<Mat> &masks) void DpSeamFinder::find(const vector<Mat> &src, const vector<Point> &corners, vector<Mat> &masks)
{ {
LOGLN("Finding seams..."); LOGLN("Finding seams...");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
if (src.size() == 0) if (src.size() == 0)
return; return;
...@@ -700,7 +706,7 @@ void DpSeamFinder::computeCosts( ...@@ -700,7 +706,7 @@ void DpSeamFinder::computeCosts(
{ {
CV_Assert(states_[comp] & INTERS); CV_Assert(states_[comp] & INTERS);
// compute costs // compute costs
float (*diff)(const Mat&, int, int, const Mat&, int, int) = 0; float (*diff)(const Mat&, int, int, const Mat&, int, int) = 0;
if (image1.type() == CV_32FC3 && image2.type() == CV_32FC3) if (image1.type() == CV_32FC3 && image2.type() == CV_32FC3)
...@@ -1055,10 +1061,10 @@ public: ...@@ -1055,10 +1061,10 @@ public:
void findInPair(size_t first, size_t second, Rect roi); void findInPair(size_t first, size_t second, Rect roi);
private: private:
void setGraphWeightsColor(const Mat &img1, const Mat &img2, void setGraphWeightsColor(const Mat &img1, const Mat &img2,
const Mat &mask1, const Mat &mask2, GCGraph<float> &graph); const Mat &mask1, const Mat &mask2, GCGraph<float> &graph);
void setGraphWeightsColorGrad(const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2, void setGraphWeightsColorGrad(const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2,
const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2, const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2,
GCGraph<float> &graph); GCGraph<float> &graph);
vector<Mat> dx_, dy_; vector<Mat> dx_, dy_;
...@@ -1148,8 +1154,8 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColor(const Mat &img1, const Mat & ...@@ -1148,8 +1154,8 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColor(const Mat &img1, const Mat &
void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad( void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad(
const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2, const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2,
const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2, const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2,
GCGraph<float> &graph) GCGraph<float> &graph)
{ {
const Size img_size = img1.size(); const Size img_size = img1.size();
...@@ -1177,7 +1183,7 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad( ...@@ -1177,7 +1183,7 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad(
float grad = dx1.at<float>(y, x) + dx1.at<float>(y, x + 1) + float grad = dx1.at<float>(y, x) + dx1.at<float>(y, x + 1) +
dx2.at<float>(y, x) + dx2.at<float>(y, x + 1) + weight_eps; dx2.at<float>(y, x) + dx2.at<float>(y, x + 1) + weight_eps;
float weight = (normL2(img1.at<Point3f>(y, x), img2.at<Point3f>(y, x)) + float weight = (normL2(img1.at<Point3f>(y, x), img2.at<Point3f>(y, x)) +
normL2(img1.at<Point3f>(y, x + 1), img2.at<Point3f>(y, x + 1))) / grad + normL2(img1.at<Point3f>(y, x + 1), img2.at<Point3f>(y, x + 1))) / grad +
weight_eps; weight_eps;
if (!mask1.at<uchar>(y, x) || !mask1.at<uchar>(y, x + 1) || if (!mask1.at<uchar>(y, x) || !mask1.at<uchar>(y, x + 1) ||
!mask2.at<uchar>(y, x) || !mask2.at<uchar>(y, x + 1)) !mask2.at<uchar>(y, x) || !mask2.at<uchar>(y, x + 1))
...@@ -1186,10 +1192,10 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad( ...@@ -1186,10 +1192,10 @@ void GraphCutSeamFinder::Impl::setGraphWeightsColorGrad(
} }
if (y < img_size.height - 1) if (y < img_size.height - 1)
{ {
float grad = dy1.at<float>(y, x) + dy1.at<float>(y + 1, x) + float grad = dy1.at<float>(y, x) + dy1.at<float>(y + 1, x) +
dy2.at<float>(y, x) + dy2.at<float>(y + 1, x) + weight_eps; dy2.at<float>(y, x) + dy2.at<float>(y + 1, x) + weight_eps;
float weight = (normL2(img1.at<Point3f>(y, x), img2.at<Point3f>(y, x)) + float weight = (normL2(img1.at<Point3f>(y, x), img2.at<Point3f>(y, x)) +
normL2(img1.at<Point3f>(y + 1, x), img2.at<Point3f>(y + 1, x))) / grad + normL2(img1.at<Point3f>(y + 1, x), img2.at<Point3f>(y + 1, x))) / grad +
weight_eps; weight_eps;
if (!mask1.at<uchar>(y, x) || !mask1.at<uchar>(y + 1, x) || if (!mask1.at<uchar>(y, x) || !mask1.at<uchar>(y + 1, x) ||
!mask2.at<uchar>(y, x) || !mask2.at<uchar>(y + 1, x)) !mask2.at<uchar>(y, x) || !mask2.at<uchar>(y + 1, x))
...@@ -1271,7 +1277,7 @@ void GraphCutSeamFinder::Impl::findInPair(size_t first, size_t second, Rect roi) ...@@ -1271,7 +1277,7 @@ void GraphCutSeamFinder::Impl::findInPair(size_t first, size_t second, Rect roi)
setGraphWeightsColor(subimg1, subimg2, submask1, submask2, graph); setGraphWeightsColor(subimg1, subimg2, submask1, submask2, graph);
break; break;
case GraphCutSeamFinder::COST_COLOR_GRAD: case GraphCutSeamFinder::COST_COLOR_GRAD:
setGraphWeightsColorGrad(subimg1, subimg2, subdx1, subdx2, subdy1, subdy2, setGraphWeightsColorGrad(subimg1, subimg2, subdx1, subdx2, subdy1, subdy2,
submask1, submask2, graph); submask1, submask2, graph);
break; break;
default: default:
...@@ -1402,17 +1408,17 @@ void GraphCutSeamFinderGpu::findInPair(size_t first, size_t second, Rect roi) ...@@ -1402,17 +1408,17 @@ void GraphCutSeamFinderGpu::findInPair(size_t first, size_t second, Rect roi)
} }
} }
} }
Mat terminals, leftT, rightT, top, bottom; Mat terminals, leftT, rightT, top, bottom;
switch (cost_type_) switch (cost_type_)
{ {
case GraphCutSeamFinder::COST_COLOR: case GraphCutSeamFinder::COST_COLOR:
setGraphWeightsColor(subimg1, subimg2, submask1, submask2, setGraphWeightsColor(subimg1, subimg2, submask1, submask2,
terminals, leftT, rightT, top, bottom); terminals, leftT, rightT, top, bottom);
break; break;
case GraphCutSeamFinder::COST_COLOR_GRAD: case GraphCutSeamFinder::COST_COLOR_GRAD:
setGraphWeightsColorGrad(subimg1, subimg2, subdx1, subdx2, subdy1, subdy2, setGraphWeightsColorGrad(subimg1, subimg2, subdx1, subdx2, subdy1, subdy2,
submask1, submask2, terminals, leftT, rightT, top, bottom); submask1, submask2, terminals, leftT, rightT, top, bottom);
break; break;
default: default:
...@@ -1448,7 +1454,7 @@ void GraphCutSeamFinderGpu::findInPair(size_t first, size_t second, Rect roi) ...@@ -1448,7 +1454,7 @@ void GraphCutSeamFinderGpu::findInPair(size_t first, size_t second, Rect roi)
} }
void GraphCutSeamFinderGpu::setGraphWeightsColor(const Mat &img1, const Mat &img2, const Mat &mask1, const Mat &mask2, void GraphCutSeamFinderGpu::setGraphWeightsColor(const Mat &img1, const Mat &img2, const Mat &mask1, const Mat &mask2,
Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom) Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom)
{ {
const Size img_size = img1.size(); const Size img_size = img1.size();
...@@ -1540,7 +1546,7 @@ void GraphCutSeamFinderGpu::setGraphWeightsColor(const Mat &img1, const Mat &img ...@@ -1540,7 +1546,7 @@ void GraphCutSeamFinderGpu::setGraphWeightsColor(const Mat &img1, const Mat &img
void GraphCutSeamFinderGpu::setGraphWeightsColorGrad( void GraphCutSeamFinderGpu::setGraphWeightsColorGrad(
const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2, const Mat &img1, const Mat &img2, const Mat &dx1, const Mat &dx2,
const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2, const Mat &dy1, const Mat &dy2, const Mat &mask1, const Mat &mask2,
Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom) Mat &terminals, Mat &leftT, Mat &rightT, Mat &top, Mat &bottom)
{ {
const Size img_size = img1.size(); const Size img_size = img1.size();
......
...@@ -152,7 +152,9 @@ Stitcher::Status Stitcher::composePanorama(InputArray images, OutputArray pano) ...@@ -152,7 +152,9 @@ Stitcher::Status Stitcher::composePanorama(InputArray images, OutputArray pano)
Mat &pano_ = pano.getMatRef(); Mat &pano_ = pano.getMatRef();
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
vector<Point> corners(imgs_.size()); vector<Point> corners(imgs_.size());
vector<Mat> masks_warped(imgs_.size()); vector<Mat> masks_warped(imgs_.size());
...@@ -201,7 +203,9 @@ Stitcher::Status Stitcher::composePanorama(InputArray images, OutputArray pano) ...@@ -201,7 +203,9 @@ Stitcher::Status Stitcher::composePanorama(InputArray images, OutputArray pano)
masks.clear(); masks.clear();
LOGLN("Compositing..."); LOGLN("Compositing...");
#if ENABLE_LOG
t = getTickCount(); t = getTickCount();
#endif
Mat img_warped, img_warped_s; Mat img_warped, img_warped_s;
Mat dilated_mask, seam_mask, mask, mask_warped; Mat dilated_mask, seam_mask, mask, mask_warped;
...@@ -349,7 +353,9 @@ Stitcher::Status Stitcher::matchImages() ...@@ -349,7 +353,9 @@ Stitcher::Status Stitcher::matchImages()
full_img_sizes_.resize(imgs_.size()); full_img_sizes_.resize(imgs_.size());
LOGLN("Finding features..."); LOGLN("Finding features...");
#if ENABLE_LOG
int64 t = getTickCount(); int64 t = getTickCount();
#endif
for (size_t i = 0; i < imgs_.size(); ++i) for (size_t i = 0; i < imgs_.size(); ++i)
{ {
...@@ -406,7 +412,9 @@ Stitcher::Status Stitcher::matchImages() ...@@ -406,7 +412,9 @@ Stitcher::Status Stitcher::matchImages()
LOGLN("Finding features, time: " << ((getTickCount() - t) / getTickFrequency()) << " sec"); LOGLN("Finding features, time: " << ((getTickCount() - t) / getTickFrequency()) << " sec");
LOG("Pairwise matching"); LOG("Pairwise matching");
#if ENABLE_LOG
t = getTickCount(); t = getTickCount();
#endif
(*features_matcher_)(features_, pairwise_matches_, matching_mask_); (*features_matcher_)(features_, pairwise_matches_, matching_mask_);
features_matcher_->collectGarbage(); features_matcher_->collectGarbage();
LOGLN("Pairwise matching, time: " << ((getTickCount() - t) / getTickFrequency()) << " sec"); LOGLN("Pairwise matching, time: " << ((getTickCount() - t) / getTickFrequency()) << " sec");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment