Local complexity - Add 'Basic' to 'Standard'(Normal) and 'Advanced'(Expert) (#5858)

* Mode simple to color and light

* Exposure complex

* Vibrance and SH complex

* Soft and Blur complex

* Common mask complex

* Sharp Retinex complex

* Localcontrast complex

* Change label tooltip complex

* Change labels and tooltip

* Change tooltip french

* Change default value scope TM

* Some forgotten hide..with basic in inverse mode

* Another hide in basic and inverse

* Change some type in labels

* Change typo contrast

* Refine some labels tootips

* Change after review Ingo - thanks

* Improve history behaviour when changing local adjustments complexity mode

* Added normal to original retinex - basic to dehaze

* Fixed bad behavior normal expert Color and Light

* Improve edge sharpness

* Another improvment edge sharpness

* various improvement

* locallab: speedup and reduced memory usage for wavcontrast4()

* remove file

* French labels complexity

* calckoe(): cleanup, speedup and bugfix for 3x3 gaussian kernels

* calckoe(): cleanup for 3x3 gaussian kernels

* calckoe(): fill koeli[] with zeroes if level <= 1 && tloww >= 75.f

* GUI part fixes and cleanup

* Fix in Locallab Settings panel

Additionnal minor fix in Preferences windows

* Change default mode complexity in preferences - basic

* Change complexity in option

* Improve gui when lauch first image

Co-authored-by: Ingo Weyrich <heckflosse67@gmx.de>
Co-authored-by: Pandagrapher <pierre.cab@gmail.com>
This commit is contained in:
Desmis 2020-08-10 13:18:21 +02:00 committed by GitHub
parent 25c5e62b72
commit 130fbb8eb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 2019 additions and 1062 deletions

View File

@ -1929,7 +1929,7 @@ TP_LOCALLAB_EXPRETITOOLS;Outils Retinex avancés
TP_LOCALLAB_EXPSHARP_TOOLTIP;RT-Spot minimum 39*39.\nUtiliser de basses valeurs de transition et de hautes valeurs de transition affaiblissement et Etendue pour simuler un petit RT-spot.
TP_LOCALLAB_EXPTOOL;Outils exposition
TP_LOCALLAB_EXPTRC;Courbe de réponse Tonale - TRC
TP_LOCALLAB_EXP_TOOLNAME;Atténuation contraste -Compression Dynamique & Exposition- 10
TP_LOCALLAB_EXP_TOOLNAME;Atténuation Contraste -Compression Dynamique & Exposition- 10
TP_LOCALLAB_FATAMOUNT;Quantité
TP_LOCALLAB_FATANCHOR;Ancre
TP_LOCALLAB_FATANCHORA;Décalage
@ -1987,10 +1987,10 @@ TP_LOCALLAB_LABGRIDMERG;Arrière plan
TP_LOCALLAB_LABGRID_VALUES;Haut(a)=%1 Haut(b)=%2\nBas(a)=%3 Bas(b)=%4
TP_LOCALLAB_LABSTRUM;Masque Structure
TP_LOCALLAB_LAPLACC;ΔØ Masque Laplacien résoud PDE
TP_LOCALLAB_LAPLACE;Δ - Laplacien seuil ΔE
TP_LOCALLAB_LAPLACEXP;∆ - Laplacian seuil
TP_LOCALLAB_LAPMASKCOL;∆ - Laplacian seuil masque
TP_LOCALLAB_LAPRAD_TOOLTIP;Eviter d'utiliser Radius and Laplace Seuil en même temps.\nLaplacien seuil reduit le contraste, artéfacts, adoucit le résultat (si PDE réglages activé).
TP_LOCALLAB_LAPLACE;Laplacien seuil ΔE
TP_LOCALLAB_LAPLACEXP;Laplacien seuil
TP_LOCALLAB_LAPMASKCOL;Laplacien seuil masque
TP_LOCALLAB_LAPRAD_TOOLTIP;Eviter d'utiliser Radius and Laplace Seuil en même temps.\nLaplacien seuil reduit le contraste, artéfacts, adoucit le résultat.
TP_LOCALLAB_LAP_MASK_TOOLTIP;Résoud PDE (Equation aux dérivées partielles) pour tous les masques Laplacien.\nSi activé Laplacien masque seuil reduit les artéfacts et adoucit les résultats.\nSi désactivé réponse linaire.
TP_LOCALLAB_LC_FFTW_TOOLTIP;FFT améliore la qualité et autorise de grands rayons, mais accroît les temps de traitement.\nCe temps dépends de la surface devant être traitée.\nA utiliser de préférences pour de grands rayons.\n\nLes Dimensions peuvent être réduites de quelques pixels pour optimiser FFTW.\nCette optimisation peut réduire le temps de traitement d'un facteur de 1.5 à 10.\n
TP_LOCALLAB_LC_TOOLNAME;Constrast Local & Ondelettes (Défauts) - 7
@ -2004,7 +2004,7 @@ TP_LOCALLAB_LIGHTN_TOOLTIP;En mode inverse: selection = -100 force la luminance
TP_LOCALLAB_LIGHTRETI;Luminosité
TP_LOCALLAB_LINEAR;Linéarité
TP_LOCALLAB_LIST_NAME;Ajoute un outil au spot courant...
TP_LOCALLAB_LIST_TOOLTIP;Choisir un outil et ensuite son niveau de complexité "Normal" ou "Expert".\nLe nombre traduit la place de l'outil dans le processus de chaque RT-Spot
TP_LOCALLAB_LIST_TOOLTIP;Vous pouvez choisir 3 niveaux de complexité pour chaque outil: Basic, Normal & Avancé.\nLe réglage par défaut est Basic mais il peut être changé dans Préférences.\nVous pouvez aussi changer ce niveau pour chaque outil en cours.
TP_LOCALLAB_LMASK_LEVEL_TOOLTIP;Donne priorité à l'action sur les tons moyens et hautes lumières en choisissant les niveaux concernés d'ondelettes
TP_LOCALLAB_LMASK_LL_TOOLTIP;Give priority to action on midtones and high lights
TP_LOCALLAB_LOCCONT;Masque Flou
@ -2083,8 +2083,8 @@ TP_LOCALLAB_MERTWO;Soustrait
TP_LOCALLAB_METHOD_TOOLTIP;'Enhanced + chroma denoise' significantly increases processing times.\nBut reduce artifacts.
TP_LOCALLAB_MLABEL;Récupère les données Min=%1 Max=%2 (Clip - décalage)
TP_LOCALLAB_MLABEL_TOOLTIP;'Doit être' près de min=0 max=32768 (log mode) mais d'autres valeurs sont possibles.\nVous pouvez agir sur les données récupérées (CLIP) et décalage pour normaliser.\n\nRécupère les données image sans mélange.
TP_LOCALLAB_MODE_EXPERT;Expert
TP_LOCALLAB_MODE_NORMAL;Normal
TP_LOCALLAB_MODE_EXPERT;Avancé
TP_LOCALLAB_MODE_NORMAL;Standard
TP_LOCALLAB_MRFIV;Arrière plan
TP_LOCALLAB_MRFOU;Spot précédent
TP_LOCALLAB_MRONE;Rien
@ -2112,7 +2112,7 @@ TP_LOCALLAB_ORIGLC;Fusion seulement avec image originale
TP_LOCALLAB_ORRETILAP_TOOLTIP;Agit sur un deuxième seuil Laplacien, pour prendre en compte ΔE pour différencier l'action nottament avec l'arrière plan (différent de Etendue)
TP_LOCALLAB_ORRETISTREN_TOOLTIP;Aagit sur un seuil Laplacien, plus grande est l'action, plus les différences de contraste seront réduites
TP_LOCALLAB_PASTELS2;Vibrance
TP_LOCALLAB_PDE;Atténuation de contraste - Compression dynamique
TP_LOCALLAB_PDE;Atténuation de Contraste - Compression dynamique
TP_LOCALLAB_PDEFRA;Contraste atténuation ƒ
TP_LOCALLAB_PDEFRAME_TOOLTIP;PDE IPOL - algorithme personnel adapté de IPOL à Rawtherapee: conduit à des résultats très variés et a besoin de différents réglages que Standard (Noir négatif, gamma < 1,...)\nPeut être utils pour des iamges sous-exposées ou avec une étendue dynamique importante.\n
TP_LOCALLAB_PREVIEW;Prévisualisation ΔE
@ -2219,8 +2219,8 @@ TP_LOCALLAB_SHOWPOISSON;Poisson (pde ƒ)
TP_LOCALLAB_SHOWR;Masque et modifications
TP_LOCALLAB_SHOWREF;Prévisualisation ΔE
TP_LOCALLAB_SHOWS;Masque et modifications
TP_LOCALLAB_SHOWSTRUC;Montrer Spot structure (expert)
TP_LOCALLAB_SHOWSTRUCEX;Montrer Spot structure (expert)
TP_LOCALLAB_SHOWSTRUC;Montrer Spot structure (avancé)
TP_LOCALLAB_SHOWSTRUCEX;Montrer Spot structure (avancé)
TP_LOCALLAB_SHOWT;Masque et modifications
TP_LOCALLAB_SHOWVI;Masque et modifications
TP_LOCALLAB_SHRESFRA;Ombres/Lumières
@ -2255,7 +2255,7 @@ TP_LOCALLAB_STRRETI_TOOLTIP;Si force Retinex < 0.2 seul Dehaze est activé.\nSi
TP_LOCALLAB_STRUC;Structure
TP_LOCALLAB_STRUCCOL;Structure
TP_LOCALLAB_STRUCCOL1;Spot Structure
TP_LOCALLAB_STRUCT_TOOLTIP;Utilise l'algorithme de Sobel pour prendre en compte la structure dans la détection de forme.\nvous pouvez prévisualiser avec "masque et modifications - Montrer structure spot".\n\nPeut être utilisé avec masques (expert) structure, flouter, ondelettes pour améliorer la détection de bords.\n\nA besoin de réglages sans-masque pour êtrre activé (luminosité, exposition...)
TP_LOCALLAB_STRUCT_TOOLTIP;Utilise l'algorithme de Sobel pour prendre en compte la structure dans la détection de forme.\nvous pouvez prévisualiser avec "masque et modifications - Montrer structure spot".\n\nPeut être utilisé avec masques (avancé) structure, flouter, ondelettes pour améliorer la détection de bords.\n\nA besoin de réglages sans-masque pour êtrre activé (luminosité, exposition...)
TP_LOCALLAB_STRUMASKCOL;Structure masque force
TP_LOCALLAB_STRUMASK_TOOLTIP;Génère un masque structure qui va différencier les aplats et reliefs.\nSi structure masque comme outil est activé, ce masque est untilisé en plus des autres outils (gamma, slope, courbe contraste ...)
TP_LOCALLAB_STYPE;Forme méthode

View File

@ -1086,7 +1086,7 @@ HISTORY_MSG_841;Local - LC curve
HISTORY_MSG_842;Local - Contrast Threshold Mask blur
HISTORY_MSG_843;Local - Radius Mask blur
HISTORY_MSG_844;Local - Color Mask fftw
HISTORY_MSG_845;Local - Encoding log
HISTORY_MSG_845;Local - log encoding
HISTORY_MSG_846;Local - Encoding auto
HISTORY_MSG_847;Local - Source Gray
HISTORY_MSG_848;Local - Source Gray auto
@ -1132,8 +1132,8 @@ HISTORY_MSG_888;Local - Contrast Wavelet Balance Threshold
HISTORY_MSG_889;Local - Contrast Wavelet Graduated Strength
HISTORY_MSG_890;Local - Contrast Wavelet Graduated angle
HISTORY_MSG_891;Local - Contrast Wavelet Graduated
HISTORY_MSG_892;Local - Encoding log Graduated Strength
HISTORY_MSG_893;Local - Encoding log Graduated angle
HISTORY_MSG_892;Local - Log Encoding Graduated Strength
HISTORY_MSG_893;Local - Log Encoding Graduated angle
HISTORY_MSG_894;Local - Color Preview dE
HISTORY_MSG_897;Local - Contrast Wavelet ES strength
HISTORY_MSG_898;Local - Contrast Wavelet ES radius
@ -1195,6 +1195,7 @@ HISTORY_MSG_953;Local - Mask Common blend chroma
HISTORY_MSG_954;Local - Show-hide tools
HISTORY_MSG_955;Local - Enable Spot
HISTORY_MSG_956;Local - CH Curve
HISTORY_MSG_957;Local - Tool complexity mode
HISTORY_MSG_BLSHAPE;Blur by level
HISTORY_MSG_BLURCWAV;Blur chroma
HISTORY_MSG_BLURWAV;Blur luminance
@ -1603,8 +1604,9 @@ PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
PREFERENCES_CLUTSDIR;HaldCLUT directory
PREFERENCES_CMMBPC;Black point compensation
PREFERENCES_COMPLEXITYLOC;Default complexity for Local Adjustments
PREFERENCES_COMPLEXITY_EXP;Expert
PREFERENCES_COMPLEXITY_NORM;Normal
PREFERENCES_COMPLEXITY_EXP;Advanced
PREFERENCES_COMPLEXITY_NORM;Standard
PREFERENCES_COMPLEXITY_SIMP;Basic
PREFERENCES_CROP;Crop Editing
PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop
PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop
@ -2363,7 +2365,7 @@ TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal - direct blur and noise with all settings.\n
TP_LOCALLAB_BLNOI_EXP;Blur & Noise
TP_LOCALLAB_BLNORM;Normal
TP_LOCALLAB_BLSYM;Symmetric
TP_LOCALLAB_BLUFR;Smooth - Blur - Grain - Denoise
TP_LOCALLAB_BLUFR;Blur - Grain & Denoise
TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n*Blur the background by a RT-spot fully covering the image (high values for scope and transition) - normal or inverse.\n*Isolate the foreground by one or more excluding RT-spot with the tools you want (increse scope).\n\nThis module can be used in additional noise reduction,including "median" and "Guided filter"
TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain
TP_LOCALLAB_BLURCBDL;Blur levels 0-1-2-3-4
@ -2373,7 +2375,7 @@ TP_LOCALLAB_BLURLC;Luminance Only
TP_LOCALLAB_BLURLEVELFRA;Blur Levels
TP_LOCALLAB_BLURMASK_TOOLTIP;Generate a blur mask, take into account the structure with the contrast threshold Mask Blur slider.
TP_LOCALLAB_BLURRESIDFRA;Blur Residual
TP_LOCALLAB_BLUR_TOOLNAME;Smooth Blur Gain & Denoise - 1
TP_LOCALLAB_BLUR_TOOLNAME;Blur Grain & Denoise - 1
TP_LOCALLAB_BLWH;All changes forced in Black and White
TP_LOCALLAB_BLWH_TOOLTIP;Force color change composante "a" and "b" to zero.\nUsefull when the user chooses black and white processes, or film.
TP_LOCALLAB_BUTTON_ADD;Add
@ -2385,7 +2387,7 @@ TP_LOCALLAB_CBDL;Contrast by detail levels
TP_LOCALLAB_CBDLCLARI_TOOLTIP;Takes the midtones and enhance them.
TP_LOCALLAB_CBDL_ADJ_TOOLTIP;Acts as a wavelet tools.\nThe first level (0) acts on 2x2 details.\nThe last level (5) acts on 64x64 details.
TP_LOCALLAB_CBDL_THRES_TOOLTIP;Prevent the sharpening of noise
TP_LOCALLAB_CBDL_TOOLNAME;CBDL (Defects) - 2
TP_LOCALLAB_CBDL_TOOLNAME;CBDL - 2
TP_LOCALLAB_CENTER_X;Center X
TP_LOCALLAB_CENTER_Y;Center Y
TP_LOCALLAB_CH;Curves CL - LC
@ -2414,7 +2416,7 @@ TP_LOCALLAB_COLORDEPREV_TOOLTIP;Button Preview ΔE needs that only one tool is e
TP_LOCALLAB_COLORDE_TOOLTIP;Show preview selection ΔE in blue if negative and in green if positive.\n\nMask and modifications (show modifications without mask): show real modifications if positive, show enhanced modifications (only luminance) with blue and yellow if negative.
TP_LOCALLAB_COLORSCOPE;Scope Color Tools
TP_LOCALLAB_COLORSCOPE_TOOLTIP;Use a common Scope for Color and light, Shadows highlight, Vibrance.\nOthers tools have their specific scope.
TP_LOCALLAB_COLOR_TOOLNAME;Color&Light (Defects) - 11
TP_LOCALLAB_COLOR_TOOLNAME;Color & Light - 11
TP_LOCALLAB_COL_NAME;Name
TP_LOCALLAB_COL_VIS;Status
TP_LOCALLAB_COMPFRA;Levels Directional Contrast
@ -2504,13 +2506,13 @@ TP_LOCALLAB_EXPMERGEFILE_TOOLTIP;Allows various possibilities to blend image (as
TP_LOCALLAB_EXPMETHOD_TOOLTIP;Standard : use an algorithm similar as main Exposure but in L*a*b* and taking account of deltaE.\n\nContrast attenuator : use another algorithm also with deltaE and with Poisson equation to solve Laplacian in Fourier space.\nContrast attenuator, Dynamic range compression and Standard can be combined.\nFFTW Fourier Transform is optimized in size to reduce processing time.\nReduce artifacts and noise.
TP_LOCALLAB_EXPNOISEMETHOD_TOOLTIP;Apply a median before Laplace transform to prevent artifacts (noise).\nYou can also use "Denoise" tool.
TP_LOCALLAB_EXPOSE;Dynamic Range Compr. & Exposure
//TP_LOCALLAB_EXPOSURE_TOOLTIP;In some cases (strong shadows ..) you can use others modules "Shadows Highlights", "Tone equalizer", "TRC", "Encoding Log"...
//TP_LOCALLAB_EXPOSURE_TOOLTIP;In some cases (strong shadows ..) you can use others modules "Shadows Highlights", "Tone equalizer", "TRC", "Log Encoding"...
TP_LOCALLAB_EXPOSURE_TOOLTIP;Modify exposure in L*a*b space using Laplacian PDE algorithms to take into account dE and minimize artifacts.
TP_LOCALLAB_EXPRETITOOLS;Advanced Retinex Tools
TP_LOCALLAB_EXPSHARP_TOOLTIP;RT-Spot minimum 39*39.\nUse low transition values and high decay transition values and scope to simulate small RT-spot.
TP_LOCALLAB_EXPTOOL;Tools exposure
TP_LOCALLAB_EXPTRC;Tone Response Curve - TRC
TP_LOCALLAB_EXP_TOOLNAME;Contrast attenuator -Dynamic Range Compression & Exposure- 10
TP_LOCALLAB_EXP_TOOLNAME;Contrast Attenuator -Dynamic Range Compression & Exposure- 10
TP_LOCALLAB_FATAMOUNT;Amount
TP_LOCALLAB_FATANCHOR;Anchor
TP_LOCALLAB_FATANCHORA;Offset
@ -2535,7 +2537,7 @@ TP_LOCALLAB_GAMSH;Gamma
TP_LOCALLAB_GRADANG;Gradient angle
TP_LOCALLAB_GRADANG_TOOLTIP;Rotation angle in degrees : -180 0 +180
TP_LOCALLAB_GRADFRA;Graduated Filter Mask
TP_LOCALLAB_GRADGEN_TOOLTIP;Graduated filter is supplied with Color and Light & merge file, Exposure & mask, Shadows Highlight, Vibrance, Encoding log.\n\nVibrance, Color and Light & merge file, are provided with GF luminance, chrominance, Hue.\nFeather is located in settings.
TP_LOCALLAB_GRADGEN_TOOLTIP;Graduated filter is supplied with Color and Light & merge file, Exposure & mask, Shadows Highlight, Vibrance, Log Encoding.\n\nVibrance, Color and Light & merge file, are provided with GF luminance, chrominance, Hue.\nFeather is located in settings.
TP_LOCALLAB_GRADLOGFRA;Graduated Filter Luminance
TP_LOCALLAB_GRADSTR;Gradient strength
TP_LOCALLAB_GRADSTRAB_TOOLTIP;Filter chroma strength
@ -2568,13 +2570,13 @@ TP_LOCALLAB_LABGRIDMERG;Background
TP_LOCALLAB_LABGRID_VALUES;High(a)=%1 High(b)=%2\nLow(a)=%3 Low(b)=%4
TP_LOCALLAB_LABSTRUM;Mask Structure
TP_LOCALLAB_LAPLACC;ΔØ Mask Laplacian solve PDE
TP_LOCALLAB_LAPLACE;Δ - Laplacian threshold ΔE
TP_LOCALLAB_LAPLACEXP;∆ - Laplacian threshold
TP_LOCALLAB_LAPMASKCOL;∆ - Laplacian threshold mask
TP_LOCALLAB_LAPRAD_TOOLTIP;Avoid using Radius and Laplace Threshold (expert) simultaneously.\nLaplacian threshold reduce contrast, artifacts, smooth result.
TP_LOCALLAB_LAPLACE;Laplacian threshold ΔE
TP_LOCALLAB_LAPLACEXP;Laplacian threshold
TP_LOCALLAB_LAPMASKCOL;Laplacian threshold mask
TP_LOCALLAB_LAPRAD_TOOLTIP;Avoid using Radius and Laplace Threshold (advanced) simultaneously.\nLaplacian threshold reduce contrast, artifacts, smooth result.
TP_LOCALLAB_LAP_MASK_TOOLTIP;Solve PDE for all Laplacian masks.\nIf enabled Laplacian threshold mask reduce artifacts and smooth result.\nIf disabled linear response.
TP_LOCALLAB_LC_FFTW_TOOLTIP;FFT improve quality and allow big radius, but increases the treatment time.\nThe treatment time depends on the surface to be treated.\nTo be used preferably for large radius.\n\nDimensions can be reduced by a few pixels to optimize FFTW.\nThis optimization can reduce the treatment time by a factor of 1.5 to 10.\n
TP_LOCALLAB_LC_TOOLNAME;Local Constrast & Wavelet (Defects) - 7
TP_LOCALLAB_LC_TOOLNAME;Local Contrast & Wavelets - 7
TP_LOCALLAB_LEVELBLUR;Maximum Blur levels
TP_LOCALLAB_LEVELLOCCONTRAST_TOOLTIP;On the abscissa local contrast (near concept luminance). On the ordinate, amplification or reduction local contrast.
TP_LOCALLAB_LEVELWAV;Ψ Wavelets Levels
@ -2585,17 +2587,17 @@ TP_LOCALLAB_LIGHTN_TOOLTIP;In inverse mode: selection = -100 force luminance to
TP_LOCALLAB_LIGHTRETI;Lightness
TP_LOCALLAB_LINEAR;Linearity
TP_LOCALLAB_LIST_NAME;Add tool to current spot...
TP_LOCALLAB_LIST_TOOLTIP;Choose a tool and then its level of complexity "Normal" or "Expert".\nThe number reflects the place of the tool in the process of each RT-Spot
TP_LOCALLAB_LIST_TOOLTIP;You can select 3 levels of complexity for each tool: Basic, Standard & Advanced.\nThe default setting for all tools is Basic but this can be changed in the Preferences window.\nYou can also change the level of complexity on a per-tool basis while you are editing
TP_LOCALLAB_LMASK_LEVEL_TOOLTIP;Give priority to action on midtones and high lights and by choosing the concerned wavelet levels
TP_LOCALLAB_LMASK_LL_TOOLTIP;Give priority to action on midtones and high lights
TP_LOCALLAB_LOCCONT;Unsharp Mask
TP_LOCALLAB_LOC_CONTRAST;Local contrast -Wavelet-defects
TP_LOCALLAB_LOC_CONTRAST;Local contrast & Wavelets
TP_LOCALLAB_LOC_CONTRASTPYR;Ψ Pyramid 1:
TP_LOCALLAB_LOC_CONTRASTPYR2;Ψ Pyramid 2:
TP_LOCALLAB_LOC_CONTRASTPYR2LAB;Contrast by Levels- Tone Mapping - Dir.Contrast
TP_LOCALLAB_LOC_CONTRASTPYRLAB;Graduated Filter - Edge Sharpness - Blur
TP_LOCALLAB_LOC_RESIDPYR;Residual Image Main
TP_LOCALLAB_LOG;Encoding log
TP_LOCALLAB_LOC_RESIDPYR;Residual Image (Main)
TP_LOCALLAB_LOG;Log Encoding
TP_LOCALLAB_LOGAUTO;Automatic
TP_LOCALLAB_LOGAUTO_TOOLTIP;Pressing this button will bring an evaluation of dynamic range and Source Gray point (if "Automatic" Source gray enabled).\nTo be able to touch up the automatic values, press the button again
TP_LOCALLAB_LOGBASE_TOOLTIP;Default = 2.\nValues less than 2 reduce the action of the algorithm, the shadows are darker, the highlights are brighter.\nValues greater than 2 change the action of the algorithm, the shadows are grayer the highlights are more washed out
@ -2607,7 +2609,7 @@ TP_LOCALLAB_LOGLIN;Logarithm mode
TP_LOCALLAB_LOGPFRA;Relative Exposure Levels
TP_LOCALLAB_LOGSRCGREY_TOOLTIP;Estimated gray point value of the image, early in the process
TP_LOCALLAB_LOGTARGGREY_TOOLTIP;You can change this value to adapt it to your taste.
TP_LOCALLAB_LOG_TOOLNAME;Encoding log - 0
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding - 0
TP_LOCALLAB_LUM;Curves LL - CC
TP_LOCALLAB_LUMADARKEST;Darkest
TP_LOCALLAB_LUMASK;Luminance Background Mask
@ -2616,7 +2618,8 @@ TP_LOCALLAB_LUMAWHITESEST;Whiteest
TP_LOCALLAB_LUMFRA;L*a*b* standard
TP_LOCALLAB_LUMONLY;Luminance only
TP_LOCALLAB_MASKCOM;Common Color Mask
TP_LOCALLAB_MASKCOM_TOOLTIP;These masks works as all tools, they take into account scope color.\nThey are different from others masks which complete a tool (Color and Light, Exposure...)
TP_LOCALLAB_MASKCOM_TOOLTIP;A tool in its own right.\nCan be used to adjust the image appearance (chrominance, luminance, contrast) and texture as a function of Scope.
//These masks works as all tools, they take into account scope color.\nThey are different from others masks which complete a tool (Color and Light, Exposure...)
TP_LOCALLAB_MASFRAME;Mask and Merge
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTake into account deltaE image to avoid retouching the selection area when sliders gamma mask, slope mask, chroma mask and curves contrast , levels contrasts, and mask blur, structure(if enabled tool) are used.\nDisabled in Inverse
TP_LOCALLAB_MASK;Mask
@ -2665,8 +2668,9 @@ TP_LOCALLAB_MERTWO;Substract
TP_LOCALLAB_METHOD_TOOLTIP;'Enhanced + chroma denoise' significantly increases processing times.\nBut reduce artifacts.
TP_LOCALLAB_MLABEL;Restored datas Min=%1 Max=%2 (Clip - Offset)
TP_LOCALLAB_MLABEL_TOOLTIP;'Should be' near min=0 max=32768 (log mode) but others values are possible.\nYou can act on Clip Restored datas and Offset to normalize.\n\nRestored image with no mixture.
TP_LOCALLAB_MODE_EXPERT;Expert
TP_LOCALLAB_MODE_NORMAL;Normal
TP_LOCALLAB_MODE_EXPERT;Advanced
TP_LOCALLAB_MODE_NORMAL;Standard
TP_LOCALLAB_MODE_SIMPLE;Basic
TP_LOCALLAB_MRFIV;Background
TP_LOCALLAB_MRFOU;Previous Spot
TP_LOCALLAB_MRONE;None
@ -2694,12 +2698,12 @@ TP_LOCALLAB_ORIGLC;Merge only with original image
TP_LOCALLAB_ORRETILAP_TOOLTIP;Acts on a second Laplacian threshold, to take into account ΔE to differentiate the action especially with the background (different from Scope)
TP_LOCALLAB_ORRETISTREN_TOOLTIP;Acts on the Laplacian threshold, the greater the action, the more the differences in contrast will be reduced
TP_LOCALLAB_PASTELS2;Vibrance
TP_LOCALLAB_PDE;Contrast attenuator - Dynamic Range compression
TP_LOCALLAB_PDEFRA;Contrast attenuator ƒ
TP_LOCALLAB_PDE;Contrast Attenuator - Dynamic Range compression
TP_LOCALLAB_PDEFRA;Contrast Attenuator ƒ
TP_LOCALLAB_PDEFRAME_TOOLTIP;PDE IPOL - personal algorithm adapted from IPOL to Rawtherapee: lead to very different results and needs differents settings that Standard (negative black, gamma < 1,...)\nMay be usefull for low exposure or high dynamic range.\n
TP_LOCALLAB_PREVIEW;Preview ΔE
TP_LOCALLAB_PREVHIDE;Hide all settings
TP_LOCALLAB_PREVSHOW;Show all settings
TP_LOCALLAB_PREVHIDE;Hide additional settings
TP_LOCALLAB_PREVSHOW;Show additional settings
TP_LOCALLAB_PROXI;ΔE decay
TP_LOCALLAB_QUALCURV_METHOD;Curves type
TP_LOCALLAB_QUAL_METHOD;Global quality
@ -2722,7 +2726,7 @@ TP_LOCALLAB_RESIDHI;Highlights
TP_LOCALLAB_RESIDHITHR;Highlights threshold
TP_LOCALLAB_RESIDSHA;Shadows
TP_LOCALLAB_RESIDSHATHR;Shadows threshold
TP_LOCALLAB_RETI;Dehaze - Retinex Strong contrast
TP_LOCALLAB_RETI;Dehaze - Retinex
TP_LOCALLAB_RETIFRA;Retinex
TP_LOCALLAB_RETIM;Original Retinex
TP_LOCALLAB_RETITOOLFRA;Retinex Tools
@ -2762,8 +2766,9 @@ TP_LOCALLAB_SH1;Shadows Highlights
TP_LOCALLAB_SH2;Equalizer
TP_LOCALLAB_SHADEX;Shadows
TP_LOCALLAB_SHADEXCOMP;Shadows compression & tonal width
TP_LOCALLAB_SHADHIGH;ShadowsHighlight - Tone equalizer
TP_LOCALLAB_SHADOWHIGHLIGHT_TOOLTIP;Can be used instead - or in complement - of exposure module in difficult cases.\nThe use of Denoise may be necessary : lightening the shadows.\n\nCan be used as graduated filter (increase Scope)
TP_LOCALLAB_SHADHIGH;Shadows/Highlights-Tone equalizer
TP_LOCALLAB_SHADOWHIGHLIGHT_TOOLTIP;Adjust shadows & highlights either with shadows & highlights sliders or with a tone equalizer.\nCan be used instead of, or in conjunction with the Exposure module.\nCan also be used as a graduated filter.
//Can be used instead - or in complement - of exposure module in difficult cases.\nThe use of Denoise may be necessary : lightening the shadows.\n\nCan be used as graduated filter (increase Scope)
TP_LOCALLAB_SHAMASKCOL;Shadows mask
TP_LOCALLAB_SHAPETYPE;Shape RT-spot area
TP_LOCALLAB_SHAPE_TOOLTIP;Elipse is normal mode.\nRectangle can be used in some cases, for example to work in full image in conjonction with delimiters outside preview, transition = 100.\n\nPolygone - Beziers are waiting for GUI...
@ -2801,13 +2806,13 @@ TP_LOCALLAB_SHOWPOISSON;Poisson (pde ƒ)
TP_LOCALLAB_SHOWR;Mask and modifications
TP_LOCALLAB_SHOWREF;Preview ΔE
TP_LOCALLAB_SHOWS;Mask and modifications
TP_LOCALLAB_SHOWSTRUC;Show structure Spot(expert)
TP_LOCALLAB_SHOWSTRUCEX;Show structure Spot(expert)
TP_LOCALLAB_SHOWSTRUC;Show structure Spot(advanced)
TP_LOCALLAB_SHOWSTRUCEX;Show structure Spot(advanced)
TP_LOCALLAB_SHOWT;Mask and modifications
TP_LOCALLAB_SHOWVI;Mask and modifications
TP_LOCALLAB_SHRESFRA;Shadows/Highlights
TP_LOCALLAB_SHTRC_TOOLTIP;Modifies the tones of the image by acting on a TRC (Tone Response Curve).\nGamma acts mainly on light tones.\nSlope acts mainly on dark tones
TP_LOCALLAB_SH_TOOLNAME;Shadows Highlight & Tone Equalizer - 5
TP_LOCALLAB_SH_TOOLNAME;Shadows Highlights & Tone Equalizer - 5
TP_LOCALLAB_SIGMAWAV;Attenuation Response
TP_LOCALLAB_SIM;Simple
TP_LOCALLAB_SLOMASKCOL;Slope mask
@ -2821,7 +2826,7 @@ TP_LOCALLAB_SOFTRETI;Reduce artifact ΔE
TP_LOCALLAB_SOFTRETI_TOOLTIP;Take into account deltaE to improve Transmission map
TP_LOCALLAB_SOFT_TOOLNAME;Soft Light & Original Retinex - 6
TP_LOCALLAB_SOURCE_GRAY;Value
TP_LOCALLAB_SPECCASE; Specific cases
TP_LOCALLAB_SPECCASE;Specific cases
TP_LOCALLAB_SPECIAL;Special use of RGB curves
TP_LOCALLAB_SPECIAL_TOOLTIP;Only for this RGB curve, disabled (or reduce effects) of Scope, mask...for example, if you want to have a negative effect.
TP_LOCALLAB_SPOTNAME;New Spot
@ -2837,7 +2842,7 @@ TP_LOCALLAB_STRRETI_TOOLTIP;if Strength Retinex < 0.2 only Dehaze is enabled.\ni
TP_LOCALLAB_STRUC;Structure
TP_LOCALLAB_STRUCCOL;Structure
TP_LOCALLAB_STRUCCOL1;Structure Spot
TP_LOCALLAB_STRUCT_TOOLTIP;Use Sobel algorithm to take into account structure in shape detection.\nyou can have a preview by activating "mask and modifications - Show structure spot".\n\nCan be used in conjunction with masks (expert) structure, blur, wavelet to improve edge detection.\n\nNeeds maskless adjustments to be activated (lightness, exposure...)
TP_LOCALLAB_STRUCT_TOOLTIP;Use Sobel algorithm to take into account structure in shape detection.\nyou can have a preview by activating "mask and modifications - Show structure spot".\n\nCan be used in conjunction with masks (advanced) structure, blur, wavelet to improve edge detection.\n\nNeeds maskless adjustments to be activated (lightness, exposure...)
TP_LOCALLAB_STRUMASKCOL;Structure mask strength
TP_LOCALLAB_STRUMASK_TOOLTIP;Generate a structure mask with difference between surface areas and reliefs.\nIf structure mask as tool is enabled, this mask is used in addition to the other tools (gamma, slope, contrast curve ...)
TP_LOCALLAB_STYPE;Shape method
@ -2857,7 +2862,8 @@ TP_LOCALLAB_TM_MASK;Use transmission map
TP_LOCALLAB_TONEMAPESTOP_TOOLTIP;This parameter affects sensitivity to edges.\n The greater it is the more likely an illumination change is to be considered an "edge".\n If set to zero tone mapping will have an effect similar to unsharp masking.
TP_LOCALLAB_TONEMAPGAM_TOOLTIP;Gamma moves the action of tone-mapping to shadows or highlights.
TP_LOCALLAB_TONEMAPREWEI_TOOLTIP;In some cases tone mapping may result in a cartoonish appearance, and in some rare cases soft but wide halos may appear.\n Increasing the number of reweighting iterates will help fight some of these problems.
TP_LOCALLAB_TONEMAP_TOOLTIP;Tone Mapping - main menu must be disabled
TP_LOCALLAB_TONEMAP_TOOLTIP;Same as the tone mapping tool in the main menu.\nThe main menu tool must be de-activated if this tool is used.
//Tone Mapping - main menu must be disabled
TP_LOCALLAB_TONEMASCALE_TOOLTIP;This control gives meaning to the difference between "local" and "global" contrast.\nThe greater it is the larger a detail needs to be in order to be boosted
TP_LOCALLAB_TONE_TOOLNAME;Tone Mapping - 4
TP_LOCALLAB_TOOLCOL;Structure mask as tool
@ -2875,15 +2881,16 @@ TP_LOCALLAB_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscis
TP_LOCALLAB_USEMASK;Use mask
TP_LOCALLAB_VART;Variance (contrast)
TP_LOCALLAB_VIBRANCE;Vibrance - Warm & Cool
TP_LOCALLAB_VIBRA_TOOLTIP;Adjust vibrance (essentially the same as the global adjustment).\nCarry out the equivalent of a white-balance adjustment using a CIECAM algorithm.
TP_LOCALLAB_VIB_TOOLNAME;Vibrance - Warm & Cool - 3
TP_LOCALLAB_SOFT_TOOLNAME;Soft Light & Original Retinex - 6
TP_LOCALLAB_BLUR_TOOLNAME;Smooth Blur Gain & Denoise - 1
TP_LOCALLAB_BLUR_TOOLNAME;Smooth Blur Grain & Denoise - 1
TP_LOCALLAB_TONE_TOOLNAME;Tone Mapping - 4
TP_LOCALLAB_RET_TOOLNAME;Dehaze & Retinex - 9
TP_LOCALLAB_SHARP_TOOLNAME;Sharpening - 8
TP_LOCALLAB_LC_TOOLNAME;Local Constrast & Wavelet (Defects) - 7
TP_LOCALLAB_CBDL_TOOLNAME;CBDL (Defects) - 2
TP_LOCALLAB_LOG_TOOLNAME;Encoding log - 0
TP_LOCALLAB_LC_TOOLNAME;Local Contrast & Wavelet - 7
TP_LOCALLAB_CBDL_TOOLNAME;CBDL - 2
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding - 0
TP_LOCALLAB_MASKCOM_TOOLNAME;Common Color Mask - 13
TP_LOCALLAB_VIS_TOOLTIP;<b>Click</b> to show/hide selected Control Spot.\n<b>Ctrl</b>+<b>click</b> to show/hide all Control Spot.
TP_LOCALLAB_WAMASKCOL;Ψ Mask Wavelet level

View File

@ -390,7 +390,7 @@ public:
std::unique_ptr<LUTf> buildMeaLut(const float inVals[11], const float mea[10], float& lutFactor);
void Aver(const float* HH_Coeffs, int datalen, float &averagePlus, float &averageNeg, float &max, float &min, int numThreads);
void Sigma(const float* HH_Coeffs, int datalen, float averagePlus, float averageNeg, float &sigmaPlus, float &sigmaNeg, int numThreads);
void calckoe(const float* const* WavCoeffs_LL, float gradw, float tloww, float ** koeLi, int level, int dir, int W_L, int H_L, float edd, float &maxkoeLi, float **tmC = nullptr);
void calckoe(const float* WavCoeffs_LL, float gradw, float tloww, float *koeLi, int level, int W_L, int H_L, float edd, float &maxkoeLi, float **tmC, bool multiThread = false);
void Median_Denoise(float **src, float **dst, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);
void Median_Denoise(float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);

View File

@ -3724,6 +3724,13 @@ void ImProcFunctions::retinex_pde(const float * datain, float * dataout, int bfw
fftwf_free(data_fft04);
fftwf_free(data_tmp04);
}
if (show == 2) {
for (int y = 0; y < bfh ; y++) {
for (int x = 0; x < bfw; x++) {
datashow[y * bfw + x] = data_fft[y * bfw + x];
}
}
}
/* solve the Poisson PDE in Fourier space */
/* 1. / (float) (bfw * bfh)) is the DCT normalisation term, see libfftw */
@ -7402,7 +7409,7 @@ BENCHFUN
CompressDR(wav_L0, W_L, H_L, Compression, DetailBoost);
}
if ((lp.residsha != 0.f || lp.residhi != 0.f)) {
if ((lp.residsha < 0.f || lp.residhi < 0.f)) {
float tran = 5.f;//transition shadow
if (lp.residshathr > (100.f - tran)) {
@ -7439,6 +7446,31 @@ BENCHFUN
}
}
if ((lp.residsha > 0.f || lp.residhi > 0.f)) {
const std::unique_ptr<LabImage> temp(new LabImage(W_L, H_L));
#ifdef _OPENMP
#pragma omp parallel for if (multiThread)
#endif
for (int i = 0; i < H_L; i++) {
for (int j = 0; j < W_L; j++) {
temp->L[i][j] = wav_L0[i * W_L + j];
}
}
ImProcFunctions::shadowsHighlights(temp.get(), true, 1, lp.residhi, lp.residsha , 40, sk, lp.residhithr, lp.residshathr);
#ifdef _OPENMP
#pragma omp parallel for if (multiThread)
#endif
for (int i = 0; i < H_L; i++) {
for (int j = 0; j < W_L; j++) {
wav_L0[i * W_L + j] = temp->L[i][j];
}
}
}
if (contrast != 0.) {
double avedbl = 0.0; // use double precision for large summations
@ -7515,9 +7547,9 @@ BENCHFUN
float eddlipampl = 1.f + lp.basew / 50.f;
int W_L = wdspot->level_W(0);//provisory W_L H_L
int H_L = wdspot->level_H(0);
float *koeLi[12];
float maxkoeLi[12] = {0.f};
float *beta = new float[W_L * H_L];
float *koeLibuffer = new float[12 * H_L * W_L]; //12
@ -7525,65 +7557,21 @@ BENCHFUN
koeLi[i] = &koeLibuffer[i * W_L * H_L];
}
for (int j = 0; j < 12; j++) {
for (int i = 0; i < W_L * H_L; i++) {
koeLi[j][i] = 0.f;
}
}
array2D<float> tmC(W_L, H_L);
float gradw = lp.gradw;
float tloww = lp.tloww;
//StopWatch Stop1("test");
for (int lvl = 0; lvl < 4; lvl++) {
for (int dir = 1; dir < 4; dir++) {
const int W_L = wdspot->level_W(lvl);
const int H_L = wdspot->level_H(lvl);
float* const* wav_L = wdspot->level_coeffs(lvl);
if (lvl == 3 && dir == 3) {
const float effect = lp.sigmaed;
constexpr float offset = 1.f;
float mea[10];
calceffect(lvl, mean, sigma, mea, effect, offset);
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
for (int co = 0; co < H_L * W_L; co++) {
const float WavCL = std::fabs(wav_L[dir][co]);
if (WavCL < mea[0]) {
beta[co] = 0.05f;
} else if (WavCL < mea[1]) {
beta[co] = 0.2f;
} else if (WavCL < mea[2]) {
beta[co] = 0.7f;
} else if (WavCL < mea[3]) {
beta[co] = 1.f; //standard
} else if (WavCL < mea[4]) {
beta[co] = 1.f;
} else if (WavCL < mea[5]) {
beta[co] = 0.8f; //+sigma
} else if (WavCL < mea[6]) {
beta[co] = 0.5f;
} else if (WavCL < mea[7]) {
beta[co] = 0.3f;
} else if (WavCL < mea[8]) {
beta[co] = 0.2f; // + 2 sigma
} else if (WavCL < mea[9]) {
beta[co] = 0.1f;
} else {
beta[co] = 0.05f;
}
}
}
calckoe(wav_L, gradw, tloww, koeLi, lvl, dir, W_L, H_L, edd, maxkoeLi[lvl * 3 + dir - 1], tmC);
calckoe(wav_L[dir], gradw, tloww, koeLi[lvl * 3 + dir - 1], lvl, W_L, H_L, edd, maxkoeLi[lvl * 3 + dir - 1], tmC, true);
// return convolution KoeLi and maxkoeLi of level 0 1 2 3 and Dir Horiz, Vert, Diag
}
}
tmC.free();
//Stop1.stop();
float aamp = 1.f + lp.thigw / 100.f;
const float alipinfl = (eddlipampl - 1.f) / (1.f - eddlipinfl);
@ -7743,6 +7731,14 @@ BENCHFUN
constexpr float da_abssd = (maxampd - abssd) / 0.333f;
constexpr float db_abssd = maxampd - da_abssd;
constexpr float am = (abssd - bbssd) / 0.666f;
const float effect = lp.sigmaed;
constexpr float offset = 1.f;
float mea[10];
calceffect(lvl, mean, sigma, mea, effect, offset);
float lutFactor;
const float inVals[] = {0.05f, 0.2f, 0.7f, 1.f, 1.f, 0.8f, 0.5f, 0.3f, 0.2f, 0.1f, 0.05f};
const auto meaLut = buildMeaLut(inVals, mea, lutFactor);
for (int dir = 1; dir < 4; dir++) {
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic, 16) if(multiThread)
@ -7800,7 +7796,7 @@ BENCHFUN
}
edge = std::max(edge * kinterm, 1.f);
wav_L[dir][k] *= 1.f + (edge - 1.f) * beta[k];
wav_L[dir][k] *= 1.f + (edge - 1.f) * (*meaLut)[std::fabs(wav_L[dir][k]) * lutFactor];
}
}
}
@ -7810,8 +7806,6 @@ BENCHFUN
if (koeLibuffer) {
delete [] koeLibuffer;
}
delete[] beta;
}
//edge sharpness end

View File

@ -2217,7 +2217,7 @@ void ImProcFunctions::WaveletcontAllL(LabImage * labco, float ** varhue, float *
for (int dir = 1; dir < 4; dir++) {
const float* const* WavCoeffs_LL = WaveletCoeffs_L.level_coeffs(lvl);
float tempkoeli = 0.f;
calckoe (WavCoeffs_LL, gradw, tloww, koeLi, lvl , dir, W_L, H_L, edd, tempkoeli, tmC);
calckoe (WavCoeffs_LL[dir], gradw, tloww, koeLi[lvl * 3 + dir - 1], lvl, W_L, H_L, edd, tempkoeli, tmC);
maxkoeLi[lvl * 3 + dir - 1] = tempkoeli ;
// return convolution KoeLi and maxkoeLi of level 0 1 2 3 and Dir Horiz, Vert, Diag
}
@ -2645,13 +2645,11 @@ BENCHFUN
}
}
void ImProcFunctions::calckoe (const float* const* WavCoeffs_LL, float gradw, float tloww, float *koeLi[12], int level, int dir, int W_L, int H_L, float edd, float &maxkoeLi, float **tmC)
void ImProcFunctions::calckoe (const float* WavCoeffs, float gradw, float tloww, float *koeLi, int level, int W_L, int H_L, float edd, float &maxkoeLi, float **tmC, bool multiThread)
{
int borderL = 2;
if (tloww < 30.f) {
borderL = 1;
const int borderL = tloww < 75.f ? 1 : 2;
if (tloww < 75.f) {
// I calculate coefficients with r size matrix 3x3 r=1 ; 5x5 r=2; 7x7 r=3
/*
float k[2*r][2*r];
@ -2663,123 +2661,144 @@ void ImProcFunctions::calckoe (const float* const* WavCoeffs_LL, float gradw, fl
//I could also use Gauss.h for 3x3
// If necessary I can put a 7x7 matrix
*/
for (int i = 1; i < H_L - 1; i++) { //sigma=0.55
for (int j = 1; j < W_L - 1; j++) {
tmC[i][j] = (8.94f * WavCoeffs_LL[dir][i * W_L + j] + 1.71f * (WavCoeffs_LL[dir][(i - 1) * W_L + j] + 1.71f * WavCoeffs_LL[dir][(i + 1) * W_L + j]
+ 1.71f * WavCoeffs_LL[dir][i * W_L + j + 1] + 1.71f * WavCoeffs_LL[dir][i * W_L + j - 1]) + 0.33f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 1]
+ 0.33f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 1] + 0.33f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 1] + 0.33f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 1]) * 0.0584795f;
// apply to each direction Wavelet level : horizontal / vertiacle / diagonal
}
float c0, c1, c2, mult;
if (tloww < 30.f) { //sigma=0.55
c0 = 8.94f;
c1 = 1.71f;
c2 = 0.33f;
mult = 0.0584795f;
} else if (tloww < 50.f) { //sigma=0.85
c0 = 4.0091f;
c1 = 2.0068f;
c2 = 1.0045f;
mult = 0.062288f;
} else { //sigma=1.1
c0 = 3.025f;
c1 = 2.001f;
c2 = 1.323f;
mult = 0.06127f;
}
} else if (tloww < 50.f) {
borderL = 1;
for (int i = 1; i < H_L - 1; i++) { //sigma=0.85
for (int j = 1; j < W_L - 1; j++) {
tmC[i][j] = (4.0091f * WavCoeffs_LL[dir][i * W_L + j] + 2.0068f * (WavCoeffs_LL[dir][(i - 1) * W_L + j] + 2.0068f * WavCoeffs_LL[dir][(i + 1) * W_L + j]
+ 2.0068f * WavCoeffs_LL[dir][i * W_L + j + 1] + 2.0068f * WavCoeffs_LL[dir][i * W_L + j - 1]) + 1.0045f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 1]
+ 1.0045f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 1] + 1.0045f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 1] + 1.0045f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 1]) * 0.062288f;
// apply to each direction Wavelet level : horizontal / vertiacle / diagonal
}
}
}
else if (tloww < 75.f) {
borderL = 1;
c0 *= mult;
c1 *= mult;
c2 *= mult;
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
for (int i = 1; i < H_L - 1; i++) {
for (int j = 1; j < W_L - 1; j++) { //sigma=1.1
tmC[i][j] = (3.025f * WavCoeffs_LL[dir][i * W_L + j] + 2.001f * (WavCoeffs_LL[dir][(i - 1) * W_L + j] + 2.001f * WavCoeffs_LL[dir][(i + 1) * W_L + j]
+ 2.001f * WavCoeffs_LL[dir][i * W_L + j + 1] + 2.001f * WavCoeffs_LL[dir][i * W_L + j - 1]) + 1.323f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 1]
+ 1.323f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 1] + 1.323f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 1] + 1.323f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 1]) * 0.06127f;
for (int j = 1; j < W_L - 1; j++) {
tmC[i][j] = c0 * WavCoeffs[i * W_L + j] +
c1 * ((WavCoeffs[(i - 1) * W_L + j] + WavCoeffs[(i + 1) * W_L + j]) + (WavCoeffs[i * W_L + j + 1] + WavCoeffs[i * W_L + j - 1])) +
c2 * ((WavCoeffs[(i - 1) * W_L + j - 1] + WavCoeffs[(i - 1) * W_L + j + 1]) + (WavCoeffs[(i + 1) * W_L + j - 1] + WavCoeffs[(i + 1) * W_L + j + 1]));
}
}
}
else if (tloww >= 75.f) {
borderL = 2;
} else {
if (level > 1) { // do not activate 5x5 if level 0 or 1
// Gaussian 1.1
// 0.5 2 3 2 0.5
// 2 7 10 7 2
// 3 10 15 10 3
// 2 7 10 7 2
// 0.5 2 3 2 0.5
// divi 113
//Gaussian 1.4
// 2 4 5 4 2
// 4 9 12 9 4
// 5 12 15 12 5
// 4 9 12 9 4
// 2 4 5 4 2
// divi 159
float c0, c1, c2, c3, c4, c5, mult;
if (tloww < 85.f) { //sigma=1.1
c0 = 15.f;
c1 = 10.f;
c2 = 7.f;
c3 = 3.f;
c4 = 2.f;
c5 = 0.5f;
mult = 0.0088495f;
} else { //sigma=1.4
c0 = 15.f;
c1 = 12.f;
c2 = 9.f;
c3 = 5.f;
c4 = 4.f;
c5 = 2.f;
mult = 0.0062893f;
}
c0 *= mult;
c1 *= mult;
c2 *= mult;
c3 *= mult;
c4 *= mult;
c5 *= mult;
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
for (int i = 2; i < H_L - 2; i++) {
for (int j = 2; j < W_L - 2; j++) {
// Gaussian 1.1
// 0.5 2 3 2 0.5
// 2 7 10 7 2
// 3 10 15 10 3
// 2 7 10 7 2
// 0.5 2 3 2 0.5
// divi 113
//Gaussian 1.4
// 2 4 5 4 2
// 4 9 12 9 4
// 5 12 15 12 5
// 4 9 12 9 4
// 2 4 5 4 2
// divi 159
if (tloww < 85.f) { //sigma=1.1
tmC[i][j] = (15.f * WavCoeffs_LL[dir][i * W_L + j] + 10.f * WavCoeffs_LL[dir][(i - 1) * W_L + j] + 10.f * WavCoeffs_LL[dir][(i + 1) * W_L + j]
+ 10.f * WavCoeffs_LL[dir][i * W_L + j + 1] + 10.f * WavCoeffs_LL[dir][i * W_L + j - 1] + 7.f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 1]
+ 7.f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 1] + 7.f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 1] + 7.f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 1]
+ 3.f * WavCoeffs_LL[dir][(i - 2) * W_L + j] + 3.f * WavCoeffs_LL[dir][(i + 2) * W_L + j] + 3.f * WavCoeffs_LL[dir][i * W_L + j - 2] + 3.f * WavCoeffs_LL[dir][i * W_L + j + 2]
+ 2.f * WavCoeffs_LL[dir][(i - 2) * W_L + j - 1] + 2.f * WavCoeffs_LL[dir][(i - 2) * W_L + j + 1] + 2.f * WavCoeffs_LL[dir][(i + 2) * W_L + j + 1] + 2.f * WavCoeffs_LL[dir][(i + 2) * W_L + j - 1]
+ 2.f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 2] + 2.f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 2] + 2.f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 2] + 2.f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 2]
+ 0.5f * WavCoeffs_LL[dir][(i - 2) * W_L + j - 2] + 0.5f * WavCoeffs_LL[dir][(i - 2) * W_L + j + 2] + 0.5f * WavCoeffs_LL[dir][(i + 2) * W_L + j - 2] + 0.5f * WavCoeffs_LL[dir][(i + 2) * W_L + j + 2]
) * 0.0088495f;
}
else {//sigma=1.4
tmC[i][j] = (15.f * WavCoeffs_LL[dir][i * W_L + j] + 12.f * WavCoeffs_LL[dir][(i - 1) * W_L + j] + 12.f * WavCoeffs_LL[dir][(i + 1) * W_L + j]
+ 12.f * WavCoeffs_LL[dir][i * W_L + j + 1] + 12.f * WavCoeffs_LL[dir][i * W_L + j - 1] + 9.f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 1]
+ 9.f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 1] + 9.f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 1] + 9.f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 1]
+ 5.f * WavCoeffs_LL[dir][(i - 2) * W_L + j] + 5.f * WavCoeffs_LL[dir][(i + 2) * W_L + j] + 5.f * WavCoeffs_LL[dir][i * W_L + j - 2] + 5.f * WavCoeffs_LL[dir][i * W_L + j + 2]
+ 4.f * WavCoeffs_LL[dir][(i - 2) * W_L + j - 1] + 4.f * WavCoeffs_LL[dir][(i - 2) * W_L + j + 1] + 4.f * WavCoeffs_LL[dir][(i + 2) * W_L + j + 1] + 4.f * WavCoeffs_LL[dir][(i + 2) * W_L + j - 1]
+ 4.f * WavCoeffs_LL[dir][(i - 1) * W_L + j - 2] + 4.f * WavCoeffs_LL[dir][(i - 1) * W_L + j + 2] + 4.f * WavCoeffs_LL[dir][(i + 1) * W_L + j + 2] + 4.f * WavCoeffs_LL[dir][(i + 1) * W_L + j - 2]
+ 2.f * WavCoeffs_LL[dir][(i - 2) * W_L + j - 2] + 2.f * WavCoeffs_LL[dir][(i - 2) * W_L + j + 2] + 2.f * WavCoeffs_LL[dir][(i + 2) * W_L + j - 2] + 2.f * WavCoeffs_LL[dir][(i + 2) * W_L + j + 2]
) * 0.0062893f;
}
// apply to each direction Wavelet level : horizontal / vertiacle / diagonal
tmC[i][j] = c0 * WavCoeffs[i * W_L + j] +
c1 * ((WavCoeffs[(i - 1) * W_L + j] + WavCoeffs[(i + 1) * W_L + j]) + (WavCoeffs[i * W_L + j + 1] + WavCoeffs[i * W_L + j - 1])) +
c2 * ((WavCoeffs[(i - 1) * W_L + j - 1] + WavCoeffs[(i - 1) * W_L + j + 1]) + (WavCoeffs[(i + 1) * W_L + j - 1] + WavCoeffs[(i + 1) * W_L + j + 1])) +
c3 * ((WavCoeffs[(i - 2) * W_L + j] + WavCoeffs[(i + 2) * W_L + j]) + (WavCoeffs[i * W_L + j - 2] + WavCoeffs[i * W_L + j + 2])) +
c4 * ((WavCoeffs[(i - 2) * W_L + j - 1] + WavCoeffs[(i - 2) * W_L + j + 1]) + (WavCoeffs[(i + 2) * W_L + j + 1] + WavCoeffs[(i + 2) * W_L + j - 1]) +
(WavCoeffs[(i - 1) * W_L + j - 2] + WavCoeffs[(i - 1) * W_L + j + 2]) + (WavCoeffs[(i + 1) * W_L + j + 2] + WavCoeffs[(i + 1) * W_L + j - 2])) +
c5 * ((WavCoeffs[(i - 2) * W_L + j - 2] + WavCoeffs[(i - 2) * W_L + j + 2]) + (WavCoeffs[(i + 2) * W_L + j - 2] + WavCoeffs[(i + 2) * W_L + j + 2]));
}
}
} else {
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
for (int i = 0; i < H_L; i++) {
for (int j = 0; j < W_L; j++) {
koeLi[i * W_L + j] = 0.f;
}
}
return;
}
}
float thr = 40.f; //avoid artifact eg. noise...to test
float thr2 = 1.5f * edd; //edd can be modified in option ed_detect
thr2 += gradw / 30.f; //to test
float diffFactor = (gradw / 100.f);
for (int i = 0; i < H_L; i++) {
// fill borders with 1.f
int ii = 0;
for (; ii < borderL; ii++) {
for (int j = 0; j < W_L; j++) {
koeLi[level * 3 + dir - 1][i * W_L + j] = 1.f;
koeLi[ii * W_L + j] = 1.f;
}
}
for (; ii < H_L - borderL; ii++) {
for (int j = 0; j < borderL; j++) {
koeLi[ii * W_L + j] = 1.f;
}
for (int j = W_L - borderL; j < W_L; j++) {
koeLi[ii * W_L + j] = 1.f;
}
}
for (; ii < H_L; ii++) {
for (int j = 0; j < W_L; j++) {
koeLi[ii * W_L + j] = 1.f;
}
}
constexpr float thr = 40.f; //avoid artifact eg. noise...to test
const float thr2 = 1.5f * edd + gradw / 30.f; //edd can be modified in option ed_detect
const float diffFactor = gradw / 100.f;
for (int i = borderL; i < H_L - borderL; i++) {
for (int j = borderL; j < W_L - borderL; j++) {
// my own algo : probably a little false, but simpler as Lipschitz !
// Thr2 = maximum of the function ==> Lipsitch says = probably edge
float temp = rtengine::max(std::fabs(WavCoeffs_LL[dir][i * W_L + j]), thr);
koeLi[level * 3 + dir - 1][i * W_L + j] = rtengine::min(thr2, std::fabs(tmC[i][j] / temp)); // limit maxi
float temp = rtengine::max(std::fabs(WavCoeffs[i * W_L + j]), thr);
koeLi[i * W_L + j] = rtengine::min(thr2, std::fabs(tmC[i][j] / temp)); // limit maxi
//it will be more complicated to calculate both Wh and Wv, but we have also Wd==> pseudo Lipschitz
if (koeLi[level * 3 + dir - 1][i * W_L + j] > maxkoeLi) {
maxkoeLi = koeLi[level * 3 + dir - 1][i * W_L + j];
if (koeLi[i * W_L + j] > maxkoeLi) {
maxkoeLi = koeLi[i * W_L + j];
}
float diff = maxkoeLi - koeLi[level * 3 + dir - 1][i * W_L + j];
float diff = maxkoeLi - koeLi[i * W_L + j];
diff *= diffFactor;
koeLi[level * 3 + dir - 1][i * W_L + j] = maxkoeLi - diff;
koeLi[i * W_L + j] = maxkoeLi - diff;
}
}
}
void ImProcFunctions::finalContAllL(float* const* WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, const cont_params &cp,

View File

@ -946,7 +946,7 @@ enum ProcEventCode {
Evlocallabsigmalc2 = 920,
Evlocallabblwh = 921,
EvlocallabcomplexityWithRefresh = 922,
EvlocallabcomplexityWithoutRefresh = 923,
// EvlocallabcomplexityWithoutRefresh = 923,
EvLocallabSpotcolorscope = 924,
EvlocallabshowmasktypMethod = 925,
Evlocallabshadmaskblsha = 926,

View File

@ -2656,7 +2656,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
// Color & Light
visicolor(false),
expcolor(false),
complexcolor(0),
complexcolor(2),
curvactiv(false),
lightness(0),
contrast(0),
@ -3293,7 +3293,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
scaltm(1.0),
rewei(0),
satur(0.),
sensitm(30),
sensitm(60),
softradiustm(0.0),
amount(95.),
equiltm(true),

View File

@ -950,7 +950,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, // Evlocallabsigmalc2
LUMINANCECURVE, // Evlocallabblwh
LUMINANCECURVE, // EvlocallabcomplexityWithRefresh
M_VOID, // EvlocallabcomplexityWithoutRefresh
0, // can be reused
LUMINANCECURVE, // EvLocallabSpotcolorscope
LUMINANCECURVE, // EvlocallabshowmasktypMethod
LUMINANCECURVE, // Evlocallabshadmaskblsha
@ -982,7 +982,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, // Evlocallabblendmaskab
LUMINANCECURVE, // EvLocallabSpotprevMethod
LUMINANCECURVE, // Evlocallabactiv
LUMINANCECURVE // EvlocallabCHshape
LUMINANCECURVE, // EvlocallabCHshape
};

View File

@ -95,6 +95,7 @@ ControlSpotPanel::ControlSpotPanel():
preview_(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_PREVIEW")))),
ctboxshape(Gtk::manage(new Gtk::HBox())),
ctboxshapemethod(Gtk::manage(new Gtk::HBox())),
controlPanelListener(nullptr),
lastObject_(-1),
@ -250,7 +251,7 @@ ControlSpotPanel::ControlSpotPanel():
pack_start(*excluFrame);
Gtk::HBox* const ctboxshapemethod = Gtk::manage(new Gtk::HBox());
// Gtk::HBox* const ctboxshapemethod = Gtk::manage(new Gtk::HBox());
Gtk::Label* const labelshapemethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_STYPE") + ":"));
ctboxshapemethod->pack_start(*labelshapemethod, Gtk::PACK_SHRINK, 4);
@ -914,6 +915,7 @@ void ControlSpotPanel::prevMethodChanged()
expMaskMerge_->hide();
circrad_->hide();
ctboxshape->hide();
shapeMethod_->set_active(0);
} else { // Excluding case
expTransGrad_->show();
@ -1730,6 +1732,25 @@ void ControlSpotPanel::setParamEditable(bool cond)
savrest_->set_sensitive(cond);
complexMethod_->set_sensitive(cond);
wavMethod_->set_sensitive(cond);
preview_->set_sensitive(cond);
if (!cond) {
// Reset complex parameters visibility to default state
expTransGrad_->hide();
expShapeDetect_->hide();
expSpecCases_->hide();
expMaskMerge_->hide();
circrad_->hide();
ctboxshape->hide();
excluFrame->hide();
// ctboxshapemethod->hide();
locX_->hide();
locXL_->hide();
locY_->hide();
locYT_->hide();
centerX_->hide();
centerY_->hide();
}
}
void ControlSpotPanel::setDefaultExpanderVisibility()

View File

@ -419,6 +419,7 @@ private:
sigc::connection previewConn_;
Gtk::HBox* const ctboxshape;
Gtk::HBox* const ctboxshapemethod;
// Internal variables
ControlPanelListener* controlPanelListener;

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
* 2019 Pierre Cabrera <pierre.cab@gmail.com>
* 2019-2020 Pierre Cabrera <pierre.cab@gmail.com>
*/
#ifndef _LOCALLABTOOLS_H_
#define _LOCALLABTOOLS_H_
@ -52,7 +52,8 @@ protected:
// LocallabTool mode enumeration
enum modeType {
Expert = 0,
Normal = 1
Normal = 1,
Simple = 2
};
// LocallabTool parameters
@ -162,7 +163,8 @@ private:
// To be implemented
virtual void enabledChanged() {};
virtual void convertParamToNormal() {}; // Only necessary when using mode
virtual void convertParamToNormal() {}; // From Expert mode to Normal mode; Only necessary when using mode
virtual void convertParamToSimple() {}; // From Normal mode to Simple mode; Only necessary when using mode
virtual void updateGUIToMode(const modeType new_type) {}; // Only necessary when using mode
};
@ -175,10 +177,10 @@ class LocallabColor:
private:
// Color & Light specific widgets
Gtk::Frame* const lumFrame;
Gtk::CheckButton* const curvactiv;
Adjuster* const lightness;
Adjuster* const contrast;
Adjuster* const chroma;
Gtk::CheckButton* const curvactiv;
Gtk::Frame* const gridFrame;
LabGrid* const labgrid;
MyComboBoxText* const gridMethod;
@ -204,10 +206,10 @@ private:
DiagonalCurveEditor* const lcshape;
CurveEditorGroup* const HCurveEditorG;
FlatCurveEditor* const LHshape;
CurveEditorGroup* const H2CurveEditorG;
FlatCurveEditor* const HHshape;
CurveEditorGroup* const H3CurveEditorG;
FlatCurveEditor* const CHshape;
CurveEditorGroup* const H2CurveEditorG;
FlatCurveEditor* const HHshape;
CurveEditorGroup* const rgbCurveEditorG;
MyComboBoxText* const toneMethod;
DiagonalCurveEditor* const rgbshape;
@ -283,6 +285,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -388,6 +391,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -473,6 +477,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -557,6 +562,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -603,8 +609,11 @@ public:
void adjusterChanged(Adjuster* a, double newval) override;
private:
void complexityModeChanged();
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void softMethodChanged();
@ -708,6 +717,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -784,6 +794,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -874,6 +885,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -907,6 +919,7 @@ private:
Adjuster* const sharradius;
Adjuster* const sensisha;
Gtk::CheckButton* const inverssha;
Gtk::Frame* const sharFrame;
MyComboBoxText* const showmasksharMethod;
sigc::connection inversshaConn, showmasksharMethodConn;
@ -930,6 +943,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void inversshaChanged();
@ -952,8 +966,8 @@ private:
Adjuster* const sigmalc;
CurveEditorGroup* const LocalcurveEditorwav;
FlatCurveEditor* const wavshape;
Adjuster* const levelwav;
ThresholdAdjuster* const csThreshold;
Adjuster* const levelwav;
MyExpander* const expresidpyr;
Adjuster* const residcont;
Adjuster* const residchro;
@ -1058,6 +1072,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -1089,8 +1104,8 @@ class LocallabCBDL:
public LocallabTool
{
private:
const std::array<Adjuster*, 6> multiplier;
Gtk::Frame* const levFrame;
const std::array<Adjuster*, 6> multiplier;
Adjuster* const chromacbdl;
Adjuster* const threshold;
Adjuster* const clarityml;
@ -1143,6 +1158,7 @@ public:
private:
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
@ -1212,7 +1228,6 @@ private:
Adjuster* const blendmask;
Adjuster* const blendmaskab;
Adjuster* const softradiusmask;
MyComboBoxText* const showmask_Method;
Gtk::CheckButton* const enamask;
CurveEditorGroup* const mask_CurveEditorG;
@ -1226,7 +1241,7 @@ private:
Gtk::CheckButton* const fftmask;
Adjuster* const contmask;
Adjuster* const blurmask;
Gtk::Frame* const toolmaskFrame;
Adjuster* const radmask;
Adjuster* const lapmask;
Adjuster* const chromask;
@ -1269,18 +1284,22 @@ public:
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
void curveChanged(CurveEditor* ce) override;
private:
void complexityModeChanged();
void enabledChanged() override;
void convertParamToNormal() override;
void convertParamToSimple() override;
void updateGUIToMode(const modeType new_type) override;
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
void showmask_MethodChanged();
void enamaskChanged();
void toolmaskChanged();
void convertParamToNormal() override;
void updateGUIToMode(const modeType new_type) override;
void fftmaskChanged();
void updatemaskGUI3();
void updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) override;
void updateMaskGUI();
};
#endif

File diff suppressed because it is too large Load Diff

View File

@ -451,7 +451,7 @@ void Options::setDefaults()
histogramHeight = 200;
histogramDrawMode = 0;
curvebboxpos = 1;
complexity = 1;
complexity = 2;
prevdemo = PD_Sidecar;
rgbDenoiseThreadLimit = 0;

View File

@ -10,8 +10,8 @@
*
* RawTherapee is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
@ -946,7 +946,8 @@ Gtk::Widget* Preferences::getGeneralPanel()
setExpandAlignProperties(complexitylocal, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
complexitylocal->append(M("PREFERENCES_COMPLEXITY_EXP"));
complexitylocal->append(M("PREFERENCES_COMPLEXITY_NORM"));
complexitylocal->set_active(1);
complexitylocal->append(M("PREFERENCES_COMPLEXITY_SIMP"));
complexitylocal->set_active(2);
workflowGrid->attach_next_to(*complexityL, *curveBBoxPosL, Gtk::POS_BOTTOM, 1, 1);
workflowGrid->attach_next_to(*complexitylocal, *curveBBoxPosC, Gtk::POS_BOTTOM, 1, 1);