[Digikam-devel] extragear/graphics/digikamimageplugins/noisereduction
Gilles Caulier
caulier.gilles at free.fr
Sun Mar 26 19:28:58 BST 2006
SVN commit 522807 by cgilles:
Digikam from trunk : patch from dcamnoise2 author (Peter Heckert) to improve noise reduction tool !!! Thanks to him...
Welcome in digiKam team Peter !
CCMAIL: digikam-devel at kde.org, peter.heckert at arcor.de
M +11 -10 imageeffect_noisereduction.cpp
M +6 -1 noisereduction.cpp
--- trunk/extragear/graphics/digikamimageplugins/noisereduction/imageeffect_noisereduction.cpp #522806:522807
@@ -94,10 +94,10 @@
m_radiusInput = new KDoubleNumInput(firstPage);
m_radiusInput->setPrecision(1);
- m_radiusInput->setRange(0.0, 3.0, 0.1, true);
+ m_radiusInput->setRange(0.0, 10.0, 0.1, true);
QWhatsThis::add( m_radiusInput, i18n("<p><b>Radius</b>: this control selects the "
- "gliding window size used for the filter. Larger values increase "
- "the amount of time needed to filter each pixel in the image and "
+ "gliding window size used for the filter. Larger values do not increase "
+ "the amount of time needed to filter each pixel in the image but "
"can cause blurring. This window moves across the image, and the "
"color in it is smoothed to remove imperfections. "
"In any case it must be about the same size as noise granularity "
@@ -190,7 +190,7 @@
m_lumToleranceInput = new KDoubleNumInput(secondPage);
m_lumToleranceInput->setPrecision(1);
- m_lumToleranceInput->setRange(0.1, 5.0, 0.1, true);
+ m_lumToleranceInput->setRange(0.0, 1.0, 0.1, true);
QWhatsThis::add( m_lumToleranceInput, i18n("<p><b>Luminance</b>: this control set the luminance tolerance "
"of image. It's recommended to use only <b>Color</b> or <b>Luminance</b> tolerance "
"settings to make an image correction, not the both at the same time. This settings "
@@ -204,10 +204,11 @@
QLabel *label3 = new QLabel(i18n("Threshold:"), secondPage);
m_thresholdInput = new KDoubleNumInput(secondPage);
- m_thresholdInput->setPrecision(1);
- m_thresholdInput->setRange(0.1, 5.0, 0.1, true);
- QWhatsThis::add( m_thresholdInput, i18n("<p><b>Threshold</b>: this control set the 2nd derivative of "
- "luminance adjustment. This value should be set so that edges are clearly visible "
+ m_thresholdInput->setPrecision(2);
+ m_thresholdInput->setRange(0.0, 1.0, 0.01, true);
+ QWhatsThis::add( m_thresholdInput, i18n("<p><b>Threshold</b>: Use the slider for coarse adjustment, "
+ " and the spin control for fine adjustment.This controls edge detection sensitivity. "
+ "This value should be set so that edges and details are clearly visible "
"and noise is smoothed out. This value is not bound to any intensity value, it is "
"bound to the second derivative of intensity values. Simply adjust it and watch the "
"preview. Adjustment must be made carefully, because the gap between \"noisy\", "
@@ -223,7 +224,7 @@
m_csmoothInput = new KDoubleNumInput(secondPage);
m_csmoothInput->setPrecision(1);
- m_csmoothInput->setRange(1.0, 5.0, 0.1, true);
+ m_csmoothInput->setRange(0.0, 1.0, 0.1, true);
QWhatsThis::add( m_csmoothInput, i18n("<p><b>Color</b>: this control set the color tolerance of image. "
"It's recommended to use only <b>Color</b> or <b>Luminance</b> tolerance settings to "
"make an image correction, not the both at the same time. This settings don't influence "
@@ -331,7 +332,7 @@
m_dampingInput->setEnabled(true);
m_phaseInput->setEnabled(true);
- m_radiusInput->setValue(1.0);
+ m_radiusInput->setValue(5.0);
m_lumToleranceInput->setValue(1.0);
m_thresholdInput->setValue(0.08);
m_textureInput->setValue(0.0);
--- trunk/extragear/graphics/digikamimageplugins/noisereduction/noisereduction.cpp #522806:522807
@@ -182,6 +182,11 @@
float t = m_csmooth;
float t2 = m_lsmooth;
+ // Values are squared, so that sliders get a nonlinear chracteristic
+ // for better adjustment accuracy when values are small.
+ t*=t;
+ t2*=t2;
+
for (u = 0 ; !m_cancel && (u < width) ; u++)
{
float dpix[3], spix[3];
@@ -236,7 +241,7 @@
dl *= pow(lum2/0.5, m_gamma-1.0);
- if (t2 >= 0.0)
+ if (t2 > 0.0)
dl *= (1.0 - exp(-dl*dl/(2.0*t2*t2)));
// NOTE: commented from original implementation
More information about the Digikam-devel
mailing list