Removed build errors and removed test images
Removed conflict Error fix 1 Error fix 2 Error fix 3 Error fix 3 Error fix 4 Error fix 5 Error fix 6 Error fix 7 Error fix 8 Error fix 9 Error fix 10 Error fix 11 Error fix 12 Errors fixed Removed opencv_extra folder inside opencv folder
This commit is contained in:
parent
2f65a0d4ba
commit
33e6c07485
@ -80,7 +80,7 @@ textureFlattening
|
||||
By retaining only the gradients at edge locations, before integrating with the Poisson solver, one washes out the texture of the selected
|
||||
region, giving its contents a flat aspect. Here Canny Edge Detector is used.
|
||||
|
||||
.. ocv:function:: void textureFlattening(InputArray src, InputArray mask, OutputArray dst, double low_threshold, double high_threshold, int kernel_size)
|
||||
.. ocv:function:: void textureFlattening(InputArray src, InputArray mask, OutputArray dst, double low_threshold=30 , double high_threshold=45, int kernel_size=3)
|
||||
|
||||
:param src: Input 8-bit 3-channel image.
|
||||
|
||||
|
@ -72,18 +72,3 @@ Stylization aims to produce digital imagery with a wide variety of effects not f
|
||||
:param sigma_s: Range between 0 to 200.
|
||||
|
||||
:param sigma_r: Range between 0 to 1.
|
||||
|
||||
|
||||
edgeEnhance
|
||||
-----------
|
||||
Able to suppress low-amplitude details and enhance edges.
|
||||
|
||||
.. ocv:function:: void edgeEnhance(InputArray src, OutputArray dst, float sigma_s = 60, float sigma_r = 0.45)
|
||||
|
||||
:param src: Input 8-bit 3-channel image.
|
||||
|
||||
:param dst: Output 8-bit 1-channel image.
|
||||
|
||||
:param sigma_s: Range between 0 to 200.
|
||||
|
||||
:param sigma_r: Range between 0 to 1.
|
||||
|
@ -93,213 +93,213 @@ namespace cv
|
||||
float h = 3, float hColor = 3,
|
||||
int templateWindowSize = 7, int searchWindowSize = 21);
|
||||
|
||||
enum { LDR_SIZE = 256 };
|
||||
enum { LDR_SIZE = 256 };
|
||||
|
||||
class CV_EXPORTS_W Tonemap : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArray src, OutputArray dst) = 0;
|
||||
class CV_EXPORTS_W Tonemap : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArray src, OutputArray dst) = 0;
|
||||
|
||||
CV_WRAP virtual float getGamma() const = 0;
|
||||
CV_WRAP virtual void setGamma(float gamma) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getGamma() const = 0;
|
||||
CV_WRAP virtual void setGamma(float gamma) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<Tonemap> createTonemap(float gamma = 1.0f);
|
||||
CV_EXPORTS_W Ptr<Tonemap> createTonemap(float gamma = 1.0f);
|
||||
|
||||
// "Adaptive Logarithmic Mapping For Displaying HighContrast Scenes", Drago et al., 2003
|
||||
// "Adaptive Logarithmic Mapping For Displaying HighContrast Scenes", Drago et al., 2003
|
||||
|
||||
class CV_EXPORTS_W TonemapDrago : public Tonemap
|
||||
{
|
||||
public:
|
||||
class CV_EXPORTS_W TonemapDrago : public Tonemap
|
||||
{
|
||||
public:
|
||||
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
|
||||
CV_WRAP virtual float getBias() const = 0;
|
||||
CV_WRAP virtual void setBias(float bias) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getBias() const = 0;
|
||||
CV_WRAP virtual void setBias(float bias) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<TonemapDrago> createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f, float bias = 0.85f);
|
||||
CV_EXPORTS_W Ptr<TonemapDrago> createTonemapDrago(float gamma = 1.0f, float saturation = 1.0f, float bias = 0.85f);
|
||||
|
||||
// "Fast Bilateral Filtering for the Display of High-Dynamic-Range Images", Durand, Dorsey, 2002
|
||||
// "Fast Bilateral Filtering for the Display of High-Dynamic-Range Images", Durand, Dorsey, 2002
|
||||
|
||||
class CV_EXPORTS_W TonemapDurand : public Tonemap
|
||||
{
|
||||
public:
|
||||
class CV_EXPORTS_W TonemapDurand : public Tonemap
|
||||
{
|
||||
public:
|
||||
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
|
||||
CV_WRAP virtual float getContrast() const = 0;
|
||||
CV_WRAP virtual void setContrast(float contrast) = 0;
|
||||
CV_WRAP virtual float getContrast() const = 0;
|
||||
CV_WRAP virtual void setContrast(float contrast) = 0;
|
||||
|
||||
CV_WRAP virtual float getSigmaSpace() const = 0;
|
||||
CV_WRAP virtual void setSigmaSpace(float sigma_space) = 0;
|
||||
CV_WRAP virtual float getSigmaSpace() const = 0;
|
||||
CV_WRAP virtual void setSigmaSpace(float sigma_space) = 0;
|
||||
|
||||
CV_WRAP virtual float getSigmaColor() const = 0;
|
||||
CV_WRAP virtual void setSigmaColor(float sigma_color) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getSigmaColor() const = 0;
|
||||
CV_WRAP virtual void setSigmaColor(float sigma_color) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<TonemapDurand>
|
||||
createTonemapDurand(float gamma = 1.0f, float contrast = 4.0f, float saturation = 1.0f, float sigma_space = 2.0f, float sigma_color = 2.0f);
|
||||
CV_EXPORTS_W Ptr<TonemapDurand>
|
||||
createTonemapDurand(float gamma = 1.0f, float contrast = 4.0f, float saturation = 1.0f, float sigma_space = 2.0f, float sigma_color = 2.0f);
|
||||
|
||||
// "Dynamic Range Reduction Inspired by Photoreceptor Physiology", Reinhard, Devlin, 2005
|
||||
// "Dynamic Range Reduction Inspired by Photoreceptor Physiology", Reinhard, Devlin, 2005
|
||||
|
||||
class CV_EXPORTS_W TonemapReinhard : public Tonemap
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getIntensity() const = 0;
|
||||
CV_WRAP virtual void setIntensity(float intensity) = 0;
|
||||
class CV_EXPORTS_W TonemapReinhard : public Tonemap
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getIntensity() const = 0;
|
||||
CV_WRAP virtual void setIntensity(float intensity) = 0;
|
||||
|
||||
CV_WRAP virtual float getLightAdaptation() const = 0;
|
||||
CV_WRAP virtual void setLightAdaptation(float light_adapt) = 0;
|
||||
CV_WRAP virtual float getLightAdaptation() const = 0;
|
||||
CV_WRAP virtual void setLightAdaptation(float light_adapt) = 0;
|
||||
|
||||
CV_WRAP virtual float getColorAdaptation() const = 0;
|
||||
CV_WRAP virtual void setColorAdaptation(float color_adapt) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getColorAdaptation() const = 0;
|
||||
CV_WRAP virtual void setColorAdaptation(float color_adapt) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<TonemapReinhard>
|
||||
createTonemapReinhard(float gamma = 1.0f, float intensity = 0.0f, float light_adapt = 1.0f, float color_adapt = 0.0f);
|
||||
CV_EXPORTS_W Ptr<TonemapReinhard>
|
||||
createTonemapReinhard(float gamma = 1.0f, float intensity = 0.0f, float light_adapt = 1.0f, float color_adapt = 0.0f);
|
||||
|
||||
// "Perceptual Framework for Contrast Processing of High Dynamic Range Images", Mantiuk et al., 2006
|
||||
// "Perceptual Framework for Contrast Processing of High Dynamic Range Images", Mantiuk et al., 2006
|
||||
|
||||
class CV_EXPORTS_W TonemapMantiuk : public Tonemap
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getScale() const = 0;
|
||||
CV_WRAP virtual void setScale(float scale) = 0;
|
||||
class CV_EXPORTS_W TonemapMantiuk : public Tonemap
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getScale() const = 0;
|
||||
CV_WRAP virtual void setScale(float scale) = 0;
|
||||
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getSaturation() const = 0;
|
||||
CV_WRAP virtual void setSaturation(float saturation) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<TonemapMantiuk>
|
||||
createTonemapMantiuk(float gamma = 1.0f, float scale = 0.7f, float saturation = 1.0f);
|
||||
CV_EXPORTS_W Ptr<TonemapMantiuk>
|
||||
createTonemapMantiuk(float gamma = 1.0f, float scale = 0.7f, float saturation = 1.0f);
|
||||
|
||||
class CV_EXPORTS_W AlignExposures : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
};
|
||||
class CV_EXPORTS_W AlignExposures : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
};
|
||||
|
||||
// "Fast, Robust Image Registration for Compositing High Dynamic Range Photographs from Handheld Exposures", Ward, 2003
|
||||
// "Fast, Robust Image Registration for Compositing High Dynamic Range Photographs from Handheld Exposures", Ward, 2003
|
||||
|
||||
class CV_EXPORTS_W AlignMTB : public AlignExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
class CV_EXPORTS_W AlignMTB : public AlignExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, std::vector<Mat>& dst) = 0;
|
||||
|
||||
CV_WRAP virtual Point calculateShift(InputArray img0, InputArray img1) = 0;
|
||||
CV_WRAP virtual void shiftMat(InputArray src, OutputArray dst, const Point shift) = 0;
|
||||
CV_WRAP virtual void computeBitmaps(InputArray img, OutputArray tb, OutputArray eb) = 0;
|
||||
CV_WRAP virtual Point calculateShift(InputArray img0, InputArray img1) = 0;
|
||||
CV_WRAP virtual void shiftMat(InputArray src, OutputArray dst, const Point shift) = 0;
|
||||
CV_WRAP virtual void computeBitmaps(InputArray img, OutputArray tb, OutputArray eb) = 0;
|
||||
|
||||
CV_WRAP virtual int getMaxBits() const = 0;
|
||||
CV_WRAP virtual void setMaxBits(int max_bits) = 0;
|
||||
CV_WRAP virtual int getMaxBits() const = 0;
|
||||
CV_WRAP virtual void setMaxBits(int max_bits) = 0;
|
||||
|
||||
CV_WRAP virtual int getExcludeRange() const = 0;
|
||||
CV_WRAP virtual void setExcludeRange(int exclude_range) = 0;
|
||||
CV_WRAP virtual int getExcludeRange() const = 0;
|
||||
CV_WRAP virtual void setExcludeRange(int exclude_range) = 0;
|
||||
|
||||
CV_WRAP virtual bool getCut() const = 0;
|
||||
CV_WRAP virtual void setCut(bool value) = 0;
|
||||
};
|
||||
CV_WRAP virtual bool getCut() const = 0;
|
||||
CV_WRAP virtual void setCut(bool value) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<AlignMTB> createAlignMTB(int max_bits = 6, int exclude_range = 4, bool cut = true);
|
||||
CV_EXPORTS_W Ptr<AlignMTB> createAlignMTB(int max_bits = 6, int exclude_range = 4, bool cut = true);
|
||||
|
||||
class CV_EXPORTS_W CalibrateCRF : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
class CV_EXPORTS_W CalibrateCRF : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
|
||||
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
|
||||
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
|
||||
|
||||
class CV_EXPORTS_W CalibrateDebevec : public CalibrateCRF
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getLambda() const = 0;
|
||||
CV_WRAP virtual void setLambda(float lambda) = 0;
|
||||
class CV_EXPORTS_W CalibrateDebevec : public CalibrateCRF
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual float getLambda() const = 0;
|
||||
CV_WRAP virtual void setLambda(float lambda) = 0;
|
||||
|
||||
CV_WRAP virtual int getSamples() const = 0;
|
||||
CV_WRAP virtual void setSamples(int samples) = 0;
|
||||
CV_WRAP virtual int getSamples() const = 0;
|
||||
CV_WRAP virtual void setSamples(int samples) = 0;
|
||||
|
||||
CV_WRAP virtual bool getRandom() const = 0;
|
||||
CV_WRAP virtual void setRandom(bool random) = 0;
|
||||
};
|
||||
CV_WRAP virtual bool getRandom() const = 0;
|
||||
CV_WRAP virtual void setRandom(bool random) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<CalibrateDebevec> createCalibrateDebevec(int samples = 70, float lambda = 10.0f, bool random = false);
|
||||
CV_EXPORTS_W Ptr<CalibrateDebevec> createCalibrateDebevec(int samples = 70, float lambda = 10.0f, bool random = false);
|
||||
|
||||
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999
|
||||
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999
|
||||
|
||||
class CV_EXPORTS_W CalibrateRobertson : public CalibrateCRF
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual int getMaxIter() const = 0;
|
||||
CV_WRAP virtual void setMaxIter(int max_iter) = 0;
|
||||
class CV_EXPORTS_W CalibrateRobertson : public CalibrateCRF
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual int getMaxIter() const = 0;
|
||||
CV_WRAP virtual void setMaxIter(int max_iter) = 0;
|
||||
|
||||
CV_WRAP virtual float getThreshold() const = 0;
|
||||
CV_WRAP virtual void setThreshold(float threshold) = 0;
|
||||
CV_WRAP virtual float getThreshold() const = 0;
|
||||
CV_WRAP virtual void setThreshold(float threshold) = 0;
|
||||
|
||||
CV_WRAP virtual Mat getRadiance() const = 0;
|
||||
};
|
||||
CV_WRAP virtual Mat getRadiance() const = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<CalibrateRobertson> createCalibrateRobertson(int max_iter = 30, float threshold = 0.01f);
|
||||
CV_EXPORTS_W Ptr<CalibrateRobertson> createCalibrateRobertson(int max_iter = 30, float threshold = 0.01f);
|
||||
|
||||
class CV_EXPORTS_W MergeExposures : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
};
|
||||
class CV_EXPORTS_W MergeExposures : public Algorithm
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
};
|
||||
|
||||
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
|
||||
// "Recovering High Dynamic Range Radiance Maps from Photographs", Debevec, Malik, 1997
|
||||
|
||||
class CV_EXPORTS_W MergeDebevec : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
class CV_EXPORTS_W MergeDebevec : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<MergeDebevec> createMergeDebevec();
|
||||
CV_EXPORTS_W Ptr<MergeDebevec> createMergeDebevec();
|
||||
|
||||
// "Exposure Fusion", Mertens et al., 2007
|
||||
// "Exposure Fusion", Mertens et al., 2007
|
||||
|
||||
class CV_EXPORTS_W MergeMertens : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst) = 0;
|
||||
class CV_EXPORTS_W MergeMertens : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst) = 0;
|
||||
|
||||
CV_WRAP virtual float getContrastWeight() const = 0;
|
||||
CV_WRAP virtual void setContrastWeight(float contrast_weiht) = 0;
|
||||
CV_WRAP virtual float getContrastWeight() const = 0;
|
||||
CV_WRAP virtual void setContrastWeight(float contrast_weiht) = 0;
|
||||
|
||||
CV_WRAP virtual float getSaturationWeight() const = 0;
|
||||
CV_WRAP virtual void setSaturationWeight(float saturation_weight) = 0;
|
||||
CV_WRAP virtual float getSaturationWeight() const = 0;
|
||||
CV_WRAP virtual void setSaturationWeight(float saturation_weight) = 0;
|
||||
|
||||
CV_WRAP virtual float getExposureWeight() const = 0;
|
||||
CV_WRAP virtual void setExposureWeight(float exposure_weight) = 0;
|
||||
};
|
||||
CV_WRAP virtual float getExposureWeight() const = 0;
|
||||
CV_WRAP virtual void setExposureWeight(float exposure_weight) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<MergeMertens>
|
||||
createMergeMertens(float contrast_weight = 1.0f, float saturation_weight = 1.0f, float exposure_weight = 0.0f);
|
||||
CV_EXPORTS_W Ptr<MergeMertens>
|
||||
createMergeMertens(float contrast_weight = 1.0f, float saturation_weight = 1.0f, float exposure_weight = 0.0f);
|
||||
|
||||
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999
|
||||
// "Dynamic range improvement through multiple exposures", Robertson et al., 1999
|
||||
|
||||
class CV_EXPORTS_W MergeRobertson : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
class CV_EXPORTS_W MergeRobertson : public MergeExposures
|
||||
{
|
||||
public:
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst,
|
||||
InputArray times, InputArray response) = 0;
|
||||
CV_WRAP virtual void process(InputArrayOfArrays src, OutputArray dst, InputArray times) = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
|
||||
CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
|
||||
|
||||
CV_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray color_boost);
|
||||
|
||||
@ -328,9 +328,6 @@ CV_EXPORTS_W Ptr<MergeRobertson> createMergeRobertson();
|
||||
CV_EXPORTS_W void stylization(InputArray src, OutputArray dst, float sigma_s = 60,
|
||||
float sigma_r = 0.45);
|
||||
|
||||
CV_EXPORTS_W void edgeEnhance(InputArray src, OutputArray dst, float sigma_s = 60,
|
||||
float sigma_r = 0.45);
|
||||
|
||||
} // cv
|
||||
|
||||
#endif
|
||||
|
@ -74,6 +74,13 @@ class Decolor
|
||||
void grayImContruct(vector <double> &wei, Mat img, Mat &Gray);
|
||||
};
|
||||
|
||||
int round_num(double a);
|
||||
|
||||
int round_num(double a)
|
||||
{
|
||||
return int(a + 0.5);
|
||||
}
|
||||
|
||||
double Decolor::energyCalcu(vector <double> &Cg, vector < vector <double> > &polyGrad, vector <double> &wei)
|
||||
{
|
||||
vector <double> energy;
|
||||
@ -228,7 +235,7 @@ void Decolor::weak_order(Mat img, vector <double> &alf)
|
||||
if((h + w) > 800)
|
||||
{
|
||||
sizefactor = (double)800/(h+w);
|
||||
resize(img,img,Size(round(h*sizefactor),round(w*sizefactor)));
|
||||
resize(img,img,Size(round_num(h*sizefactor),round_num(w*sizefactor)));
|
||||
}
|
||||
|
||||
Mat curIm = Mat(img.size(),CV_32FC1);
|
||||
@ -304,7 +311,7 @@ void Decolor::grad_system(Mat img, vector < vector < double > > &polyGrad,
|
||||
if((h + w) > 800)
|
||||
{
|
||||
sizefactor = (double)800/(h+w);
|
||||
resize(img,img,Size(round(h*sizefactor),round(w*sizefactor)));
|
||||
resize(img,img,Size(round_num(h*sizefactor),round_num(w*sizefactor)));
|
||||
}
|
||||
|
||||
h = img.size().height;
|
||||
|
@ -151,7 +151,6 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
|
||||
|
||||
int h = img.size().height;
|
||||
int w = img.size().width;
|
||||
int channel = img.channels();
|
||||
|
||||
Mat res = Mat(h,w,CV_32FC3);
|
||||
Mat magnitude = Mat(h,w,CV_32FC1);
|
||||
@ -159,7 +158,7 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
|
||||
Domain_Filter obj;
|
||||
obj.filter(img, res, sigma_s, sigma_r, NORMCONV_FILTER);
|
||||
|
||||
obj.find_magnitude(res,magnitude,2);
|
||||
obj.find_magnitude(res,magnitude);
|
||||
|
||||
Mat stylized = Mat(h,w,CV_32FC3);
|
||||
|
||||
@ -172,31 +171,3 @@ void cv::stylization(InputArray _src, OutputArray _dst, float sigma_s, float sig
|
||||
|
||||
stylized.convertTo(dst,CV_8UC3,255);
|
||||
}
|
||||
|
||||
void cv::edgeEnhance(InputArray _src, OutputArray _dst, float sigma_s, float sigma_r)
|
||||
{
|
||||
Mat I = _src.getMat();
|
||||
_dst.create(I.size(), CV_8UC1);
|
||||
Mat dst = _dst.getMat();
|
||||
|
||||
Mat img = Mat(I.size(),CV_32FC3);
|
||||
I.convertTo(img,CV_32FC3,1.0/255.0);
|
||||
|
||||
Mat orig = img.clone();
|
||||
|
||||
int h = img.size().height;
|
||||
int w = img.size().width;
|
||||
|
||||
Mat res = Mat(h,w,CV_32FC3);
|
||||
Mat magnitude = Mat(h,w,CV_32FC1);
|
||||
|
||||
Mat mag8 = Mat(h,w,CV_32FC1);
|
||||
|
||||
Domain_Filter obj;
|
||||
|
||||
obj.filter(img, res, sigma_s, sigma_r, NORMCONV_FILTER);
|
||||
|
||||
obj.find_magnitude(res,magnitude,1);
|
||||
|
||||
magnitude.convertTo(dst,CV_8UC1,255);
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ class Domain_Filter
|
||||
void getGradienty( const Mat &img, Mat &gy);
|
||||
void diffx(const Mat &img, Mat &temp);
|
||||
void diffy(const Mat &img, Mat &temp);
|
||||
void find_magnitude(Mat &img, Mat &mag, int flags);
|
||||
void find_magnitude(Mat &img, Mat &mag);
|
||||
void compute_boxfilter(Mat &output, Mat &hz, Mat &psketch, float radius);
|
||||
void compute_Rfilter(Mat &O, Mat &horiz, float sigma_h);
|
||||
void compute_NCfilter(Mat &O, Mat &horiz, Mat &psketch, float radius);
|
||||
@ -131,7 +131,7 @@ void Domain_Filter::getGradienty( const Mat &img, Mat &gy)
|
||||
}
|
||||
}
|
||||
|
||||
void Domain_Filter::find_magnitude(Mat &img, Mat &mag, int flags)
|
||||
void Domain_Filter::find_magnitude(Mat &img, Mat &mag)
|
||||
{
|
||||
int h = img.rows;
|
||||
int w = img.cols;
|
||||
@ -148,28 +148,14 @@ void Domain_Filter::find_magnitude(Mat &img, Mat &mag, int flags)
|
||||
Mat magXB = Mat(h, w, CV_32FC1);
|
||||
Mat magYB = Mat(h, w, CV_32FC1);
|
||||
|
||||
if(flags == 1)
|
||||
{
|
||||
getGradientx(planes[0], magXR);
|
||||
getGradienty(planes[0], magYR);
|
||||
Sobel(planes[0], magXR, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[0], magYR, CV_32FC1, 0, 1, 3);
|
||||
|
||||
getGradientx(planes[1], magXG);
|
||||
getGradienty(planes[1], magYG);
|
||||
Sobel(planes[1], magXG, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[1], magYG, CV_32FC1, 0, 1, 3);
|
||||
|
||||
getGradientx(planes[2], magXR);
|
||||
getGradienty(planes[2], magYR);
|
||||
}
|
||||
else if(flags == 2)
|
||||
{
|
||||
Sobel(planes[0], magXR, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[0], magYR, CV_32FC1, 0, 1, 3);
|
||||
|
||||
Sobel(planes[1], magXG, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[1], magYG, CV_32FC1, 0, 1, 3);
|
||||
|
||||
Sobel(planes[2], magXB, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[2], magYB, CV_32FC1, 0, 1, 3);
|
||||
}
|
||||
Sobel(planes[2], magXB, CV_32FC1, 1, 0, 3);
|
||||
Sobel(planes[2], magYB, CV_32FC1, 0, 1, 3);
|
||||
|
||||
Mat mag1 = Mat(h,w,CV_32FC1);
|
||||
Mat mag2 = Mat(h,w,CV_32FC1);
|
||||
|
16
modules/photo/test/test_npr.cpp
Normal file → Executable file
16
modules/photo/test/test_npr.cpp
Normal file → Executable file
@ -128,19 +128,3 @@ TEST(Photo_NPR_Stylization, regression)
|
||||
imwrite(folder + "stylized.png", result);
|
||||
|
||||
}
|
||||
|
||||
TEST(Photo_NPR_EdgeEnhance, regression)
|
||||
{
|
||||
string folder = string(cvtest::TS::ptr()->get_data_path()) + "npr/";
|
||||
string original_path = folder + "test1.png";
|
||||
|
||||
Mat source = imread(original_path, IMREAD_COLOR);
|
||||
|
||||
ASSERT_FALSE(source.empty()) << "Could not load input image " << original_path;
|
||||
|
||||
Mat result;
|
||||
edgeEnhance(source,result);
|
||||
|
||||
imwrite(folder + "edge_enhanced.png", result);
|
||||
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ int main()
|
||||
cout << "6) Texture Flattening " << endl;
|
||||
cout << endl;
|
||||
cout << "Press number 1-6 to choose from above techniques: ";
|
||||
int num;
|
||||
int num = 1;
|
||||
cin >> num;
|
||||
cout << endl;
|
||||
|
||||
|
@ -11,7 +11,6 @@
|
||||
* 2) Detail Enhancement
|
||||
* 3) Pencil sketch/Color Pencil Drawing
|
||||
* 4) Stylization
|
||||
* 5) Edge Enhancement
|
||||
*
|
||||
*/
|
||||
|
||||
@ -57,10 +56,9 @@ int main(int argc, char* argv[])
|
||||
cout << "2) Detail Enhancement" << endl;
|
||||
cout << "3) Pencil sketch/Color Pencil Drawing" << endl;
|
||||
cout << "4) Stylization" << endl;
|
||||
cout << "5) Edge Enhancement" << endl;
|
||||
cout << endl;
|
||||
|
||||
cout << "Press number 1-5 to choose from above techniques: ";
|
||||
cout << "Press number 1-4 to choose from above techniques: ";
|
||||
|
||||
cin >> num;
|
||||
|
||||
@ -94,11 +92,5 @@ int main(int argc, char* argv[])
|
||||
stylization(I,img);
|
||||
imshow("Stylization",img);
|
||||
}
|
||||
else if(num == 5)
|
||||
{
|
||||
edgeEnhance(I,img);
|
||||
imshow("Edge Enhance",img);
|
||||
}
|
||||
|
||||
waitKey(0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user