Wavelet equalizer inprovemts and fixes

-now works in Lab space (on all three components)
-now works in preview (but only at 100% scale, as sharpening and denoise)
-several small fixes and refactorings
This commit is contained in:
Ilia Popov
2010-07-02 21:49:02 +02:00
parent fdc4e1672b
commit 7b35381546
11 changed files with 261 additions and 84 deletions

View File

@@ -22,18 +22,55 @@
#include <wavelet_dec.h>
#include <iostream>
namespace rtengine {
void ImProcFunctions :: waveletEqualizer(Image16 * image, int fw, int fh, const EqualizerParams & params) {
void ImProcFunctions :: waveletEqualizer(Image16 * image) {
wavelet_decomposition r(image->r, fw, fh);
r.reconstruct(image->r, params.c);
if (!params->equalizer.enabled) {
return;
}
wavelet_decomposition g(image->g, fw, fh);
g.reconstruct(image->g, params.c);
limiter<wavelet_decomposition::internal_type> l(0, 65535);
wavelet_decomposition b(image->b, fw, fh);
b.reconstruct(image->b, params.c);
wavelet_decomposition r(image->r, image->getW(), image->getH());
r.reconstruct(image->r, params->equalizer.c, l);
wavelet_decomposition g(image->g, image->getW(), image->getH());
g.reconstruct(image->g, params->equalizer.c, l);
wavelet_decomposition b(image->b, image->getW(), image->getH());
b.reconstruct(image->b, params->equalizer.c, l);
}
void ImProcFunctions :: waveletEqualizer (LabImage * image, bool luminance, bool chromaticity) {
if (!params->equalizer.enabled) {
return;
}
clock_t start = clock();
if (luminance) {
limiter<wavelet_decomposition::internal_type> l1(0, 65535);
wavelet_decomposition L(image->L, image->W, image->H);
L.reconstruct(image->L, params->equalizer.c, l1);
}
if (chromaticity) {
limiter<wavelet_decomposition::internal_type> l2(-32768, 32767);
wavelet_decomposition a(image->a, image->W, image->H);
a.reconstruct(image->a, params->equalizer.c, l2);
wavelet_decomposition b(image->b, image->W, image->H);
b.reconstruct(image->b, params->equalizer.c, l2);
}
std::cout << "Wavelets done in " << (double)(clock() - start) / CLOCKS_PER_SEC << std::endl;
}