18 #ifndef PIC_FILTERING_FILTER_SSIM_HPP 19 #define PIC_FILTERING_FILTER_SSIM_HPP 21 #include "../filtering/filter.hpp" 40 int width = src[0]->width;
41 int channels = src[0]->channels;
43 for(
int j = box->
y0; j < box->y1; j++) {
46 for(
int i = box->
x0; i < box->x1; i++) {
47 int ind = (c + i) * channels;
49 float mu1 = src[0]->data[ind];
50 float mu1_sq = mu1 * mu1;
52 float mu2 = src[1]->data[ind];
53 float mu2_sq = mu2 * mu2;
55 float sigma1_sq = src[2]->data[ind] - mu1_sq;
56 float sigma2_sq = src[3]->data[ind] - mu2_sq;
57 float mu1_mu2 = mu1 * mu2;
58 float sigma1_sigma2 = src[4]->data[ind] - mu1_mu2;
61 float tmp1 = (mu1_mu2 * 2.0f +
C0) *
62 (sigma1_sigma2 * 2.0
f +
C1);
65 float tmp2 = (mu1_sq + mu2_sq +
C0 ) *
66 (sigma1_sq + sigma2_sq +
C1);
68 dst->
data[ind] = tmp1 / tmp2;
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
float * data
data is the main buffer where pixel values are stored.
Definition: image.hpp:91
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
The Filter class.
Definition: filter.hpp:50
FilterSSIM()
FilterSSIM.
Definition: filter_ssim.hpp:81
void update(float C0, float C1)
update
Definition: filter_ssim.hpp:101
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_ssim.hpp:38
float C1
Definition: filter_ssim.hpp:73
int y0
Definition: bbox.hpp:32
int minInputImages
Definition: filter_radial_basis_function.hpp:56
The FilterSSIM class.
Definition: filter_ssim.hpp:28
The Image class stores an image as buffer of float.
Definition: image.hpp:60
virtual void f(FilterFData *data)
f
Definition: filter_radial_basis_function.hpp:69
FilterSSIM(float C0, float C1)
FilterSSIM.
Definition: filter_ssim.hpp:90
Definition: bilateral_separation.hpp:25
float C0
Definition: filter_ssim.hpp:73