SVN commit 516724 by cgilles:
digikam from trunk : Infrared film sensitivity escursion can be set from 200 to 2600 : - 200..800 : we trying to reproduce Ilford SFX200 infrared film. - Over 800 : we trying to reproduce Kodak HIE hight speed infrared film. You can see IR film comparison at this URL : http://www.pauck.de/marco/photo/infrared/comparison_of_films/comparison_of_films.html CCMAIL: [hidden email] M +8 -7 imageeffect_infrared.cpp M +15 -12 infrared.cpp --- trunk/extragear/graphics/digikamimageplugins/infrared/imageeffect_infrared.cpp #516723:516724 @@ -85,18 +85,19 @@ QGridLayout* gridSettings = new QGridLayout( gboxSettings, 2, 1, marginHint(), spacingHint()); QLabel *label1 = new QLabel(i18n("Sensibility (ISO):"), gboxSettings); - m_sensibilitySlider = new QSlider(1, 7, 1, 1, Qt::Horizontal, gboxSettings); + m_sensibilitySlider = new QSlider(1, 25, 1, 1, Qt::Horizontal, gboxSettings); m_sensibilitySlider->setTracking ( false ); m_sensibilitySlider->setTickInterval(1); m_sensibilitySlider->setTickmarks(QSlider::Below); - m_sensibilityLCDValue = new QLCDNumber (3, gboxSettings); + m_sensibilityLCDValue = new QLCDNumber (4, gboxSettings); m_sensibilityLCDValue->setSegmentStyle ( QLCDNumber::Flat ); m_sensibilityLCDValue->display( QString::number(200) ); whatsThis = i18n("<p>Set here the ISO-sensitivity of the simulated infrared film. " "Increasing this value will increase the portion of green color in the mix. " "It will also increase the halo effect on the hightlights, and the film " - "graininess (if the box is checked)."); + "graininess (if the box is checked).</p>" + "<p>Note: to simulate an <b>Ilford SFX200</b> infrared film, use a sensibility excursion of 200 to 800. A sensibility over 800 simulate <b>Kodak HIE</b> hight speed infrared film. This last one give more dramastic photograph style.</p>"); QWhatsThis::add( m_sensibilityLCDValue, whatsThis); QWhatsThis::add( m_sensibilitySlider, whatsThis); @@ -160,8 +161,8 @@ m_sensibilitySlider->setEnabled(false); Digikam::DImg image = m_imagePreviewWidget->getOriginalRegionImage(); - int s = 100 + 100 * m_sensibilitySlider->value(); - bool g = m_addFilmGrain->isChecked(); + int s = 100 + 100 * m_sensibilitySlider->value(); + bool g = m_addFilmGrain->isChecked(); m_threadedFilter = dynamic_cast<Digikam::DImgThreadedFilter *>(new Infrared(&image, this, s, g)); } @@ -171,8 +172,8 @@ m_addFilmGrain->setEnabled(false); m_sensibilitySlider->setEnabled(false); - int s = 100 + 100 * m_sensibilitySlider->value(); - bool g = m_addFilmGrain->isChecked(); + int s = 100 + 100 * m_sensibilitySlider->value(); + bool g = m_addFilmGrain->isChecked(); Digikam::ImageIface iface(0, 0); --- trunk/extragear/graphics/digikamimageplugins/infrared/infrared.cpp #516723:516724 @@ -21,8 +21,6 @@ * * ============================================================ */ -#define INT_MULT(a,b,t) ((t) = (a) * (b) + 0x80, ((((t) >> 8) + (t)) >> 8)) - // C++ includes. #include <cmath> @@ -56,8 +54,6 @@ // This method is based on the Simulate Infrared Film tutorial from GimpGuru.org web site // available at this url : http://www.gimpguru.org/Tutorials/SimulatedInfrared/ -//#define INT_MULT(a,b,t) ((t) = (a) * (b) + 0x80, ( ( (t >> 8) + t ) >> 8)) - inline static int intMult8(uint a, uint b) { uint t = a * b + 0x80; @@ -70,28 +66,35 @@ return ((t >> 16) + t) >> 16; } +/* More info about IR film can be seen at this url : + +http://www.pauck.de/marco/photo/infrared/comparison_of_films/comparison_of_films.html +*/ + void Infrared::infraredImage(Digikam::DImg *orgImage, int Sensibility, bool Grain) { - // Sensibility: 200..800 + // Sensibility: 200..2600 if (Sensibility <= 0) return; - int Width = orgImage->width(); - int Height = orgImage->height(); - int bytesDepth = orgImage->bytesDepth(); - uint numBytes = orgImage->numBytes(); + int Width = orgImage->width(); + int Height = orgImage->height(); + int bytesDepth = orgImage->bytesDepth(); + uint numBytes = orgImage->numBytes(); bool sixteenBit = orgImage->sixteenBit(); - uchar* data = orgImage->bits(); + uchar* data = orgImage->bits(); // Infrared film variables depending on Sensibility. - // This way try to reproduce famous Ilford SFX200 infrared film + // We can reproduce famous Ilford SFX200 infrared film // http://www.ilford.com/html/us_english/prod_html/sfx200/sfx200.html - // Note : this film have a sensibility escursion from 200 to 800 ISO. + // This film have a sensibility escursion from 200 to 800 ISO. + // Over 800 ISO, we reproduce The Kodak HIE hight speed infrared film. // Infrared film grain. int Noise = (Sensibility + 3000) / 10; if (sixteenBit) Noise = (Noise + 1) * 256 - 1; + int blurRadius = (int)((Sensibility / 200.0) + 1.0); // Gaussian blur infrared hightlight effect // [2 to 5]. float greenBoost = 2.1 - (Sensibility / 2000.0); // Infrared green color boost [1.7 to 2.0]. _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |