18 #ifndef PIC_METRICS_SSIM_INDEX_HPP 19 #define PIC_METRICS_SSIM_INDEX_HPP 23 #include "../base.hpp" 24 #include "../image.hpp" 25 #include "../util/math.hpp" 26 #include "../metrics/base.hpp" 28 #include "../util/array.hpp" 29 #include "../util/std_util.hpp" 31 #include "../filtering/filter_luminance.hpp" 32 #include "../filtering/filter_gaussian_2d.hpp" 33 #include "../filtering/filter_downsampler_2d.hpp" 34 #include "../filtering/filter_ssim.hpp" 79 this->K0 =
K0 > 0.0f ?
K0 : this->
K0;
80 this->K1 =
K1 > 0.0f ?
K1 : this->
K0;
104 Image *ori = imgIn[0];
105 Image *cmp = imgIn[1];
110 bool bAllocated =
false;
115 printf(
"\nDownsampling factor: %f\n", f);
165 Image img_ori_cmp = (*L_ori) * (*L_cmp);
168 L_cmp->applyFunction(
square);
174 if(C0 > 0.0f && C1 > 0.0f) {
178 src.push_back(img_mu1);
179 src.push_back(img_mu2);
180 src.push_back(img_sigma1_sq);
181 src.push_back(img_sigma2_sq);
182 src.push_back(img_sigma1_sigma2);
186 if(ssim_map != NULL) {
190 stdVectorClear<Image>(src);
194 auto vec =
Double(ori_d, cmp_d);
195 stdVectorClear<Image>(vec);
Image * execute(ImageVec imgIn, float &ssim_index, Image *ssim_map=NULL)
execute
Definition: ssim_index.hpp:94
PIC_INLINE bool ImageVecCheck(ImageVec &imgIn, int minInputImages)
ImageVecCheck.
Definition: image_vec.hpp:147
PIC_INLINE bool ImageVecCheckSimilarType(ImageVec &stack)
ImageVecCheckSimilarType.
Definition: image_vec.hpp:126
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
PIC_INLINE long lround(double x)
lround rounds double numbers properly.
Definition: math.hpp:229
SSIMIndex()
Definition: ssim_index.hpp:52
PIC_INLINE float log10fPlusEpsilon(float x)
log10fPlusEpsilon
Definition: math.hpp:355
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
The FilterLuminance class.
Definition: filter_luminance.hpp:33
float getDynamicRange(bool bRobust, float percentile)
getDynamicRange computes the dynamic range of the image.
float heightf
Definition: image.hpp:84
METRICS_DOMAIN type
Definition: ssim_index.hpp:48
void update(float C0, float C1)
update
Definition: filter_ssim.hpp:101
FilterSSIM flt_ssim
Definition: ssim_index.hpp:46
Definition: ssim_index.hpp:38
static Image * execute(Image *imgIn, Image *imgOut, int width, int height)
execute
Definition: filter_downsampler_2d.hpp:100
float dynamic_range
Definition: ssim_index.hpp:41
FilterGaussian2D flt_gauss2D
Definition: ssim_index.hpp:45
float K0
Definition: ssim_index.hpp:41
PIC_INLINE ImageVec Double(Image *img1, Image *img2)
Double creates an std::vector which contains img1 and img2; this is for filters input.
Definition: image_vec.hpp:49
Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter_npasses.hpp:310
PIC_INLINE float square(float x)
Square applies square function to a value.
Definition: math.hpp:188
void update(float K0=0.01f, float K1=0.03f, float sigma_window=1.5f, float dynamic_range=-1.0f, bool bDownsampling=true, METRICS_DOMAIN type=MD_LIN)
update
Definition: ssim_index.hpp:72
float widthf
Definition: image.hpp:84
The FilterSSIM class.
Definition: filter_ssim.hpp:28
void applyFunction(float(*func)(float))
applyFunction is an operator that applies an input function to all values in data.
bool bDownsampling
Definition: ssim_index.hpp:42
FilterLuminance flt_lum
Definition: ssim_index.hpp:44
#define MIN(a, b)
Definition: math.hpp:69
The Image class stores an image as buffer of float.
Definition: image.hpp:60
float * getMeanVal(BBox *box, float *ret)
getMeanVal computes the mean for the current Image.
Definition: filter_radial_basis_function.hpp:1501
void update(float sigma)
update
Definition: filter_gaussian_2d.hpp:72
float PUEncode(float L)
PUEncode encodes luminance values in a perceptually uniform space.
Definition: pu_encode.hpp:37
PIC_INLINE ImageVec Single(Image *img)
Single creates an std::vector which contains img; this is for filters input.
Definition: image_vec.hpp:36
Definition: bilateral_separation.hpp:25
float sigma_window
Definition: ssim_index.hpp:41
#define MAX(a, b)
Definition: math.hpp:73
METRICS_DOMAIN
Definition: base.hpp:30
The FilterGaussian2D class.
Definition: filter_gaussian_2d.hpp:31
float K1
Definition: ssim_index.hpp:41