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