|
4 | 4 |
|
5 | 5 | #include "precomp.hpp"
|
6 | 6 | #include "opencv2/photometric_calib/VignetteRemover.hpp"
|
| 7 | +#include "opencv2/photometric_calib/GammaRemover.hpp" |
7 | 8 |
|
8 | 9 | namespace cv {
|
9 | 10 | namespace photometric_calib {
|
10 | 11 |
|
11 |
| -VignetteRemover::VignetteRemover(const std::string &vignettePath, int w_, int h_) |
| 12 | +VignetteRemover::VignetteRemover(const std::string &vignettePath, const std::string &pcalibPath, int w_, int h_) |
12 | 13 | {
|
13 | 14 | CV_Assert(vignettePath != "");
|
| 15 | + CV_Assert(pcalibPath != ""); |
14 | 16 |
|
15 | 17 | validVignette = false;
|
16 | 18 | vignetteMap = 0;
|
@@ -59,24 +61,28 @@ VignetteRemover::VignetteRemover(const std::string &vignettePath, int w_, int h_
|
59 | 61 | vignetteMapInv[i] = 1.0f / vignetteMap[i];
|
60 | 62 | }
|
61 | 63 |
|
| 64 | + _pcalibPath = pcalibPath; |
62 | 65 | validVignette = true;
|
63 | 66 |
|
64 | 67 | }
|
65 | 68 |
|
66 |
| -Mat VignetteRemover::getUnVignetteImageMat(std::vector<float> &unGammaImVec) |
| 69 | +Mat VignetteRemover::getUnVignetteImageMat(Mat oriImMat) |
67 | 70 | {
|
68 | 71 | std::vector<float> _outImVec(w * h);
|
69 |
| - getUnVignetteImageVec(unGammaImVec, _outImVec); |
| 72 | + getUnVignetteImageVec(oriImMat, _outImVec); |
70 | 73 |
|
71 | 74 | Mat _outIm(h, w, CV_32F, &_outImVec[0]);
|
72 | 75 | Mat outIm = _outIm * (1 / 255.0f);
|
73 | 76 | return outIm;
|
74 | 77 | }
|
75 | 78 |
|
76 |
| -void VignetteRemover::getUnVignetteImageVec(const std::vector<float> &unGammaImVec, std::vector<float> &outImVec) |
| 79 | +void VignetteRemover::getUnVignetteImageVec(Mat oriImMat, std::vector<float> &outImVec) |
77 | 80 | {
|
78 | 81 | CV_Assert(validVignette);
|
79 | 82 | CV_Assert(outImVec.size() == (unsigned long) w * h);
|
| 83 | + photometric_calib::GammaRemover gammaRemover(_pcalibPath, w, h); |
| 84 | + std::vector<float> unGammaImVec(w * h); |
| 85 | + gammaRemover.getUnGammaImageVec(oriImMat, unGammaImVec); |
80 | 86 | for (int i = 0; i < w * h; ++i)
|
81 | 87 | {
|
82 | 88 | outImVec[i] = unGammaImVec[i] * vignetteMapInv[i];
|
|
0 commit comments