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,22 +22,6 @@
namespace rtengine
{
wavelet_decomposition::wavelet_decomposition(unsigned short ** src, size_t w, size_t h)
: nlevels(0), m_w(w), m_h(h), m_w1(0), m_h1(0)
{
m_w1 = w;
m_h1 = h;
m_c[0] = new wavelet_level<internal_type>(src, m_w1, m_h1);
nlevels = 1;
while(nlevels < maxlevels)
{
m_c[nlevels] = new wavelet_level<internal_type>(m_c[nlevels - 1]->lowfreq(), m_c[nlevels-1]->lfw(), m_c[nlevels-1]->lfh());
nlevels ++;
}
}
wavelet_decomposition::~wavelet_decomposition()
{
for(int i = 0; i < nlevels; i++)
@@ -46,17 +30,5 @@ wavelet_decomposition::~wavelet_decomposition()
}
}
void wavelet_decomposition::reconstruct(unsigned short ** dst, const int * c)
{
for(int level = nlevels - 1; level > 0; level--)
{
int alpha = 1024 + 10 * c[level];
m_c[level]->reconstruct(m_c[level-1]->lowfreq(), alpha);
}
int alpha = 1024 + 10 * c[0];
m_c[0]->reconstruct(dst, alpha, wavelet_level<internal_type>::CLIP);
}
};