Issue 2844: Wavelet improvements to Edge Sharpness and Denoise and Refine, also some language file fixes.
This commit is contained in:
@@ -645,7 +645,7 @@ do {
|
||||
// Calculate number of tiles. If less than omp_get_max_threads(), then limit num_threads to number of tiles
|
||||
int numthreads = MIN(numtiles,omp_get_max_threads());
|
||||
if(options.rgbDenoiseThreadLimit > 0)
|
||||
numthreads = MIN(numthreads,options.rgbDenoiseThreadLimit);
|
||||
numthreads = MIN(numthreads,options.rgbDenoiseThreadLimit);
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
denoiseNestedLevels = omp_get_max_threads() / numthreads;
|
||||
bool oldNested = omp_get_nested();
|
||||
@@ -655,7 +655,7 @@ do {
|
||||
omp_set_nested(true);
|
||||
if(options.rgbDenoiseThreadLimit > 0)
|
||||
while(denoiseNestedLevels*numthreads > options.rgbDenoiseThreadLimit)
|
||||
denoiseNestedLevels--;
|
||||
denoiseNestedLevels--;
|
||||
#endif
|
||||
if(settings->verbose)
|
||||
printf("RGB_denoise uses %d main thread(s) and up to %d nested thread(s) for each main thread\n",numthreads,denoiseNestedLevels);
|
||||
@@ -739,7 +739,7 @@ do {
|
||||
if(!denoiseMethodRgb){//lab mode
|
||||
//modification Jacques feb 2013 and july 2014
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++) {
|
||||
int i1 = i - tiletop;
|
||||
@@ -784,7 +784,7 @@ do {
|
||||
}
|
||||
} else {//RGB mode
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++) {
|
||||
int i1 = i - tiletop;
|
||||
@@ -817,7 +817,7 @@ do {
|
||||
}
|
||||
} else {//image is not raw; use Lab parametrization
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++) {
|
||||
int i1 = i - tiletop;
|
||||
@@ -1286,7 +1286,7 @@ do {
|
||||
realblue /= 100.f;
|
||||
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16) num_threads(denoiseNestedLevels)
|
||||
#pragma omp parallel for schedule(dynamic,16) num_threads(denoiseNestedLevels)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++){
|
||||
int i1 = i-tiletop;
|
||||
@@ -1332,7 +1332,7 @@ do {
|
||||
}
|
||||
} else {//RGB mode
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels)
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++){
|
||||
int i1 = i-tiletop;
|
||||
@@ -1368,7 +1368,7 @@ do {
|
||||
}
|
||||
} else {
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels)
|
||||
#pragma omp parallel for num_threads(denoiseNestedLevels)
|
||||
#endif
|
||||
for (int i=tiletop; i<tilebottom; i++){
|
||||
int i1 = i-tiletop;
|
||||
@@ -1880,7 +1880,7 @@ SSEFUNCTION bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposit
|
||||
|
||||
float ** WavCoeffs_L = WaveletCoeffs_L.level_coeffs(lvl);
|
||||
if (lvl==maxlvl-1) {
|
||||
float vari[3];
|
||||
float vari[4];
|
||||
int edge=0;
|
||||
ShrinkAllL(WaveletCoeffs_L, buffer, lvl, dir, noisevarlum, madL[lvl], NULL, edge );
|
||||
} else {
|
||||
@@ -2079,7 +2079,7 @@ SSEFUNCTION bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposi
|
||||
{
|
||||
|
||||
int maxlvl = min(WaveletCoeffs_L.maxlevel(),5);
|
||||
if(edge==1) maxlvl=3;//for refine denoise edge wavelet
|
||||
if(edge==1) maxlvl=4;//for refine denoise edge wavelet
|
||||
int maxWL = 0, maxHL = 0;
|
||||
for (int lvl=0; lvl<maxlvl; lvl++) {
|
||||
if(WaveletCoeffs_L.level_W(lvl) > maxWL)
|
||||
@@ -2087,16 +2087,17 @@ SSEFUNCTION bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposi
|
||||
if(WaveletCoeffs_L.level_H(lvl) > maxHL)
|
||||
maxHL = WaveletCoeffs_L.level_H(lvl);
|
||||
}
|
||||
bool memoryAllocationFailed = false;
|
||||
bool memoryAllocationFailed = false;
|
||||
#ifdef _RT_NESTED_OPENMP
|
||||
#pragma omp parallel num_threads(denoiseNestedLevels) if(denoiseNestedLevels>1)
|
||||
#endif
|
||||
{
|
||||
float *buffer[3];
|
||||
float *buffer[4];
|
||||
buffer[0] = new (std::nothrow) float[maxWL*maxHL+32];
|
||||
buffer[1] = new (std::nothrow) float[maxWL*maxHL+64];
|
||||
buffer[2] = new (std::nothrow) float[maxWL*maxHL+96];
|
||||
if(buffer[0] == NULL || buffer[1] == NULL || buffer[2] == NULL) {
|
||||
buffer[3] = new (std::nothrow) float[maxWL*maxHL+128];
|
||||
if(buffer[0] == NULL || buffer[1] == NULL || buffer[2] == NULL || buffer[3] == NULL) {
|
||||
memoryAllocationFailed = true;
|
||||
}
|
||||
|
||||
@@ -2110,7 +2111,7 @@ SSEFUNCTION bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposi
|
||||
}
|
||||
}
|
||||
}
|
||||
for(int i=2;i>=0;i--)
|
||||
for(int i=3;i>=0;i--)
|
||||
if(buffer[i] != NULL)
|
||||
delete [] buffer[i];
|
||||
}
|
||||
@@ -2180,7 +2181,7 @@ SSEFUNCTION void ImProcFunctions::ShrinkAllL(wavelet_decomposition &WaveletCoeff
|
||||
int H_L = WaveletCoeffs_L.level_H(level);
|
||||
|
||||
float ** WavCoeffs_L = WaveletCoeffs_L.level_coeffs(level);
|
||||
|
||||
// printf("OK lev=%d\n",level);
|
||||
float mad_L = madL[dir-1] ;
|
||||
if(edge==1) {
|
||||
noisevarlum = blurBuffer; // we need one buffer, but fortunately we don't have to allocate a new one because we can use blurBuffer
|
||||
|
||||
Reference in New Issue
Block a user