Merge with 'Beep6581/dev'

This commit is contained in:
Pandagrapher 2024-03-06 19:10:49 +01:00
commit 7e63892628
107 changed files with 5295 additions and 3817 deletions

View File

@ -4,15 +4,18 @@ on:
branches:
- dev
- releases
- 'release-[0-9]+.*'
tags:
- '[0-9]+.*'
pull_request:
branches:
- dev
- releases
- 'release-[0-9]+.*'
workflow_dispatch:
env:
publish_pre_dev_labels: '["Beep6581:ladehazeblack"]'
publish_pre_dev_labels: '[]'
jobs:
build:
@ -20,7 +23,7 @@ jobs:
strategy:
fail-fast: false
matrix:
build_type: [release]
build_type: [release, debug]
steps:
- name: Checkout source
uses: actions/checkout@v3
@ -36,7 +39,7 @@ jobs:
- name: Install Exiv2
run: |
EXIV2_VERSION='v0.28.0'
EXIV2_VERSION='v0.28.1'
echo "Cloning Exiv2 $EXIV2_VERSION."
git clone --depth 1 --branch "$EXIV2_VERSION" https://github.com/Exiv2/exiv2.git ext/exiv2

View File

@ -2,10 +2,16 @@ name: "CodeQL"
on:
push:
branches: [ 'dev' ]
branches:
- dev
- releases
- 'release-[0-9]+.*'
pull_request:
# The branches below must be a subset of the branches above
branches: [ 'dev' ]
branches:
- dev
- releases
- 'release-[0-9]+.*'
schedule:
- cron: '56 5 * * 1'

View File

@ -4,16 +4,19 @@ on:
branches:
- dev
- releases
- 'release-[0-9]+.*'
tags:
- '[0-9]+.*'
pull_request:
branches:
- dev
- releases
- 'release-[0-9]+.*'
workflow_dispatch:
jobs:
build:
runs-on: macos-11
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- name: Install dependencies

View File

@ -4,15 +4,18 @@ on:
branches:
- dev
- releases
- 'release-[0-9]+.*'
tags:
- '[0-9]+.*'
pull_request:
branches:
- dev
- releases
- 'release-[0-9]+.*'
workflow_dispatch:
env:
publish_pre_dev_labels: '["Beep6581:ladehazeblack"]'
publish_pre_dev_labels: '[]'
jobs:
build:

1
.gitignore vendored
View File

@ -17,6 +17,7 @@ cmake_install.cmake
install_manifest.txt
build*
cmake-build*
Build*
Debug
RelWithDebInfo

View File

@ -8,6 +8,7 @@ Development contributors, in last name alphabetical order:
Harald Aust
Roel Baars
Richard E Barber
Dániel Battyányi
Martin Burri
Pierre Cabrera
Javier Celaya
@ -20,6 +21,7 @@ Development contributors, in last name alphabetical order:
Rüdiger Franke
Jean-Christophe Frisch
Ilias Giarimis
Scott Gilbertson
Alberto Griggio
Steve Herrell
Philippe Hupé

View File

@ -534,6 +534,10 @@ pkg_check_modules(LCMS REQUIRED lcms2>=2.6)
pkg_check_modules(EXPAT REQUIRED expat>=2.1)
pkg_check_modules(FFTW3F REQUIRED fftw3f)
# By default little-cms2 uses 'register' keyword which is deprecated and removed in c++17
# This definition forces not to use it
add_definitions("-DCMS_NO_REGISTER_KEYWORD")
#Set the appropriate FFTW flags on macOS
if(APPLE AND OPTION_OMP)
set(EXTRA_LIB "-L${LOCAL_PREFIX}/lib -lfftw3f_omp -lfftw3f -lm")

View File

@ -1,4 +1,4 @@
RAWTHERAPEE 5.9-dev RELEASE NOTES
RAWTHERAPEE 5.10-dev RELEASE NOTES
This is a development version of RawTherapee. We update the code almost daily. Every few months, once enough changes have accumulated and the code is stabilized, we make a new official release. Every code change between these releases is known as a "development" version, and this is one of them.
@ -22,7 +22,7 @@ In order to use RawTherapee efficiently you should know that:
NEW FEATURES SINCE 5.9
NEW FEATURES SINCE 5.10
- TODO
- Added or improved support for cameras, raw formats and color profiles:
@ -32,12 +32,12 @@ NEW FEATURES SINCE 5.9
NEWS RELEVANT TO PACKAGE MAINTAINERS
New since 5.9:
New since 5.10:
- TODO
In general:
- To get the source code, either clone from git or use the tarball from https://rawtherapee.com/shared/source/ . Do not use the auto-generated GitHub release tarballs.
- Requires GTK+ version >=3.16, though >=3.22.24 is recommended.
- Requires GTK+ version >=3.22.24 in Windows, else >=3.16 (though >=3.22.24 is recommended).
- GTK+ versions 3.24.2 - 3.24.6 have an issue where combobox menu scroll-arrows are missing when the combobox list does not fit vertically on the screen. As a result, users would not be able to scroll in the following comboboxes: Processing Profiles, Film Simulation, and the camera and lens profiles in Profiled Lens Correction.
- RawTherapee 5 requires GCC-4.9 or higher, or Clang.
- Do not use -ffast-math, it will not make RawTherapee faster but will introduce artifacts.

View File

@ -22,6 +22,7 @@
<url type="translate">https://rawpedia.rawtherapee.com/Main_Page#Localization</url>
<launchable type="desktop-id">rawtherapee.desktop</launchable>
<releases>
<release version="5.10" date="2024-02-16" type="stable"></release>
<release version="5.9" date="2022-11-27" type="stable"></release>
<release version="5.8" date="2020-02-04" type="stable"></release>
<release version="5.7" date="2019-09-10" type="stable"></release>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,7 @@
{
"Canon EOS 100D": ["Canon EOS Kiss X7", "Canon EOS REBEL SL1"],
"Canon EOS 200D": ["Canon EOS Kiss X9", "Canon EOS Rebel SL2"],
"Canon EOS 250D": ["Canon EOS Kiss X10", "Canon EOS Rebel SL3"],
"Canon EOS 300D": ["Canon EOS Kiss Digital", "Canon EOS Digital Rebel"],
"Canon EOS 350D": ["Canon EOS 350D DIGITAL", "Canon EOS Kiss Digital N", "Canon EOS DIGITAL REBEL XT"],
"Canon EOS 400D": ["Canon EOS 400D DIGITAL", "Canon EOS Kiss Digital X", "Canon EOS DIGITAL REBEL XTi"],

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -1310,8 +1310,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -1978,6 +1978,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2018,6 +2019,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -2112,7 +2114,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2123,7 +2125,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!ICCPROFCREATOR_COPYRIGHT;Copyright:
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
@ -2387,7 +2389,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2702,6 +2704,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control
!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
@ -3107,6 +3111,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4193,7 +4198,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4203,7 +4208,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4215,7 +4220,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -3068,6 +3068,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!HISTORY_MSG_BLURCWAV;Blur chroma
!HISTORY_MSG_BLURWAV;Blur luminance
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -3096,6 +3097,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PERSP_CAM_ANGLE;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_FL;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_SHIFT;Perspective - Camera
@ -3159,7 +3161,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3170,7 +3172,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
@ -3277,7 +3279,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3363,6 +3365,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!TP_CROP_PPI;PPI
!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the 'Preview' method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings.
!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts.
!TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the <b>white balance is incorrect</b>\nYou can slightly reduce the zone to prevent the rest of the image is affected.
!TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image.
@ -3573,6 +3577,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!TP_LOCALLAB_EXPSHARP_TOOLTIP;Spot minimum 39*39.\nUse low transition values and high 'Transition decay' and 'Scope' values to simulate smaller spots.
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
!TP_LOCALLAB_FFTCOL_MASK;FFTW ƒ
@ -4207,7 +4212,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4217,7 +4222,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4229,7 +4234,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键<b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_JUDGEIII;JudgeIII
!TP_WBALANCE_LAMP_HEADER;Lamp

View File

@ -2465,8 +2465,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!HISTORY_MSG_470;--unused--
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -3110,6 +3110,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
!HISTORY_MSG_FILMNEGATIVE_COLORSPACE;Film negative color space
@ -3132,6 +3133,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!HISTORY_MSG_ICM_WORKING_PRIM_METHOD;Primaries method
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PERSP_CAM_ANGLE;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_FL;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_SHIFT;Perspective - Camera
@ -3174,7 +3176,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3185,7 +3187,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3235,7 +3237,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3287,6 +3289,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!TP_COLORAPP_YBSCEN_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. 18% gray corresponds to a background luminance of 50% expressed in CIE L.\nThe data is based on the mean luminance of the image.
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
!TP_FILMNEGATIVE_COLORSPACE_INPUT;Input color space
@ -3577,6 +3581,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4250,7 +4255,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4260,7 +4265,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4272,7 +4277,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -2318,8 +2318,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!HISTORY_MSG_470;--unused--
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2967,6 +2967,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -2991,6 +2992,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PERSP_CAM_ANGLE;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_FL;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_SHIFT;Perspective - Camera
@ -3062,7 +3064,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3073,7 +3075,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3124,7 +3126,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3187,6 +3189,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!TP_COLORAPP_YBSCEN_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. 18% gray corresponds to a background luminance of 50% expressed in CIE L.\nThe data is based on the mean luminance of the image.
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
!TP_FILMNEGATIVE_COLORSPACE_INPUT;Input color space
@ -3478,6 +3482,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4203,7 +4208,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4213,7 +4218,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4225,7 +4230,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Ud\nGenvej: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

File diff suppressed because it is too large Load Diff

View File

@ -283,7 +283,7 @@ TP_WBALANCE_ITCWB_SIZE;Size of ref. colour compare to histogram
TP_WBALANCE_ITCWB_SIZEPATCH;Size of colour patch
TP_WBALANCE_ITCWB_THRES;Colours used in picture (preset)
TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colourchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colours), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colours that can be used in internal to the algorithm will be more important.
TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colours.\n'Camera XYZ matrix' - uses the matrix directly derived from Colour Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colours.\n'Camera XYZ matrix' - uses the matrix directly derived from Colour Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
TP_WBALANCE_OBSERVER10_TOOLTIP;The colour management in Rawtherapee (White balance, channel multipliers, highlight recovery,...) uses the spectral data of the illuminants and colours. Observer is an important parameter of this management which takes into account the angle of perception of the eye. In 1931 it was fixed at 2° (privileges the use of the cones). In 1964 it was fixed at 10° (privileges the use of the cones, but partially takes into account the rods).\nTo avoid a (rare) drift of the colours due to the choice Observer 10° - probably due to the conversion matrix - Observer 2° must be selected.\nIn a majority of cases Observer 10° (default) will be a more relevant choice.
TP_WBALANCE_PATCHLABEL;Read colours:%1 Patch: Chroma:%2 Size=%3
TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDisplay calculated Patch Chroma.\nAWB temperature bias, lets try to reduce this value, a minimum may seem to optimize the algorithm.\n\nPatch size matching chroma optimization.
@ -1005,8 +1005,8 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -1619,6 +1619,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -1656,6 +1657,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -1747,7 +1749,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -1758,7 +1760,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!HISTORY_SNAPSHOT;Snapshot
@ -2219,7 +2221,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2584,6 +2586,8 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection.
@ -3046,6 +3050,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4175,7 +4180,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_PRECIS;Precision algorithm - scale used
!TP_WBALANCE_ITCWB_PRIM_ACE;Forces use of the entire CIE diagram
@ -4183,7 +4188,7 @@ TP_WBALANCE_PATCHLABEL_TOOLTIP;Display number of read colours (max=237).\nDispla
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range

View File

@ -741,8 +741,8 @@
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -1409,6 +1409,7 @@
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -1449,6 +1450,7 @@
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -1543,7 +1545,7 @@
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -1554,7 +1556,7 @@
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!HISTORY_SNAPSHOT;Snapshot
@ -2039,7 +2041,7 @@
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2447,6 +2449,8 @@
!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
@ -2959,6 +2963,7 @@
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4164,7 +4169,7 @@
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4174,7 +4179,7 @@
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4186,7 +4191,7 @@
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_JUDGEIII;JudgeIII
!TP_WBALANCE_LABEL;White Balance

View File

@ -4081,12 +4081,14 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!FILEBROWSER_POPUPSORTBY;Sort Files
!FILECHOOSER_FILTER_EXECUTABLE;Executable files
!GENERAL_OTHER;Other
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_GAMUTMUNSEL;Gamut-Munsell
!HISTORY_MSG_HLTH;Inpaint opposed - gain threshold
!HISTORY_MSG_ICM_GAMUT;Gamut control
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_TONE_EQUALIZER_BANDS;Tone equalizer - Bands
!HISTORY_MSG_TONE_EQUALIZER_ENABLED;Tone equalizer
!HISTORY_MSG_TONE_EQUALIZER_PIVOT;Tone equalizer - Pivot
@ -4097,7 +4099,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -4108,7 +4110,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!PARTIALPASTE_FLATFIELDFROMMETADATA;Flat-field from Metadata
!PARTIALPASTE_TONE_EQUALIZER;Tone equalizer
!PREFERENCES_CAMERAPROFILESDIR;Camera profiles directory
@ -4136,7 +4138,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -4158,6 +4160,8 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!SORT_DESCENDING;Descending
!TP_COLORAPP_CIECAT_DEGREEOUT;Chromatic Adaptation Viewing
!TP_COLORAPP_TEMPOUT_TOOLTIP;Temperature and Tint.\nDepending on the choices made previously, the selected temperature is:\nWhite balance\nA temp=2856\nD41 temp=4100\nD50 temp=5003\nD55 temp=5503\nD60 temp=6000\nD65 temp=6504\nD75 temp=7504\nFree.
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_PICK_SIZE;Size:
!TP_FILMNEGATIVE_REF_SIZE;Size:
!TP_FLATFIELD_FROMMETADATA;From Metadata
@ -4169,6 +4173,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!TP_LOCALLAB_CHROLABEL;Chroma levels 0123: Mean=%1 High=%2
!TP_LOCALLAB_DENOIWAVCH;Wavelets: Chrominance
!TP_LOCALLAB_DENOIWAVLUM;Wavelets: Luminance
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_GAMUTLABRELA;Lab
!TP_LOCALLAB_GAMUTMUNSELL;Munsell only
!TP_LOCALLAB_GAMUTNON;None
@ -4204,7 +4209,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4214,7 +4219,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4226,7 +4231,7 @@ ZOOMPANEL_ZOOMOUT;Alejar\nAtajo de teclado: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -2337,8 +2337,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2986,6 +2986,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -3012,6 +3013,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
@ -3091,7 +3093,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3102,7 +3104,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3166,7 +3168,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3237,6 +3239,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_CROP_PPI;PPI
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUE;Blue ratio
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
@ -3540,6 +3544,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4272,7 +4277,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4282,7 +4287,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4294,7 +4299,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -150,7 +150,7 @@ FILEBROWSER_POPUPPROCESSFAST;Mettre dans la file de traitement (Export Rapide)
FILEBROWSER_POPUPPROFILEOPERATIONS;Opérations sur les profils
FILEBROWSER_POPUPRANK;Rang
FILEBROWSER_POPUPRANK0;Aucun
FILEBROWSER_POPUPRANK1;Rang 1 *
FILEBROWSER_POPUPRANK1;Rang 1 *
FILEBROWSER_POPUPRANK2;Rang 2 **
FILEBROWSER_POPUPRANK3;Rang 3 ***
FILEBROWSER_POPUPRANK4;Rang 4 ****
@ -3083,8 +3083,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -3732,6 +3732,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_GAMUTMUNSEL;Gamut-Munsell
@ -3753,6 +3754,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
@ -3829,7 +3831,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3840,7 +3842,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3888,7 +3890,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3956,6 +3958,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_CROP_PPI;PPI
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_PICK_SIZE;Size:
!TP_FILMNEGATIVE_REF_SIZE;Size:
!TP_FLATFIELD_FROMMETADATA;From Metadata
@ -4034,6 +4038,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!TP_LOCALLAB_DENOIWAVCH;Wavelets: Chrominance
!TP_LOCALLAB_DENOIWAVLUM;Wavelets: Luminance
!TP_LOCALLAB_DIVGR;Gamma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_GAMC;Gamma
!TP_LOCALLAB_GAMCOL_TOOLTIP;Apply a gamma on Luminance L*a*b* datas.\nIf gamma = 3.0 Luminance 'linear' is used.
!TP_LOCALLAB_GAMC_TOOLTIP;Apply a gamma on Luminance L*a*b* datas before and after treatment Pyramid 1 and Pyramid 2.\nIf gamma = 3.0 Luminance 'linear' is used.
@ -4204,7 +4209,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4214,7 +4219,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4226,7 +4231,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -1534,8 +1534,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2202,6 +2202,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2242,6 +2243,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -2336,7 +2338,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2347,7 +2349,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_COPYRIGHT;Copyright:
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
!ICCPROFCREATOR_CUSTOM;Custom
@ -2578,7 +2580,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2766,6 +2768,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control
!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_MODE;Mode
!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive
!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative
@ -3133,6 +3137,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4200,7 +4205,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4210,7 +4215,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4222,7 +4227,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -4080,12 +4080,14 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!FILEBROWSER_POPUPSORTBY;Sort Files
!FILECHOOSER_FILTER_EXECUTABLE;Executable files
!GENERAL_OTHER;Other
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_GAMUTMUNSEL;Gamut-Munsell
!HISTORY_MSG_HLTH;Inpaint opposed - gain threshold
!HISTORY_MSG_ICM_GAMUT;Gamut control
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_TONE_EQUALIZER_BANDS;Tone equalizer - Bands
!HISTORY_MSG_TONE_EQUALIZER_ENABLED;Tone equalizer
!HISTORY_MSG_TONE_EQUALIZER_PIVOT;Tone equalizer - Pivot
@ -4096,7 +4098,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -4107,7 +4109,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!PARTIALPASTE_FLATFIELDFROMMETADATA;Flat-field from Metadata
!PARTIALPASTE_TONE_EQUALIZER;Tone equalizer
!PREFERENCES_CAMERAPROFILESDIR;Camera profiles directory
@ -4135,7 +4137,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -4157,6 +4159,8 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!SORT_DESCENDING;Descending
!TP_COLORAPP_CIECAT_DEGREEOUT;Chromatic Adaptation Viewing
!TP_COLORAPP_TEMPOUT_TOOLTIP;Temperature and Tint.\nDepending on the choices made previously, the selected temperature is:\nWhite balance\nA temp=2856\nD41 temp=4100\nD50 temp=5003\nD55 temp=5503\nD60 temp=6000\nD65 temp=6504\nD75 temp=7504\nFree.
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_PICK_SIZE;Size:
!TP_FILMNEGATIVE_REF_SIZE;Size:
!TP_FLATFIELD_FROMMETADATA;From Metadata
@ -4168,6 +4172,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!TP_LOCALLAB_CHROLABEL;Chroma levels 0123: Mean=%1 High=%2
!TP_LOCALLAB_DENOIWAVCH;Wavelets: Chrominance
!TP_LOCALLAB_DENOIWAVLUM;Wavelets: Luminance
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_GAMUTLABRELA;Lab
!TP_LOCALLAB_GAMUTMUNSELL;Munsell only
!TP_LOCALLAB_GAMUTNON;None
@ -4204,7 +4209,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4214,7 +4219,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4226,7 +4231,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -1758,8 +1758,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2426,6 +2426,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2466,6 +2467,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -2560,7 +2562,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2571,7 +2573,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!PARTIALPASTE_FLATFIELDFROMMETADATA;Flat-field from Metadata
!PARTIALPASTE_TONE_EQUALIZER;Tone equalizer
@ -2601,7 +2603,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2720,6 +2722,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
@ -3160,6 +3164,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4256,7 +4261,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4266,7 +4271,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4278,7 +4283,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

File diff suppressed because it is too large Load Diff

View File

@ -2729,6 +2729,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2764,6 +2765,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;CS - Corner radius boost
!HISTORY_MSG_PERSP_CAM_ANGLE;Perspective - Camera
@ -2842,7 +2844,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2853,7 +2855,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
!ICCPROFCREATOR_ILL;Illuminant:
@ -2960,7 +2962,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3051,6 +3053,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= -
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal)
!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size.
!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one.
@ -3360,6 +3364,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4213,7 +4218,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4223,7 +4228,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4235,7 +4240,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -2280,8 +2280,8 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2929,6 +2929,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -2955,6 +2956,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
@ -3033,7 +3035,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3044,7 +3046,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3098,7 +3100,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3169,6 +3171,8 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_CROP_PPI;PPI
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUE;Blue ratio
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
@ -3472,6 +3476,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4202,7 +4207,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4212,7 +4217,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4224,7 +4229,7 @@ ZOOMPANEL_ZOOMOUT;Afastar\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -2285,8 +2285,8 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2936,6 +2936,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -2962,6 +2963,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
@ -3040,7 +3042,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3051,7 +3053,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3104,7 +3106,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3173,6 +3175,8 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_CROP_PPI;PPI
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
!TP_FILMNEGATIVE_COLORSPACE_INPUT;Input color space
@ -3470,6 +3474,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4203,7 +4208,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4213,7 +4218,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4225,7 +4230,7 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -1707,8 +1707,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2370,6 +2370,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2404,6 +2405,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
@ -2494,7 +2496,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2505,7 +2507,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_COPYRIGHT;Copyright:
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
!ICCPROFCREATOR_CUSTOM;Custom
@ -2658,7 +2660,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2850,6 +2852,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= -
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method
!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only
!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter
@ -3193,6 +3197,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4208,7 +4213,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4218,7 +4223,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4230,7 +4235,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -1509,8 +1509,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2177,6 +2177,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2217,6 +2218,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -2311,7 +2313,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2322,7 +2324,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_COPYRIGHT;Copyright:
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
!ICCPROFCREATOR_CUSTOM;Custom
@ -2565,7 +2567,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2757,6 +2759,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control
!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
!TP_DIRPYRDENOISE_MAIN_MODE;Mode
!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive
@ -3134,6 +3138,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4200,7 +4205,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4210,7 +4215,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4222,7 +4227,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -2313,8 +2313,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!HISTORY_MSG_470;--unused--
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2962,6 +2962,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!HISTORY_MSG_COMPLEX;Wavelet complexity
!HISTORY_MSG_COMPLEXRETI;Retinex complexity
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
!HISTORY_MSG_FF_FROMMETADATA;Flat-Field - From Metadata
!HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Reference output
@ -2986,6 +2987,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!HISTORY_MSG_ILLUM;CAL - SC - Illuminant
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
!HISTORY_MSG_PERSP_CAM_ANGLE;Perspective - Camera
!HISTORY_MSG_PERSP_CAM_FL;Perspective - Camera
@ -3058,7 +3060,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -3069,7 +3071,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_ILL_63;D63 : DCI-P3 Theater
!ICCPROFCREATOR_PRIM_DCIP3;DCI-P3
!INSPECTOR_WINDOW_TITLE;Inspector
@ -3120,7 +3122,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -3183,6 +3185,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!TP_COLORAPP_YBSCEN_TOOLTIP;Yb is the relative luminance of the background, expressed in % of gray. 18% gray corresponds to a background luminance of 50% expressed in CIE L.\nThe data is based on the mean luminance of the image.
!TP_CROP_GTCENTEREDSQUARE;Centered square
!TP_DEHAZE_SATURATION;Saturation
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_FILMNEGATIVE_BLUEBALANCE;Cool/Warm
!TP_FILMNEGATIVE_COLORSPACE;Inversion color space:
!TP_FILMNEGATIVE_COLORSPACE_INPUT;Input color space
@ -3475,6 +3479,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4201,7 +4206,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4211,7 +4216,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4223,7 +4228,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Out\nBližnjica: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -1857,8 +1857,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_494;Capture Sharpening
!HISTORY_MSG_496;Local Spot deleted
!HISTORY_MSG_497;Local Spot selected
!HISTORY_MSG_498;--unused--
!HISTORY_MSG_499;--unused--
!HISTORY_MSG_498;Local - Spot name
!HISTORY_MSG_499;Local - Spot visibility
!HISTORY_MSG_500;Local - Spot shape
!HISTORY_MSG_501;Local - Spot method
!HISTORY_MSG_502;Local - SC - Shape method
@ -2525,6 +2525,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
!HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -2565,6 +2566,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
!HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
!HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -2659,7 +2661,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
!HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
!HISTORY_MSG_WBITC_FORCE;Itcwb Force
!HISTORY_MSG_WBITC_GREEN;Grren refinement
!HISTORY_MSG_WBITC_GREEN;Green refinement
!HISTORY_MSG_WBITC_MINSIZE;Patch min size
!HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
!HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -2670,7 +2672,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_WBITC_SAMPLING;Low sampling
!HISTORY_MSG_WBITC_SIZE;Itcwb Size
!HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
!HISTORY_MSG_WBITC_THRES;Itcwb Theshold
!HISTORY_MSG_WBITC_THRES;Itcwb Threshold
!ICCPROFCREATOR_COPYRIGHT;Copyright:
!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to 'RawTherapee, CC0'.
!ICCPROFCREATOR_CUSTOM;Custom
@ -2865,7 +2867,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!PREFERENCES_WBA;White Balance
!PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
!PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
!PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
!PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
!PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
!PREFERENCES_WBAFORC;Forces Extra algoritm
!PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2998,6 +3000,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the 'Preview' method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings.
!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance.
!TP_DIRPYRDENOISE_LABEL;Noise Reduction
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
!TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Conservative preserves low frequency chroma patterns, while aggressive obliterates them.
!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method
!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter
@ -3336,6 +3340,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
!TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
!TP_LOCALLAB_FATLEVEL;Sigma
!TP_LOCALLAB_FATSAT;Saturation control
!TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
!TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
!TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4202,7 +4207,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
!TP_WBALANCE_ITCWB_FGREEN;Find green student
!TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
!TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
!TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
!TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
!TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
!TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color
@ -4212,7 +4217,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_WBALANCE_ITCWB_PRIM_BETA;Medium sampling - near Pointer's gamut
!TP_WBALANCE_ITCWB_PRIM_JDCMAX;Close to full CIE diagram
!TP_WBALANCE_ITCWB_PRIM_REC;High sampling
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & No use Camera settings
!TP_WBALANCE_ITCWB_PRIM_SRGB;Low sampling & Ignore Camera settings
!TP_WBALANCE_ITCWB_PRIM_XYZCAM;Camera XYZ matrix
!TP_WBALANCE_ITCWB_PRIM_XYZCAM2;JDCmax after Camera XYZ matrix
!TP_WBALANCE_ITCWB_RGREEN;Green range
@ -4224,7 +4229,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_WBALANCE_ITCWFORCED_TOOLTIP;By default (box not checked) the data scanned during sampling is brought back to the sRGB profile, which is the most widespread, both for calibrating DCP or ICC profiles with the Colorchecker24, or used on the web.\n If you have very high gamut images (some flowers, artificial colors), then it may be necessary to use the entire CIExy diagram, the profile used will be ACESP0. In this second case, the number of colors that can be used in internal to the algorithm will be more important.
!TP_WBALANCE_ITCWGREEN;Green refinement
!TP_WBALANCE_ITCWGREEN_TOOLTIP;Allows you to change the "tint" (green) which will serve as a reference when starting the algorithm. It has substantially the same role for greens as "AWB temperature bias" for temperature.\nThe whole algorithm is recalculated.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and No use camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) not to use camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWPRIM_TOOLTIP;Allows you to select the image sampling.\n'Close to full CIE diagram' almost uses the data present on the sensor, possibly including the imaginary colors.\n'Camera XYZ matrix' - uses the matrix directly derived from Color Matrix.\n'Medium sampling' (default) - near Pointer's gamut: corresponds substantially to the most common cases of human vision.\nThe other choice 'Low sampling and Ignore camera settings' allow you to isolate high gamut parts of the image and forces the algorithm in some cases (tint > 0.8,...) to ignore camera settings. This will obviously have an impact on the result.\n\nThis sampling only has an influence on the channel multipliers, it has nothing to do with the "working profile" and does not modify the gamut of the image.
!TP_WBALANCE_ITCWSAMPLING_TOOLTIP;Allows you to use the old sampling algorithm to ensure better compatibility with 5.9. You must enable Observer 10° (default).
!TP_WBALANCE_MULLABEL;Multipliers: r=%1 g=%2 b=%3
!TP_WBALANCE_MULLABEL_TOOLTIP;Values given for information purposes. You cannot change them.

View File

@ -740,8 +740,8 @@ HISTORY_MSG_493;L*a*b* Adjustments
HISTORY_MSG_494;Capture Sharpening
HISTORY_MSG_496;Local Spot deleted
HISTORY_MSG_497;Local Spot selected
HISTORY_MSG_498;--unused--
HISTORY_MSG_499;--unused--
HISTORY_MSG_498;Local - Spot name
HISTORY_MSG_499;Local - Spot visibility
HISTORY_MSG_500;Local - Spot shape
HISTORY_MSG_501;Local - Spot method
HISTORY_MSG_502;Local - SC - Shape method
@ -1408,6 +1408,7 @@ HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
HISTORY_MSG_DEHAZE_SATURATION;Dehaze - Saturation
HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
HISTORY_MSG_DIRPYRDENOISE_GAIN;NR - Compensate for lightness
HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
HISTORY_MSG_EDGEFFECT;Edge Attenuation response
@ -1449,6 +1450,7 @@ HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
HISTORY_MSG_LOCALLAB_TE_PIVOT;Local - Equalizer pivot
HISTORY_MSG_LOCAL_DEHAZE_BLACK;Local - Dehaze - black
HISTORY_MSG_LOCAL_GAMUTMUNSEL;Local - SC - Avoid Color Shift
HISTORY_MSG_LOCAL_TMO_SATUR;Local Exp Fattal Saturation
HISTORY_MSG_METADATA_MODE;Metadata copy mode
HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
@ -1543,7 +1545,7 @@ HISTORY_MSG_WBITC_CUSTOM;Itcwb Custom
HISTORY_MSG_WBITC_DELTA;Itcwb Delta green
HISTORY_MSG_WBITC_FGREEN;Itcwb Green - student
HISTORY_MSG_WBITC_FORCE;Itcwb Force
HISTORY_MSG_WBITC_GREEN;Grren refinement
HISTORY_MSG_WBITC_GREEN;Green refinement
HISTORY_MSG_WBITC_MINSIZE;Patch min size
HISTORY_MSG_WBITC_NOPURPLE;Itcwb Nopurple
HISTORY_MSG_WBITC_OBS;Remove algo 2 passes
@ -1554,7 +1556,7 @@ HISTORY_MSG_WBITC_RGREEN;Itcwb Green range
HISTORY_MSG_WBITC_SAMPLING;Low sampling
HISTORY_MSG_WBITC_SIZE;Itcwb Size
HISTORY_MSG_WBITC_SORTED;Itcwb ponderated
HISTORY_MSG_WBITC_THRES;Itcwb Theshold
HISTORY_MSG_WBITC_THRES;Itcwb Threshold
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
HISTORY_SNAPSHOT;Snapshot
@ -1942,6 +1944,7 @@ PREFERENCES_LENSFUNDBDIR;Lensfun database directory
PREFERENCES_LENSFUNDBDIR_TOOLTIP;Directory containing the Lensfun database. Leave empty to use the default directories.
PREFERENCES_LENSPROFILESDIR;Lens profiles directory
PREFERENCES_LENSPROFILESDIR_TOOLTIP;Directory containing Adobe Lens Correction Profiles (LCPs)
PREFERENCES_MAX_ZOOM_TITLE;Maximum zoom
PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
PREFERENCES_MENUGROUPEXTPROGS;Group 'Open with'
PREFERENCES_MENUGROUPFILEOPERATIONS;Group 'File operations'
@ -2038,7 +2041,7 @@ PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
PREFERENCES_WBA;White Balance
PREFERENCES_WBACORR;White Balance - Automatic temperature correlation
PREFERENCES_WBACORR_TOOLTIP;These settings allow, depending on the images (type of raw file, colorimetry, etc.), an adaptation of the " Temperature correlation " algorithm in order to obtain the best overall results. There is no absolute rule, linking these parameters to the results obtained.\n\nThe settings are of 3 types: \n* those accessible to the user from the GUI.\n* those accessible only in reading from each pp3 file : Itcwb_minsize=20, Itcwb_delta=4 Itcwb_rgreen=1 Itcwb_nopurple=false (See Rawpedia)\n* those accessible to the user in 'options' (see Rawpedia)\n You can use "Awb temperature bias" and "Green refinement" to adjust the results. Each movement of these commands brings a new calculation of temperature, tint and correlation.\n\nPlease note that the 3 indicators 'Correlation factor', 'Patch chroma' and ΔE are given for information only. It is not because one of these indicators is better that the result will necessarily be better.
PREFERENCES_WBAENA;Show White Balance auto Temperature correlation Settings
PREFERENCES_WBAENA;Show White Balance Auto temperature correlation settings
PREFERENCES_WBAENACUSTOM;Use Custom temperature & tint
PREFERENCES_WBAFORC;Forces Extra algoritm
PREFERENCES_WBAGREENDELTA;Delta temperature in green iterate loop (if Force Extra enabled)
@ -2099,10 +2102,31 @@ QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s)
QUEUE_AUTOSTART;Auto-start
QUEUE_AUTOSTART_TOOLTIP;Start processing automatically when a new job arrives.
QUEUE_DESTFILENAME;Path and file name
QUEUE_DESTPREVIEW_TITLE;Select a thumbnail to preview its destination path here
QUEUE_DESTPREVIEW_TOOLTIP;Destination path for the first selected image appears here
QUEUE_FORMAT_TITLE;File Format
QUEUE_LOCATION_FOLDER;Save to folder
QUEUE_LOCATION_TEMPLATE;Use template
QUEUE_LOCATION_TEMPLATE_TOOLTIP;Specify the output location based on the source photo's location, rank, trash status or position in the queue.\n\nUsing the following pathname as an example:\n<b>/home/tom/photos/2010-10-31/photo1.raw</b>\nthe meaning of the formatting strings follows:\n<b>%d4</b> = <i>home</i>\n<b>%d3</b> = <i>tom</i>\n<b>%d2</b> = <i>photos</i>\n<b>%d1</b> = <i>2010-10-31</i>\n<b>%f</b> = <i>photo1</i>\n<b>%p1</b> = <i>/home/tom/photos/2010-10-31/</i>\n<b>%p2</b> = <i>/home/tom/photos/</i>\n<b>%p3</b> = <i>/home/tom/</i>\n<b>%p4</b> = <i>/home/</i>\n\n<b>%r</b> will be replaced by the photo's rank. If the photo is unranked, '<i>0</i>' is used. If the photo is in the trash, '<i>x</i>' is used.\n\n<b>%s1</b>, ..., <b>%s9</b> will be replaced by the photo's initial position in the queue at the time the queue is started. The number specifies the padding, e.g. <b>%s3</b> results in '<i>001</i>'.\n\nIf you want to save the output image alongside the source image, write:\n<b>%p1/%f</b>\n\nIf you want to save the output image in a folder named '<i>converted</i>' located in the source photo's folder, write:\n<b>%p1/converted/%f</b>\n\nIf you want to save the output image in\n'<i>/home/tom/photos/converted/2010-10-31</i>', write:\n<b>%p2/converted/%d1/%f</b>
QUEUE_LOCATION_TEMPLATE_TOOLTIP;Specify the output location based on characteristics such as the source photo's location, rank, trash status or position in the queue.\n\nThe output template field value can include specifiers beginning with <b>%</b>, which are replaced by those characteristics in the actual destination path.\n\nPress the <b>?</b> button for full instructions.
QUEUE_LOCATION_TEMPLATE_HELP_BUTTON_TOOLTIP;Show or hide a help panel with instructions for creating location templates
QUEUE_LOCATION_TEMPLATE_HELP_TITLE;Creating an output template
QUEUE_LOCATION_TEMPLATE_HELP_INTRO;The output template field allows you to to dynamically customize the destination folder and filename. When you include certain specifiers, which begin with <b>%</b>, they are replaced by the program when each file is being saved.\n\nThe sections below describe each type of specifier.
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_TITLE;Directories and partial paths
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_INTRO;The <b>%dN</b>, <b>%d-N</b>, <b>%pN</b>, <b>%p-N</b>, <b>%PN</b> and <b>%P-N</b> (N = 1..9) specifiers will be replaced by elements of the image file's directory path.\nThe format specifiers operate as follows:\n <b>%dN</b> = Nth directory from the end of the path\n <b>%d-N</b> = Nth directory from the start of the path\n <b>%pN</b> = all directories up to the Nth from the end of the path\n <b>%p-N</b> = the first N directories in the path\n <b>%PN</b> = the last N directories in the path\n <b>%P-N</b> = all directories from the Nth to the end of the path\n <b>%f</b> = base filename (no extension)
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_INTRO_WINDOWS;For Windows paths, <b>%d-1</b> is the drive letter and colon, and <b>%d-2</b> is the base directory on that drive.
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_BODY_1;Using this pathname as an example:
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_EXAMPLE_LINUX;/home/tom/photos/2010-10-31/photo1.raw
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_EXAMPLE_WINDOWS;D:\tom\photos\2010-10-31\photo1.raw
QUEUE_LOCATION_TEMPLATE_HELP_PATHS_BODY_2;The meanings of the formatting strings are:
QUEUE_LOCATION_TEMPLATE_HELP_RESULT_MISMATCH;ERROR: 2nd result is different:
QUEUE_LOCATION_TEMPLATE_HELP_RANK_TITLE;Rank
QUEUE_LOCATION_TEMPLATE_HELP_RANK_BODY;<b>%r</b> will be replaced by the photo's rank. If the photo is unranked, '<i>0</i>' is used. If the photo is in the trash, '<i>x</i>' is used.
QUEUE_LOCATION_TEMPLATE_HELP_SEQUENCE_TITLE;Position/sequence in queue
QUEUE_LOCATION_TEMPLATE_HELP_SEQUENCE_BODY;<b>%s1</b>, ..., <b>%s9</b> will be replaced by the photo's initial position in the queue at the time the queue is started. The number specifies the padding, e.g. <b>%s3</b> results in '<i>001</i>'.
QUEUE_LOCATION_TEMPLATE_HELP_TIMESTAMP_TITLE;Date and time
QUEUE_LOCATION_TEMPLATE_HELP_TIMESTAMP_BODY;Three different date/time values may be used in templates:\n <b>%tE"%Y-%m-%d"</b> = when export started\n <b>%tF"%Y-%m-%d"</b> = when file was last saved\n <b>%tP"%Y-%m-%d"</b> = when photo was taken\nThe quoted string defines the format of the resulting date and/or time. The format string <b>%tF"%Y-%m-%d"</b> is just one example. The string can use all conversion specifiers defined for the g_date_time_format function (see https://docs.gtk.org/glib/method.DateTime.format.html).\n\nExample format strings:
QUEUE_LOCATION_TEMPLATE_HELP_EXAMPLES_TITLE;Common examples
QUEUE_LOCATION_TEMPLATE_HELP_EXAMPLES_BODY;If you want to save the output image alongside the source image, write:\n<b>%p1/%f</b>\n\nIf you want to save the output image in a folder named '<i>converted</i>' located in the source photo's folder, write:\n<b>%p1/converted/%f</b>\n\nIf you want to save the output image in\n'<i>/home/tom/photos/converted/2010-10-31</i>', write:\n<b>%p-3/converted/%P-4/%f</b>
QUEUE_LOCATION_TITLE;Output Location
QUEUE_STARTSTOP_TOOLTIP;Start or stop processing the images in the queue.\n\nShortcut: <b>Ctrl</b>+<b>s</b>
SAMPLEFORMAT_0;Unknown data format
@ -2446,6 +2470,8 @@ TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery
TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance
TP_DIRPYRDENOISE_MAIN_AUTO_GAIN;Compensate for lightness
TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP;Alter the noise reduction strength based on the image lightness. Strength is reduced for dark images and increased for bright images.
TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space
TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
@ -2956,9 +2982,11 @@ TP_LOCALLAB_EXP_TOOLNAME;Dynamic Range & Exposure
TP_LOCALLAB_FATAMOUNT;Amount
TP_LOCALLAB_FATANCHOR;Anchor
TP_LOCALLAB_FATDETAIL;Detail
TP_LOCALLAB_FATSAT;Saturation control
TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal uses the Fattal Tone-mapping algorithm.
TP_LOCALLAB_FATLEVEL;Sigma
TP_LOCALLAB_FATSAT;Saturation control
TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn't been activated.
TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
@ -4164,7 +4192,7 @@ TP_WBALANCE_ITCWB_CUSTOM;Use Custom temperature & tint
TP_WBALANCE_ITCWB_DELTA;Delta temperature in green loop
TP_WBALANCE_ITCWB_FGREEN;Find green student
TP_WBALANCE_ITCWB_FORCED;Close to full CIE diagram
TP_WBALANCE_ITCWB_FRA;Auto Temperature correlation Settings
TP_WBALANCE_ITCWB_FRA;Auto temperature correlation settings
TP_WBALANCE_ITCWB_FRA_TOOLTIP;These settings allow, depending on the images (type of raw, colorimetry, etc.), an adaptation of the 'Temperature correlation' algorithm. There is no absolute rule linking these parameters to the results obtained.
TP_WBALANCE_ITCWB_MINSIZEPATCH;Patch minimum size
TP_WBALANCE_ITCWB_NOPURPLE;Filter on purple color

View File

@ -146,7 +146,7 @@ float* RawImageSource::CA_correct_RT(
const unsigned int cfa[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}};
constexpr int ts = 128;
constexpr int tsh = ts / 2;
const int cb = border_crop;
const int cb = 2 * ((border_crop + 1) / 2); // Round up to nearest even integer.
//shifts to location of vertical and diagonal neighbours
constexpr int v1 = ts, v2 = 2 * ts, v3 = 3 * ts, v4 = 4 * ts; //, p1=-ts+1, p2=-2*ts+2, p3=-3*ts+3, m1=ts+1, m2=2*ts+2, m3=3*ts+3;

View File

@ -120,6 +120,7 @@ set(RTENGINESOURCEFILES
imagedimensions.cc
imagefloat.cc
imageio.cc
imagesource.cc
improccoordinator.cc
improcfun.cc
impulse_denoise.cc

View File

@ -665,7 +665,7 @@ BENCHFUN
Color::gammanf2lut(igamcurve, igam, 32768.f, 65535.f);
}
const float gain = std::pow(2.0, expcomp);
const float gain = dnparams.autoGain ? static_cast<float>(std::pow(2.0, expcomp)) : 1.f;
const double params_Ldetail = std::min(dnparams.Ldetail, 99.9); // max out to avoid div by zero when using noisevar_Ldetail as divisor
const float noisevar_Ldetail = SQR((SQR(100. - params_Ldetail) + 50.0 * (100.0 - params_Ldetail)) * TS * 0.5);
@ -1246,7 +1246,9 @@ BENCHFUN
chresid = sqrt(chresid / (6 * (levwav)));
highresi = chresid + 0.66f * (sqrt(chmaxresid) - chresid); //evaluate sigma
nresi = chresid;
printf("Nresi=%f Highresi=%f lev=%i\n", (double) nresi, (double) highresi, levwav);
if (settings->verbose) {
printf("Nresi=%f Highresi=%f lev=%i\n", (double) nresi, (double) highresi, levwav);
}
}
bdecomp->reconstruct(labdn->b[0]);
@ -1773,7 +1775,6 @@ BENCHFUN
//median 3x3 in complement on RGB
if (dnparams.methodmed == "RGB" && dnparams.median) {
//printf("RGB den\n");
int wid = dst->getWidth(), hei = dst->getHeight();
float** tm;
tm = new float*[hei];
@ -2106,7 +2107,7 @@ float ImProcFunctions::Mad(const float * DataList, const int datalen)
//calculate histogram of absolute values of wavelet coeffs
for (int i = 0; i < datalen; ++i) {
histo[static_cast<int>(rtengine::min(32768.f, fabsf(DataList[i])))]++;
histo[static_cast<int>(rtengine::min(32767.f, fabsf(DataList[i])))]++;
}
//find median of histogram
@ -2381,7 +2382,10 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkL(wavelet_decomposition& Wavelet
bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition& WaveletCoeffs_L, wavelet_decomposition& WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float *variC, int local, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, int denoiseNestedLevels)
{
int maxlvl = WaveletCoeffs_L.maxlevel();
printf("Ftblockdn ab bishrink\n");
if (settings->verbose) {
printf("Ftblockdn ab bishrink\n");
}
if (local == 1) {
maxlvl = 6; //for local denoise
@ -2463,7 +2467,6 @@ bool ImProcFunctions::WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition& Wavele
float* const* WavCoeffs_ab = WaveletCoeffs_ab.level_coeffs(lvl);
if (lvl == maxlvl - 1) {
//printf("Shrink ab bis\n");
ShrinkAllAB(WaveletCoeffs_L, WaveletCoeffs_ab, buffer, lvl, dir, noisevarchrom, noisevar_ab, useNoiseCCurve, autoch, denoiseMethodRgb, madL[lvl], nullptr, 0, madab[lvl], true);
} else {
//simple wavelet shrinkage
@ -3287,7 +3290,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc,
bool denoiseMethodRgb = (dnparams.dmethod == "RGB");
const float gain = pow(2.0f, float(expcomp));
const float gain = dnparams.autoGain ? pow(2.0f, float(expcomp)) : 1.f;
int tilesize = 0;
int overlap = 0;

View File

@ -27,6 +27,8 @@
//
////////////////////////////////////////////////////////////////
#include <vector>
#include "gauss.h"
#include "improcfun.h"
#include "cieimage.h"
@ -134,6 +136,8 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
const float threshfactor = 1.f / (SQR(thresh / 33.f) * chromavef * 5.0f + chromavef);
const int halfwin = std::ceil(2 * radius) + 1;
const LabImage labOriginal(*lab, multiThread);
// Issue 1674:
// often, colour fringe is not evenly distributed, e.g. a lot in contrasty regions and none in the sky.
// so it's better to schedule dynamic and let every thread only process 16 rows, to avoid running big threads out of work
@ -156,8 +160,8 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
for (int j1 = 0; j1 < j + halfwin; j1++) {
// neighbourhood average of pixels weighted by chrominance
const float wt = fringe[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
@ -176,8 +180,8 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
for (int j1 = j - halfwin + 1; j1 < j + halfwin; j1++) {
// neighbourhood average of pixels weighted by chrominance
const float wt = fringe[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
@ -196,8 +200,8 @@ void ImProcFunctions::PF_correct_RT(LabImage * lab, double radius, int thresh)
for (int j1 = j - halfwin + 1; j1 < width; j1++) {
// neighbourhood average of pixels weighted by chrominance
const float wt = fringe[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
@ -525,6 +529,20 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
}
}
std::vector<float> sh_p_orig(static_cast<std::vector<float>::size_type>(width) * height);
const auto sh_p_orig_at = [&sh_p_orig, width](int y, int x) {
return sh_p_orig[y * width + x];
};
#ifdef _OPENMP
#pragma omp parallel for
#endif
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
sh_p_orig[i * width + j] = ncie->sh_p[i][j];
}
}
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16)
#endif
@ -538,10 +556,10 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = 0; j1 <= j + 2; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += ncie->sh_p[i1][j1];
sum += sh_p_orig_at(i1, j1);
tot += 1.f;
const float dirsh = 1.f / (SQR(ncie->sh_p[i1][j1] - ncie->sh_p[i][j]) + eps);
shsum += dirsh * ncie->sh_p[i1][j1];
const float dirsh = 1.f / (SQR(sh_p_orig_at(i1, j1) - sh_p_orig_at(i, j)) + eps);
shsum += dirsh * sh_p_orig_at(i1, j1);
norm += dirsh;
}
}
@ -561,10 +579,10 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = j - 2; j1 <= j + 2; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += ncie->sh_p[i1][j1];
sum += sh_p_orig_at(i1, j1);
tot += 1.f;
const float dirsh = 1.f / (SQR(ncie->sh_p[i1][j1] - ncie->sh_p[i][j]) + eps);
shsum += dirsh * ncie->sh_p[i1][j1];
const float dirsh = 1.f / (SQR(sh_p_orig_at(i1, j1) - sh_p_orig_at(i, j)) + eps);
shsum += dirsh * sh_p_orig_at(i1, j1);
norm += dirsh;
}
}
@ -584,10 +602,10 @@ void ImProcFunctions::Badpixelscam(CieImage * ncie, double radius, int thresh, i
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = j - 2; j1 < width; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += ncie->sh_p[i1][j1];
sum += sh_p_orig_at(i1, j1);
tot += 1.f;
const float dirsh = 1.f / (SQR(ncie->sh_p[i1][j1] - ncie->sh_p[i][j]) + eps);
shsum += dirsh * ncie->sh_p[i1][j1];
const float dirsh = 1.f / (SQR(sh_p_orig_at(i1, j1) - sh_p_orig_at(i, j)) + eps);
shsum += dirsh * sh_p_orig_at(i1, j1);
norm += dirsh;
}
}
@ -864,6 +882,8 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
const std::unique_ptr<float[]> badpix(new float[width * height]);
const LabImage labOriginal(*lab, multiThread);
if (radius >= 0.5) { // for gauss sigma less than 0.25 gaussianblur() just calls memcpy => nothing to do here
//luma badpixels
// for bad pixels in L channel we need 0 / != 0 information. Use 1 byte per pixel instead of 4 to reduce memory pressure
@ -956,10 +976,10 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = 0; j1 <= j + 2; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += lab->L[i1][j1];
sum += labOriginal.L[i1][j1];
tot += 1.f;
const float dirsh = 1.f / (SQR(lab->L[i1][j1] - lab->L[i][j]) + eps);
shsum += dirsh * lab->L[i1][j1];
const float dirsh = 1.f / (SQR(labOriginal.L[i1][j1] - labOriginal.L[i][j]) + eps);
shsum += dirsh * labOriginal.L[i1][j1];
norm += dirsh;
}
}
@ -979,10 +999,10 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = j - 2; j1 <= j + 2; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += lab->L[i1][j1];
sum += labOriginal.L[i1][j1];
tot += 1.f;
const float dirsh = 1.f / (SQR(lab->L[i1][j1] - lab->L[i][j]) + eps);
shsum += dirsh * lab->L[i1][j1];
const float dirsh = 1.f / (SQR(labOriginal.L[i1][j1] - labOriginal.L[i][j]) + eps);
shsum += dirsh * labOriginal.L[i1][j1];
norm += dirsh;
}
}
@ -1002,10 +1022,10 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - 2); i1 <= std::min(i + 2, height - 1); i1++) {
for (int j1 = j - 2; j1 < width; j1++) {
if (!badpixb[i1 * width + j1]) {
sum += lab->L[i1][j1];
sum += labOriginal.L[i1][j1];
tot += 1.f;
const float dirsh = 1.f / (SQR(lab->L[i1][j1] - lab->L[i][j]) + eps);
shsum += dirsh * lab->L[i1][j1];
const float dirsh = 1.f / (SQR(labOriginal.L[i1][j1] - labOriginal.L[i][j]) + eps);
shsum += dirsh * labOriginal.L[i1][j1];
norm += dirsh;
}
}
@ -1095,8 +1115,8 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - halfwin + 1); i1 < std::min(height, i + halfwin); i1++) {
for (int j1 = 0; j1 < j + halfwin; j1++) {
const float wt = badpix[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
}
@ -1118,15 +1138,15 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - halfwin + 1); i1 < std::min(height, i + halfwin); i1++) {
for (int j1 = j - halfwin + 1; j1 < j + halfwin; j1++) {
const vfloat wtv = LVFU(badpix[i1 * width + j1]);
atotv += wtv * LVFU(lab->a[i1][j1]);
btotv += wtv * LVFU(lab->b[i1][j1]);
atotv += wtv * LVFU(labOriginal.a[i1][j1]);
btotv += wtv * LVFU(labOriginal.b[i1][j1]);
normv += wtv;
}
}
selMask = vandm(selMask, vmaskf_lt(SQRV(atotv) + SQR(btotv), chromv * SQRV(normv)));
if (_mm_movemask_ps(reinterpret_cast<vfloat>(selMask))) {
const vfloat aOrig = LVFU(lab->a[i][j]);
const vfloat bOrig = LVFU(lab->b[i][j]);
const vfloat aOrig = LVFU(labOriginal.a[i][j]);
const vfloat bOrig = LVFU(labOriginal.b[i][j]);
STVFU(lab->a[i][j], vself(selMask, atotv / normv, aOrig));
STVFU(lab->b[i][j], vself(selMask, btotv / normv, bOrig));
}
@ -1141,8 +1161,8 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - halfwin + 1); i1 < std::min(height, i + halfwin); i1++) {
for (int j1 = j - halfwin + 1; j1 < j + halfwin; j1++) {
const float wt = badpix[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
}
@ -1161,8 +1181,8 @@ void ImProcFunctions::BadpixelsLab(LabImage * lab, double radius, int thresh, fl
for (int i1 = std::max(0, i - halfwin + 1); i1 < std::min(height, i + halfwin); i1++) {
for (int j1 = j - halfwin + 1; j1 < width; j1++) {
const float wt = badpix[i1 * width + j1];
atot += wt * lab->a[i1][j1];
btot += wt * lab->b[i1][j1];
atot += wt * labOriginal.a[i1][j1];
btot += wt * labOriginal.b[i1][j1];
norm += wt;
}
}

View File

@ -389,13 +389,18 @@ Camera constants:
"ranges": {
// black levels are read from raw masked pixels
// white levels are same for all colors all ISOs, but safety margin vary on ISO
// actually not, 160 & 320 & 640 seem to have different white levels per color
"white": [
{ "iso": 50, "levels": 16350 }, // typical for all ISOs: 16383, stdev 2.25
{ "iso": 100, "levels": 16350 }, // stdev 2.25
{ "iso": [ 125, 160, 200, 250 ], "levels": 16340 }, // stdev 2.5
{ "iso": [ 320, 400, 500 ], "levels": 16330 }, // stdev 2.95
{ "iso": [ 640, 800, 1000 ], "levels": 16320 }, // stdev x, 4.0 , x
{ "iso": [ 1250, 1600, 2000 ], "levels": 16300 }, // stdev x, 6.0 , x
{ "iso": [ 125, 200, 250 ], "levels": 16340 }, // stdev 2.5
{ "iso": 160, "levels": [ 16340, 14450, 15600 ] }, // based on CarVac's testing
{ "iso": [ 400, 500 ], "levels": 16330 }, // stdev 2.95
{ "iso": 320, "levels": [ 16330, 16000, 16330 ] }, // based on CarVac's testing
{ "iso": [ 800, 1000 ], "levels": 16320 }, // stdev x, 4.0 , x
{ "iso": 640, "levels": [ 16320, 15800, 16320 ] }, // based on CarVac's testing
{ "iso": [ 1600, 2000 ], "levels": 16300 }, // stdev x, 6.0 , x
{ "iso": 1250, "levels": [ 16300, 16050, 16300 ] }, // based on CarVac's testing
{ "iso": [ 2500, 3200, 4000 ], "levels": 16250 }, // STDEV x, 9.8 , x
{ "iso": [ 5000, 6400, 8000 ], "levels": 16150 }, // stdev x, 17, x
{ "iso": [ 10000, 12800, 16000 ], "levels": 16100 }, // stdev x, 34 , x
@ -1053,6 +1058,11 @@ Camera constants:
}
},
{ // Quality C
"make_model": [ "Canon EOS Rebel SL3", "Canon EOS 250D", "Canon EOS Kiss X10" ],
"dcraw_matrix": [ 9079, -1923, -1236, -4677, 12454, 2492, -922, 2319, 5565 ]
},
// Canon low-range DSLRs
// Canon EOS 1200D/Rebel T5/Kiss X70" is upper at the same item as 600D/T3i/X5
@ -1217,7 +1227,8 @@ Camera constants:
{ // Quality C, only raw crop
"make_model": [ "Canon EOS M6 Mark II", "Canon EOS 90D" ],
"raw_crop": [ 144, 72, 6984, 4660 ]
"raw_crop": [ 144, 72, 6984, 4660 ],
"masked_areas": [ 76, 40, 4580, 140 ]
},
{ // Quality C, only masked area. Raw crop from metadata ok.
@ -1363,7 +1374,7 @@ Camera constants:
},
{ // Quality B,
"make_model": [ "Canon PowerShot G5 X", "Canon PowerShot G7 X Mark II" ],
"make_model": [ "Canon PowerShot G5 X", "Canon PowerShot G9 X", "Canon PowerShot G7 X Mark II" ],
"dcraw_matrix": [ 9602,-3823,-937,-2984,11495,1675,-407,1414,5049 ], // DNG v13.2
//"raw_crop": [ 116, 24, 5504, 3680 ], // Sensor size 5632x3710. Largest useful frame 120-5616X28-3702 = 5504x3682, 4pix RTborders, Left Border 120-4, Top border 28-4
"raw_crop": [ 128, 36, 5480, 3656 ], // Default official 3/2 frame 5472X3648, 4pix borders, Left Border 132-4, Top border 40-4
@ -1585,7 +1596,10 @@ Camera constants:
{ // Quality A, samples provided by Daniel Catalina (#5839) and pi99y (#5860)
"make_model": [ "FUJIFILM X-T3", "FUJIFILM X-PRO3" ],
"dcraw_matrix": [ 13426,-6334,-1177,-4244,12136,2371,-580,1303,5980 ], // DNG_v11, standard_v2 d65
"raw_crop": [ 0, 5, 6252, 4176],
"raw_crop" : [
{ "frame" : [6384, 4182], "crop": [ 0, 5, 6252, 4176] },
{ "frame" : [6384, 3348], "crop": [624, 0, 5004, 3348] }
],
"white": [ 16170, 16275, 16170 ] // typical safe-margins with LENR
// negligible aperture scaling effect
},
@ -1630,8 +1644,9 @@ Camera constants:
{ // Quality B
"make_model" : "LEICA D-LUX 7",
"dcraw_matrix" : [11577, -4230, -1106, -3967, 12211, 1957, -758, 1762, 5610] // DNG
"dcraw_matrix" : [11577, -4230, -1106, -3967, 12211, 1957, -758, 1762, 5610], // DNG
// "dcraw_matrix" : [8585, -3127, -833, -4005, 12250, 1953, -650, 1494, 4862] // DNG alternate
"ranges" : { "black" : 15 }
},
{ // Quality B, Matrix from Adobe's dcp D65 instead of the internal in Leica's DNG
@ -2256,11 +2271,22 @@ Camera constants:
{ // Quality C
"make_model": [ "Panasonic DC-G100", "Panasonic DC-G110" ],
"dcraw_matrix": [ 8370, -2869, -710, -3389, 11372, 2298, -640, 1598, 4887 ] // DNG
"dcraw_matrix": [ 8370, -2869, -710, -3389, 11372, 2298, -640, 1598, 4887 ], // DNG
"ranges": {
"white": [ // Measured with DC-G100 (#6913). Levels affected by LENR for ISOs 1600-4000.
{ "iso": [ 200, 400, 800, 1250 ], "levels": 4095 },
{ "iso": 1600, "levels": 4050 },
{ "iso": 2000, "levels": 4040 },
{ "iso": 2500, "levels": 4025 },
{ "iso": 3200, "levels": 4010 },
{ "iso": 4000, "levels": 4000 },
{ "iso": [ 5000, 6400, 12800, 25600 ], "levels": 4095 }
]
}
},
{ // Quality C, only color matrix
"make_model" : "Panasonic DC-GF10",
"make_model" : [ "Panasonic DC-GF10", "PANASONIC DC-GX880" ],
"dcraw_matrix": [ 7610, -2781, -576, -4614, 12195, 2733, -1375, 2393, 6490 ], // DNG v13.2
"raw_crop": [ 0, 0, 4600, 0 ], // SensorWidth=4816 SensorHeight=3464. Width=4600 to match DNG.
"ranges": { "black": 15 }
@ -3071,7 +3097,17 @@ Camera constants:
{ // Quality C,
"make_model": "Sony ILCE-7RM4",
"dcraw_matrix": [ 7662, -2686, -660, -5240, 12965, 2530, -796, 1508, 6167 ],
"raw_crop": [ 0, 0, -32, 0 ] // full raw frame 9600x6376 - 32 rightmost columns are garbage. Using -32 instead of 9568 to support also 16-shot pixelshift files
"raw_crop": [ 0, 0, -32, 0 ], // full raw frame 9600x6376 - 32 rightmost columns are garbage. Using -32 instead of 9568 to support also 16-shot pixelshift files
"pdaf_pattern": [ 0,12,18,36,42,60,66,72,78,96,108,120,126,138,156,168,180,186,192,198,210,222,228,240,246,252,270,276,282,288,306,312,318,330,336,348,360,366,372,378,390,396,408,420 ], // Assume the pattern is the same as the ILCE-7CR.
"pdaf_offset": 1
},
{ // Quality B
"make_model": [ "Sony ILCE-7CR", "Sony ILCE-7RM5" ], // 7RM5 is assumed to have the same sensor as the 7CR.
"dcraw_matrix": [ 8200, -2976, -719, -4296, 12053, 2532, -429, 1282, 5774 ], // DNG v15.2 for ILCE-7CR and ILCE-7RM5.
"raw_crop": [ 0, 0, -32, 0 ], // A few repeated pixels on the right edge.
"pdaf_pattern": [ 0,12,18,36,42,60,66,72,78,96,108,120,126,138,156,168,180,186,192,198,210,222,228,240,246,252,270,276,282,288,306,312,318,330,336,348,360,366,372,378,390,396,408,420 ], // From issue #6938. Slightly different every repetition, maybe the real pattern is 3 or more multiples of 420 pixels. This is a composite.
"pdaf_offset": 1
},
{ // Quality B, assumed correct for 9M2 as well

View File

@ -5775,6 +5775,8 @@ nf: order = 0x4949;
cam_mul[0] = get2() / 256.0;
if (tag == 0x1018 || tag == 0x20400100)
cam_mul[2] = get2() / 256.0;
if (tag == 0x104D)
read_crop.crop_mode = (CropMode)get2();
if (tag == 0x2011 && len == 2) {
get2_256:
order = 0x4d4d;
@ -7652,15 +7654,27 @@ void CLASS parse_fuji (int offset)
tag = get2();
len = get2();
save = ftell(ifp);
// tag 0x100 = 256 RawImageFullSize RT
if (tag == 0x100) {
raw_height = get2();
raw_width = get2();
// RawImageCroppedSize 0x111 = 273 (including borders) RT
} else if (tag == 0x111) { // RT
read_crop.height = get2(); // RT
read_crop.width = get2(); // RT
// RawImageTopLeft 0x110 = 272 (top margin first, then left margin) RT
} else if (tag == 0x110){ // RT
read_crop.top_margin = get2(); // RT
read_crop.left_margin = get2(); // RT
// 0x115 = 277 RawImageAspectRatio RT
} else if (tag == 0x121) {
height = get2();
if ((width = get2()) == 4284) width += 3;
// tag 0x130 = 304 FujiLayout RT
} else if (tag == 0x130) {
fuji_layout = fgetc(ifp) >> 7;
fuji_width = !(fgetc(ifp) & 8);
// tag 0x131 = 305 XTransLayout RT
} else if (tag == 0x131) {
filters = 9;
FORC(36) xtrans_abs[0][35-c] = fgetc(ifp) & 3;
@ -7674,8 +7688,18 @@ void CLASS parse_fuji (int offset)
height = get4();
order = c;
}
// 0x9650 = 38480 RawExposureBias RT
fseek (ifp, save+len, SEEK_SET);
}
if (read_crop.crop_mode != CropMode::NA) { // RT
height = read_crop.height; // RT
width = read_crop.width; // RT
top_margin = read_crop.top_margin; // RT
left_margin = read_crop.left_margin; // RT
} // RT
height <<= fuji_layout;
width >>= fuji_layout;
}
@ -10133,8 +10157,12 @@ canon_a5:
width = raw_width = 6016;
height = raw_height = 4014;
} else if (!strcmp(model, "X-Pro3") || !strcmp(model, "X-T3") || !strcmp(model, "X-T30") || !strcmp(model, "X-T4") || !strcmp(model, "X100V") || !strcmp(model, "X-S10")) {
width = raw_width = 6384;
height = raw_height = 4182;
raw_width = 6384; // RT
raw_height = 4182; // RT
if (read_crop.crop_mode == CropMode::NA) { // RT
width = raw_width; // RT
height = raw_height; // RT
} // RT
} else if (!strcmp(model, "DBP for GX680")) { // Special case for #4204
width = raw_width = 5504;
height = raw_height = 3856;

View File

@ -76,6 +76,20 @@ public:
}
protected:
enum class CropMode : std::uint_fast16_t { // RT
NA = 0, // RT
FullFrameOnGfx = 1, // RT
SportsFinderMode = 2, // RT
ElectronicShutter1_25xCrop = 4 // RT
}; // RT
// stores the cropdata read from the file RT
struct CropData { // RT
std::uint_fast16_t width, // RT
height, // RT
top_margin, // RT
left_margin; // RT
CropMode crop_mode = CropMode::NA; // RT
} read_crop; // RT
int exif_base, ciff_base, ciff_len;
rtengine::IMFILE *ifp;
FILE *ofp;

View File

@ -781,7 +781,7 @@ void Crop::update(int todo)
if (need_fattal) {
parent->ipf.dehaze(f, params.dehaze);
parent->ipf.ToneMapFattal02(f, params.fattal, 3, 0, nullptr, 0, 0, 0);
parent->ipf.ToneMapFattal02(f, params.fattal, 3, 0, nullptr, 0, 0, 0, false);
}
// crop back to the size expected by the rest of the pipeline

View File

@ -317,7 +317,6 @@ private:
typedef std::map<std::string, std::vector<badPix> > bpList_t;
dfList_t dfList;
bpList_t bpList;
bool initialized;
Glib::ustring currentPath;
dfInfo* addFileInfo(const Glib::ustring &filename, bool pool = true);
dfInfo* find(const std::string &mak, const std::string &mod, int isospeed, double shut, time_t t);

View File

@ -18,6 +18,7 @@
*/
#include <cstring>
#include <map>
#include <string>
#include <glibmm/ustring.h>
#include <glibmm/fileutils.h>
@ -51,9 +52,9 @@ namespace
// Not recursive
void loadProfiles(
const Glib::ustring& dirName,
std::map<Glib::ustring, cmsHPROFILE>* profiles,
std::map<Glib::ustring, rtengine::ProfileContent>* profileContents,
std::map<Glib::ustring, Glib::ustring>* profileNames,
std::map<std::string, cmsHPROFILE>* profiles,
std::map<std::string, rtengine::ProfileContent>* profileContents,
std::map<std::string, Glib::ustring>* profileNames,
bool nameUpper
)
{
@ -114,8 +115,8 @@ void loadProfiles(
bool loadProfile(
const Glib::ustring& profile,
const Glib::ustring& dirName,
std::map<Glib::ustring, cmsHPROFILE>* profiles,
std::map<Glib::ustring, rtengine::ProfileContent>* profileContents
std::map<std::string, cmsHPROFILE>* profiles,
std::map<std::string, rtengine::ProfileContent>* profileContents
)
{
if (dirName.empty() || profiles == nullptr) {
@ -996,10 +997,10 @@ parse_error:
return false;
}
using ProfileMap = std::map<Glib::ustring, cmsHPROFILE>;
using MatrixMap = std::map<Glib::ustring, TMatrix>;
using ContentMap = std::map<Glib::ustring, ProfileContent>;
using NameMap = std::map<Glib::ustring, Glib::ustring>;
using ProfileMap = std::map<std::string, cmsHPROFILE>;
using MatrixMap = std::map<std::string, TMatrix>;
using ContentMap = std::map<std::string, ProfileContent>;
using NameMap = std::map<std::string, Glib::ustring>;
ProfileMap wProfiles;
// ProfileMap wProfilesGamma;

View File

@ -18,6 +18,7 @@
*/
#pragma once
#include <utility>
#include <vector>
#include <lcms2.h>
@ -396,7 +397,7 @@ public:
swap(rotatedImg);
} else if (deg == 180) {
int height2 = height / 2 + (height & 1);
int height2 = height / 2;
#ifdef _OPENMP
// difficult to find a cutoff value where parallelization is counter productive because of processor's data cache collision...
@ -406,13 +407,22 @@ public:
for (int i = 0; i < height2; i++) {
for (int j = 0; j < width; j++) {
T tmp;
int x = width - 1 - j;
int y = height - 1 - i;
tmp = v(i, j);
v(i, j) = v(y, x);
v(y, x) = tmp;
std::swap(v(i, j), v(y, x));
}
}
// Middle row of odd-height images: only go half way otherwise the
// pixels will be swapped twice.
if (height & 1) {
int i = height / 2;
int width2 = width / 2;
for (int j = 0; j < width2; j++) {
int x = width - 1 - j;
std::swap(v(i, j), v(i, x));
}
}
#ifdef _OPENMP
@ -828,7 +838,7 @@ public:
swap(rotatedImg);
} else if (deg == 180) {
int height2 = height / 2 + (height & 1);
int height2 = height / 2;
#ifdef _OPENMP
// difficult to find a cutoff value where parallelization is counter productive because of processor's data cache collision...
@ -838,21 +848,26 @@ public:
for (int i = 0; i < height2; i++) {
for (int j = 0; j < width; j++) {
T tmp;
int x = width - 1 - j;
int y = height - 1 - i;
tmp = r(i, j);
r(i, j) = r(y, x);
r(y, x) = tmp;
std::swap(r(i, j), r(y, x));
std::swap(g(i, j), g(y, x));
std::swap(b(i, j), b(y, x));
}
}
tmp = g(i, j);
g(i, j) = g(y, x);
g(y, x) = tmp;
// Middle row of odd-height images: only go half way otherwise the
// pixels will be swapped twice.
if (height & 1) {
int i = height / 2;
int width2 = width / 2;
for (int j = 0; j < width2; j++) {
int x = width - 1 - j;
tmp = b(i, j);
b(i, j) = b(y, x);
b(y, x) = tmp;
std::swap(r(i, j), r(i, x));
std::swap(g(i, j), g(i, x));
std::swap(b(i, j), b(i, x));
}
}
#ifdef _OPENMP
@ -1481,26 +1496,31 @@ public:
swap(rotatedImg);
} else if (deg == 180) {
int height2 = height / 2 + (height & 1);
int height2 = height / 2;
// Maybe not sufficiently optimized, but will do what it has to do
for (int i = 0; i < height2; i++) {
for (int j = 0; j < width; j++) {
T tmp;
int x = width - 1 - j;
int y = height - 1 - i;
tmp = r(i, j);
r(i, j) = r(y, x);
r(y, x) = tmp;
std::swap(r(i, j), r(y, x));
std::swap(g(i, j), g(y, x));
std::swap(b(i, j), b(y, x));
}
}
tmp = g(i, j);
g(i, j) = g(y, x);
g(y, x) = tmp;
// Middle row of odd-height images: only go half way otherwise the
// pixels will be swapped twice.
if (height & 1) {
int i = height / 2;
int width2 = width / 2;
for (int j = 0; j < width2; j++) {
int x = width - 1 - j;
tmp = b(i, j);
b(i, j) = b(y, x);
b(y, x) = tmp;
std::swap(r(i, j), r(i, x));
std::swap(g(i, j), g(i, x));
std::swap(b(i, j), b(i, x));
}
}
}

View File

@ -309,8 +309,93 @@ FramesData::FramesData(const Glib::ustring &fname, time_t ts) :
focal_len35mm = pos->toFloat();
}
if (find_tag(Exiv2::subjectDistance)) {
focus_dist = (0.01 * std::pow(10, pos->toFloat() / 40));
// if (find_tag(Exiv2::subjectDistance)) {
// focus_dist = pos->toFloat();
// }
/*
* Get the focus distance in meters.
*/
if (Exiv2::testVersion(0, 27, 4) && find_exif_tag("Exif.NikonLd4.LensID") && to_long(pos) != 0) {
// Z lens, need to specifically look for the second instance of
// Exif.NikonLd4.FocusDistance unless using Exiv2 0.28.x and later
// (also expanded to 2 bytes of precision since 0.28.1).
#if EXIV2_TEST_VERSION(0, 28, 0)
if (find_exif_tag("Exif.NikonLd4.FocusDistance2")) {
float value = pos->toFloat();
if (Exiv2::testVersion(0, 28, 1)) {
value /= 256.f;
}
#else
pos = exif.end();
for (auto it = exif.begin(); it != exif.end(); it++) {
if (it->key() == "Exif.NikonLd4.FocusDistance") {
pos = it;
}
}
if (pos != exif.end() && pos->size()) {
float value = pos->toFloat();
#endif
focus_dist = 0.01 * std::pow(10, value / 40);
}
} else if (find_exif_tag("Exif.NikonLd2.FocusDistance")
|| find_exif_tag("Exif.NikonLd3.FocusDistance")
|| (Exiv2::testVersion(0, 27, 4)
&& find_exif_tag("Exif.NikonLd4.FocusDistance"))) {
float value = pos->toFloat();
focus_dist = (0.01 * std::pow(10, value / 40));
} else if (find_exif_tag("Exif.OlympusFi.FocusDistance")) {
/* the distance is stored as a rational (fraction). according to
* http://www.dpreview.com/forums/thread/1173960?page=4
* some Olympus cameras have a wrong denominator of 10 in there
* while the nominator is always in mm. thus we ignore the
* denominator and divide with 1000.
* "I've checked a number of E-1 and E-300 images, and I agree
* that the FocusDistance looks like it is in mm for the
* E-1. However, it looks more like cm for the E-300.
* For both cameras, this value is stored as a rational. With
* the E-1, the denominator is always 1, while for the E-300 it
* is 10.
* Therefore, it looks like the numerator in both cases is in mm
* (which makes a bit of sense, in an odd sort of way). So I
* think what I will do in ExifTool is to take the numerator and
* divide by 1000 to display the focus distance in meters." --
* Boardhead, dpreview forums in 2005
*/
int nominator = pos->toRational(0).first;
focus_dist = std::max(0.0, (0.001 * nominator));
} else if (find_exif_tag("Exif.CanonFi.FocusDistanceUpper")) {
const float FocusDistanceUpper = pos->toFloat();
if (FocusDistanceUpper <= 0.0f
|| (int)FocusDistanceUpper >= 0xffff) {
focus_dist = 0.0f;
} else {
focus_dist = FocusDistanceUpper / 100.0;
if (find_exif_tag("Exif.CanonFi.FocusDistanceLower")) {
const float FocusDistanceLower = pos->toFloat();
if (FocusDistanceLower > 0.0f && (int)FocusDistanceLower < 0xffff) {
focus_dist += FocusDistanceLower / 100.0;
focus_dist /= 2.0;
}
}
}
} else if (find_exif_tag("Exif.CanonSi.SubjectDistance")) {
focus_dist = pos->toFloat() / 100.0;
} else if (find_tag(Exiv2::subjectDistance)) {
focus_dist = pos->toFloat();
} else if (Exiv2::testVersion(0,27,2) && find_exif_tag("Exif.Sony2Fp.FocusPosition2")) {
const float focus_position = pos->toFloat();
if (focus_position && find_exif_tag("Exif.Photo.FocalLengthIn35mmFilm")) {
const float focal_length_35mm = pos->toFloat();
/* http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,3688.msg29653.html#msg29653 */
focus_dist =
(std::pow(2, focus_position / 16 - 5) + 1) * focal_length_35mm / 1000;
}
}
if (find_tag(Exiv2::orientation)) {

View File

@ -791,7 +791,7 @@ int ImageIO::loadTIFF (const Glib::ustring &fname)
if (samplesperpixel > 3) {
for (int i = 0; i < width; i++) {
memcpy(linebuffer.get() + i * 3 * bitspersample / 8, linebuffer.get() + i * samplesperpixel * bitspersample / 8, 3 * bitspersample / 8);
memmove(linebuffer.get() + i * 3 * bitspersample / 8, linebuffer.get() + i * samplesperpixel * bitspersample / 8, 3 * bitspersample / 8);
}
}
else if (samplesperpixel == 1) {

275
rtengine/imagesource.cc Normal file
View File

@ -0,0 +1,275 @@
/*
* This file is part of RawTherapee.
*
* Copyright (c) 2024 RawTherapee team
*
* RawTherapee is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
*/
#include "imagesource.h"
#include "procparams.h"
namespace rtengine
{
void ImageSource::getAutoWBMultipliersItcGreen(
procparams::ProcParams &params,
bool forcewbgrey,
int kcam,
double greenitc,
bool extra,
float &temp0,
float &delta,
int &bia,
int &dread,
int nocam,
float &studgood,
float &minchrom,
int &kmin,
float &minhist,
float &maxhist,
int fh,
int fw,
ColorTemp &currWB,
int tempnotisraw,
double greennotisraw,
bool skipRecalculate,
ColorTemp &autoWB,
double &rm,
double &gm,
double &bm
)
{
float tem = 5000.f;
float gre = 1.f;
double tempref0bias = 5000.;
double tempitc = 5000.f;
bool autowb1 = true;
double green_thres = 0.8;
if (isRAW()) {// only with Raw files
auto currWBitc = getWB();
double greenref = currWBitc.getGreen();
double tempref0bias0 = currWBitc.getTemp();
if (greenref > green_thres && params.wb.itcwb_prim == "srgb") {
forcewbgrey = true;
}
if (!forcewbgrey && (tempref0bias0 < 3300.f) && (greenref < 1.13f && greenref > 0.88f)) { //seems good with temp and green...To fixe...limits 1.13 and 0.88
if (settings->verbose) {
printf("Keep camera settings temp=%f green=%f\n", tempref0bias0, greenref);
}
autowb1 = true;
kcam = 1;
}
if (autowb1) {
//alternative to camera if camera settings out, using autowb grey to find new ref, then mixed with camera
// kcam = 0;
params.wb.method = "autold";
tempitc = 5000.f;
greenitc = 1.;
currWBitc = getWB();
tempref0bias = currWBitc.getTemp();
double greenref = currWBitc.getGreen();
bool pargref = true;
bool pargre = true;
if ((greenref > 1.5f || tempref0bias < 3300.f || tempref0bias > 7700.f || forcewbgrey) && kcam != 1 && !params.wb.itcwb_sampling) { //probably camera out to adjust...
getAutoWBMultipliersitc(extra, tempref0bias, greenref, tempitc, greenitc, temp0, delta, bia, dread, kcam, nocam, studgood, minchrom, kmin, minhist, maxhist, 0, 0, fh, fw, 0, 0, fh, fw, rm, gm, bm, params.wb, params.icm, params.raw, params.toneCurve);
wbMul2Camera(rm, gm, bm);
wbCamera2Mul(rm, gm, bm);
ColorTemp ct(rm, gm, bm, 1.0, currWB.getObserver());
tem = ct.getTemp();
gre = ct.getGreen();
if (gre > 1.3f) {
pargre = false;
}
if (greenref > 1.3f) {
pargref = false;
}
double deltemp = tem - tempref0bias;
if (gre > 1.5f && !forcewbgrey) { //probable wrong value
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value
gre = 0.5f + 0.5f * LIM(gre, 0.9f, 1.1f);//empirical formula in case system out
} else {
if (!forcewbgrey) {
gre = 0.2f + 0.8f * LIM(gre, 0.85f, 1.15f);
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value
nocam = 0;
} else {//set temp and green to init itcwb algorithm
double grepro = LIM(greenref, green_thres, 1.15);
gre = 0.5f * grepro + 0.5f * LIM(gre, 0.9f, 1.1f);//empirical green between green camera and autowb grey
if (abs(deltemp) < 400.) { //arbitraries thresholds to refine
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
if (deltemp > 0.) {
nocam = 1;
} else {
nocam = 2;
}
} else if (abs(deltemp) < 900.) { //other arbitrary threshold
tem = 0.4 * tem + 0.6 * tempref0bias;//find a mixed value between camera and auto grey
if (deltemp > 0.) {
nocam = 3;
} else {
nocam = 4;
}
} else if (abs(deltemp) < 1500. && tempref0bias < 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 5;
} else if (abs(deltemp) < 1500. && tempref0bias >= 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 6;
} else if (abs(deltemp) >= 1500. && tempref0bias < 5500.f) {
if (tem >= 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.8 * tem + 0.2 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 7;
} else {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
nocam = 8;
}
} else if (abs(deltemp) >= 1500. && tempref0bias >= 5500.f) {
if (tem >= 10000.f) {
tem = 0.99 * tem + 0.01 * tempref0bias;//find a mixed value between camera and auto grey
nocam = 9;
} else {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 10;
}
} else {
tem = 0.4 * tem + 0.6 * tempref0bias;
nocam = 11;
}
}
}
tempitc = tem ;
extra = true;
if (settings->verbose) {
printf("Using new references AWB grey or mixed Enable Extra - temgrey=%f gregrey=%f tempitc=%f nocam=%i\n", (double) tem, (double) gre, (double) tempitc, nocam);
}
}
}
params.wb.method = "autitcgreen";
} else if (!isRAW()) { // Itcwb and no raw
params.wb.temperature = tempnotisraw;
params.wb.green = greennotisraw;
params.wb.equal = 1.;
}
float greenitc_low = 1.f;
float tempitc_low = 5000.f;
//raw files and autitcgreen
if (isRAW() || !skipRecalculate) {
greenitc = 1.;
auto currWBitc = getWB();
currWBitc = currWBitc.convertObserver(params.wb.observer);//change the temp/green couple with the same multipliers
double tempref = currWBitc.getTemp() * (1. + params.wb.tempBias);
double greenref = currWBitc.getGreen();
greenitc = greenref;
if ((greenref > 1.5f || tempref0bias < 3300.f || tempref0bias > 7700.f || forcewbgrey) && autowb1 && kcam != 1 && !params.wb.itcwb_sampling) { //probably camera out to adjust = greenref ? tempref0bias ?
tempref = tem * (1. + params.wb.tempBias);
greenref = gre;
} else {
}
if(params.wb.itcwb_sampling) {
greenitc_low = greenref;
tempitc_low = tempref;
}
if (settings->verbose) {
printf("tempref=%f greref=%f tempitc=%f greenitc=%f\n", tempref, greenref, tempitc, greenitc);
}
getAutoWBMultipliersitc(extra, tempref, greenref, tempitc, greenitc, temp0, delta, bia, dread, kcam, nocam, studgood, minchrom, kmin, minhist, maxhist, 0, 0, fh, fw, 0, 0, fh, fw, rm, gm, bm, params.wb, params.icm, params.raw, params.toneCurve);
params.wb.temperature = tempitc;
params.wb.green = greenitc;
if(params.wb.itcwb_sampling) {
params.wb.temperature = tempitc_low;
params.wb.green = greenitc_low;
}
currWB = ColorTemp(params.wb.temperature, params.wb.green, 1., params.wb.method, params.wb.observer);
currWB.getMultipliers(rm, gm, bm);
autoWB.update(rm, gm, bm, params.wb.equal, params.wb.observer, 0.); //params.wb.tempBias already used before
}
}
} // namespace rtengine

View File

@ -118,6 +118,33 @@ public:
virtual void convertColorSpace (Imagefloat* image, const procparams::ColorManagementParams &cmp, const ColorTemp &wb) = 0; // DIRTY HACK: this method is derived in rawimagesource and strimagesource, but (...,RAWParams raw) will be used ONLY for raw images
virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) = 0;
virtual void getAutoWBMultipliersitc(bool extra, double &tempref, double &greenref, double &tempitc, double & greenitc, float &temp0, float &delta, int &bia, int &dread, int &kcam, int &nocam, float &studgood, float &minchrom, int &kmin, float &minhist, float &maxhist, int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, double &rm, double &gm, double &bm, const procparams::WBParams & wbpar, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw, const procparams::ToneCurveParams &hrp) = 0;
virtual void getAutoWBMultipliersItcGreen(
procparams::ProcParams &params,
bool forcewbgrey,
int kcam,
double greenitc,
bool extra,
float &temp0,
float &delta,
int &bia,
int &dread,
int nocam,
float &studgood,
float &minchrom,
int &kmin,
float &minhist,
float &maxhist,
int fh,
int fw,
ColorTemp &currWB,
int tempnotisraw,
double greennotisraw,
bool skipRecalculate,
ColorTemp &autoWB,
double &rm,
double &gm,
double &bm
);
virtual ColorTemp getWB () const = 0;
virtual ColorTemp getSpotWB (std::vector<Coord2D> &red, std::vector<Coord2D> &green, std::vector<Coord2D> &blue, int tran, double equal, StandardObserver observer) = 0;
virtual void WBauto(bool extra, double &tempref, double &greenref, array2D<float> &redloc, array2D<float> &greenloc, array2D<float> &blueloc, int bfw, int bfh, double &avg_rm, double &avg_gm, double &avg_bm, double &tempitc, double &greenitc, float &temp0, float &delta, int &bia, int &dread, int &kcam, int &nocam, float &studgood, float &minchrom, int &kmin, float &minhist, float &maxhist, bool &twotimes, const procparams::WBParams & wbpar, int begx, int begy, int yEn, int xEn, int cx, int cy, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw, const procparams::ToneCurveParams &hrp) = 0;

View File

@ -518,7 +518,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
}
}
const bool autowb = (params->wb.method == "autold" || params->wb.method == "autitcgreen");
// const bool autowb = (params->wb.method == "autold" || params->wb.method == "autitcgreen");
if (settings->verbose) {
printf("automethod=%s \n", params->wb.method.c_str());
@ -534,6 +534,24 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
}
currWB = ColorTemp(params->wb.temperature, params->wb.green, params->wb.equal, params->wb.method, params->wb.observer);
int tempnotisraw = 6501;//D65 with Observer 2° - 6473 with Observer 10°
double greennotisraw = 1.;//D65 with Observer 2° - 0.967 with Observer 10°
if (!imgsrc->isRAW() && params->wb.method == "autitcgreen") {
if (params->wb.compat_version == 1) {
// ITCWB compatibility version 1 used 5000 K and observer 10
// degrees for non-raw files.
auto currWBitc = ColorTemp(5000., 1., 1., params->wb.method, StandardObserver::TEN_DEGREES);
currWBitc = currWBitc.convertObserver(params->wb.observer);
tempnotisraw = currWBitc.getTemp();
greennotisraw = currWBitc.getGreen();
} else {
auto currWBitc = imgsrc->getWB();//if jpg TIF with another illuminant
currWBitc = currWBitc.convertObserver(params->wb.observer);
tempnotisraw = currWBitc.getTemp();
greennotisraw = currWBitc.getGreen();
}
}
int dread = 0;
int bia = 1;
@ -545,7 +563,6 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
int kmin = 20;
float minhist = 1000000000.f;
float maxhist = -1000.f;
double tempitc = 5000.f;
double greenitc = 1.;
float temp0 = 5000.f;
bool extra = false;
@ -556,230 +573,21 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
} else if (params->wb.method == "Camera") {
currWB = imgsrc->getWB();
lastAwbauto = ""; //reinitialize auto
} else if (autowb) {
float tem = 5000.f;
float gre = 1.f;
double tempref0bias = 5000.;
tempitc = 5000.f;
bool autowb1 = true;
double green_thres = 0.8;
if (params->wb.method == "autitcgreen") {
currWBitc = imgsrc->getWB();
double greenref = currWBitc.getGreen();
double tempref0bias0 = currWBitc.getTemp();
if (greenref > green_thres && params->wb.itcwb_prim == "srgb") {
forcewbgrey = true;
}
if (!forcewbgrey && (tempref0bias0 < 3300.f) && (greenref < 1.13f && greenref > 0.88f)) { //seems good with temp and green...To fixe...limits 1.13 and 0.88
if (settings->verbose) {
printf("Keep camera settings temp=%f green=%f\n", tempref0bias0, greenref);
}
autowb1 = true;
kcam = 1;
}
if (autowb1) {
//alternative to camera if camera settings out, using autowb grey to find new ref, then mixed with camera
// kcam = 0;
params->wb.method = "autold";
double rm, gm, bm;
tempitc = 5000.f;
greenitc = 1.;
currWBitc = imgsrc->getWB();
tempref0bias = currWBitc.getTemp();
double greenref = currWBitc.getGreen();
bool pargref = true;
bool pargre = true;
if ((greenref > 1.5f || tempref0bias < 3300.f || tempref0bias > 7700.f || forcewbgrey) && kcam != 1 && !params->wb.itcwb_sampling) { //probably camera out to adjust...
imgsrc->getAutoWBMultipliersitc(extra, tempref0bias, greenref, tempitc, greenitc, temp0, delta, bia, dread, kcam, nocam, studgood, minchrom, kmin, minhist, maxhist, 0, 0, fh, fw, 0, 0, fh, fw, rm, gm, bm, params->wb, params->icm, params->raw, params->toneCurve);
imgsrc->wbMul2Camera(rm, gm, bm);
imgsrc->wbCamera2Mul(rm, gm, bm);
ColorTemp ct(rm, gm, bm, 1.0, currWB.getObserver());
tem = ct.getTemp();
gre = ct.getGreen();
if (gre > 1.3f) {
pargre = false;
}
if (greenref > 1.3f) {
pargref = false;
}
double deltemp = tem - tempref0bias;
if (gre > 1.5f && !forcewbgrey) { //probable wrong value
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value
gre = 0.5f + 0.5f * LIM(gre, 0.9f, 1.1f);//empirical formula in case system out
} else {
if (!forcewbgrey) {
gre = 0.2f + 0.8f * LIM(gre, 0.85f, 1.15f);
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value
nocam = 0;
} else {//set temp and green to init itcwb algorithm
double grepro = LIM(greenref, green_thres, 1.15);
gre = 0.5f * grepro + 0.5f * LIM(gre, 0.9f, 1.1f);//empirical green between green camera and autowb grey
if (abs(deltemp) < 400.) { //arbitraries thresholds to refine
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
if (deltemp > 0.) {
nocam = 1;
} else {
nocam = 2;
}
} else if (abs(deltemp) < 900.) { //other arbitrary threshold
tem = 0.4 * tem + 0.6 * tempref0bias;//find a mixed value between camera and auto grey
if (deltemp > 0.) {
nocam = 3;
} else {
nocam = 4;
}
} else if (abs(deltemp) < 1500. && tempref0bias < 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 5;
} else if (abs(deltemp) < 1500. && tempref0bias >= 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 6;
} else if (abs(deltemp) >= 1500. && tempref0bias < 5500.f) {
if (tem >= 4500.f) {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.8 * tem + 0.2 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 7;
} else {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
nocam = 8;
}
} else if (abs(deltemp) >= 1500. && tempref0bias >= 5500.f) {
if (tem >= 10000.f) {
tem = 0.99 * tem + 0.01 * tempref0bias;//find a mixed value between camera and auto grey
nocam = 9;
} else {
if ((pargre && pargref) || (!pargre && !pargref)) {
tem = 0.45 * tem + 0.55 * tempref0bias;//find a mixed value between camera and auto grey
}
if (pargre && !pargref) {
tem = 0.7 * tem + 0.3 * tempref0bias;//find a mixed value between camera and auto grey
}
if (!pargre && pargref) {
tem = 0.3 * tem + 0.7 * tempref0bias;//find a mixed value between camera and auto grey
}
nocam = 10;
}
} else {
tem = 0.4 * tem + 0.6 * tempref0bias;
nocam = 11;
}
}
}
tempitc = tem ;
extra = true;
if (settings->verbose) {
printf("Using new references AWB grey or mixed Enable Extra - temgrey=%f gregrey=%f tempitc=%f nocam=%i\n", (double) tem, (double) gre, (double) tempitc, nocam);
}
}
}
params->wb.method = "autitcgreen";
}
float greenitc_low = 1.f;
float tempitc_low = 5000.f;
if (params->wb.method == "autitcgreen" || lastAwbEqual != params->wb.equal || lastAwbObserver != params->wb.observer || lastAwbTempBias != params->wb.tempBias || lastAwbauto != params->wb.method) {
} else if (params->wb.method == "autold") {
if (lastAwbEqual != params->wb.equal || lastAwbTempBias != params->wb.tempBias || lastAwbauto != params->wb.method) {
double rm, gm, bm;
greenitc = 1.;
currWBitc = imgsrc->getWB();
currWBitc = currWBitc.convertObserver(params->wb.observer);//change the temp/green couple with the same multipliers
double tempref = currWBitc.getTemp() * (1. + params->wb.tempBias);
double greenref = currWBitc.getGreen();
greenitc = greenref;
if ((greenref > 1.5f || tempref0bias < 3300.f || tempref0bias > 7700.f || forcewbgrey) && autowb1 && kcam != 1 && !params->wb.itcwb_sampling) { //probably camera out to adjust = greenref ? tempref0bias ?
tempref = tem * (1. + params->wb.tempBias);
greenref = gre;
if (params->wb.compat_version == 1 && !imgsrc->isRAW()) {
// RGB grey compatibility version 1 used the identity
// multipliers plus temperature bias for non-raw files.
rm = gm = bm = 1.;
} else {
}
if(params->wb.itcwb_sampling) {
greenitc_low = greenref;
tempitc_low = tempref;
}
if (settings->verbose && params->wb.method == "autitcgreen") {
printf("tempref=%f greref=%f tempitc=%f greenitc=%f\n", tempref, greenref, tempitc, greenitc);
}
imgsrc->getAutoWBMultipliersitc(extra, tempref, greenref, tempitc, greenitc, temp0, delta, bia, dread, kcam, nocam, studgood, minchrom, kmin, minhist, maxhist, 0, 0, fh, fw, 0, 0, fh, fw, rm, gm, bm, params->wb, params->icm, params->raw, params->toneCurve);
if (params->wb.method == "autitcgreen") {
params->wb.temperature = tempitc;
params->wb.green = greenitc;
if(params->wb.itcwb_sampling) {
params->wb.temperature = tempitc_low;
params->wb.green = greenitc_low;
}
currWB = ColorTemp(params->wb.temperature, params->wb.green, 1., params->wb.method, params->wb.observer);
currWB.getMultipliers(rm, gm, bm);
autoWB.update(rm, gm, bm, params->wb.equal, params->wb.observer, params->wb.tempBias);
imgsrc->getAutoWBMultipliers(rm, gm, bm);
}
if (rm != -1.) {
double bias = params->wb.tempBias;
if (params->wb.method == "autitcgreen") {
bias = 0.;
}
autoWB.update(rm, gm, bm, params->wb.equal, params->wb.observer, bias);
lastAwbEqual = params->wb.equal;
lastAwbObserver = params->wb.observer;
@ -791,6 +599,58 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
lastAwbTempBias = 0.0;
lastAwbauto = "";
autoWB.useDefaults(params->wb.equal, params->wb.observer);
}
//double rr,gg,bb;
//autoWB.getMultipliers(rr,gg,bb);
}
currWB = autoWB;
// lastAwbauto = ""; //reinitialize auto
} else if (params->wb.method == "autitcgreen") { //(// autowb) {
double rm;
double gm;
double bm;
imgsrc->getAutoWBMultipliersItcGreen(
*params,
forcewbgrey,
kcam,
greenitc,
extra,
temp0,
delta,
bia,
dread,
nocam,
studgood,
minchrom,
kmin,
minhist,
maxhist,
fh,
fw,
currWB,
tempnotisraw,
greennotisraw,
lastAwbEqual == params->wb.equal && lastAwbObserver == params->wb.observer && lastAwbTempBias == params->wb.tempBias && lastAwbauto == params->wb.method,
autoWB,
rm,
gm,
bm);
if (imgsrc->isRAW() || lastAwbEqual != params->wb.equal || lastAwbObserver != params->wb.observer || lastAwbTempBias != params->wb.tempBias || lastAwbauto != params->wb.method) {
if (rm != -1.) {
autoWB.update(rm, gm, bm, params->wb.equal, params->wb.observer);
lastAwbEqual = params->wb.equal;
lastAwbObserver = params->wb.observer;
lastAwbTempBias = params->wb.tempBias;
lastAwbauto = params->wb.method;
} else {
lastAwbEqual = -1.;
lastAwbObserver = ColorTemp::DEFAULT_OBSERVER;
lastAwbTempBias = 0.0;
lastAwbauto = "";
autoWB.useDefaults(params->wb.equal, params->wb.observer);
}
}
@ -822,12 +682,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
int met = 0;
if (awbListener) {
if (params->wb.method == "autitcgreen") {
if (awbListener && params->wb.enabled) {
if (params->wb.method == "autitcgreen" && imgsrc->isRAW()) {//Raw files
if (params->wb.itcwb_sampling) {
dread = 1;
studgood = 1.f;
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, 0, 1, 0, dread, studgood, 0, 0, 0, 0);
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, 0, 1, 0, dread, studgood, 0, 0, 0, 0, AutoWBListener::AWBMode::TEMP_CORRELATION_RAW);
} else {
minchrom = LIM(minchrom, 0.f, 0.9f);
@ -836,10 +696,19 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
maxhist = std::max(maxhist, 1000.f);
kmin = std::max(kmin, 18);
dread = LIM(dread, 10, 239);
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, temp0, delta, bia, dread, studgood, minchrom, kmin, minhist, maxhist);
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, temp0, delta, bia, dread, studgood, minchrom, kmin, minhist, maxhist, AutoWBListener::AWBMode::TEMP_CORRELATION_RAW);
}
} else if (params->wb.method == "autitcgreen" && !imgsrc->isRAW()) {//non raw files
params->wb.temperature = tempnotisraw;
params->wb.green = greennotisraw;
currWB = ColorTemp(params->wb.temperature, params->wb.green, params->wb.equal, params->wb.method, params->wb.observer);
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, -1.f, -1.f, 1, 1, -1.f, -1.f, 1, -1.f, -1.f, AutoWBListener::AWBMode::TEMP_CORRELATION_NON_RAW);//false => hide settings
} else if (params->wb.method == "autold"){
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, -1.f, -1.f, 1, 1, -1.f, -1.f, 1, -1.f, -1.f, AutoWBListener::AWBMode::RGB_GREY);
} else {
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, -1.f, -1.f, 1, 1, -1.f, -1.f, 1, -1.f, -1.f);
awbListener->WBChanged(met, params->wb.temperature, params->wb.green, rw, gw, bw, -1.f, -1.f, 1, 1, -1.f, -1.f, 1, -1.f, -1.f, AutoWBListener::AWBMode::NONE);
}
}
@ -980,7 +849,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
}
ipf.dehaze(orig_prev, params->dehaze);
ipf.ToneMapFattal02(orig_prev, params->fattal, 3, 0, nullptr, 0, 0, 0);
ipf.ToneMapFattal02(orig_prev, params->fattal, 3, 0, nullptr, 0, 0, 0, false);
if (oprevi != orig_prev) {
delete oprevi;

View File

@ -78,7 +78,6 @@ protected:
ColorTemp autoWB;
ColorTemp currWBloc;
ColorTemp autoWBloc;
ColorTemp currWBitc;
double lastAwbEqual;
StandardObserver lastAwbObserver{ColorTemp::DEFAULT_OBSERVER};

View File

@ -364,7 +364,7 @@ enum class BlurType {
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax,
float& meantm, float& stdtm, float& meanreti, float& stdreti, float &fab,
float &highresi, float &nresi, float &highresi46, float &nresi46, float &Lhighresi, float &Lnresi, float &Lhighresi46, float &Lnresi46);
void tone_eqdehaz(ImProcFunctions *ipf, Imagefloat *rgb, int whits, int blacks, const Glib::ustring &workingProfile, double scale, bool multithread);
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
@ -492,7 +492,7 @@ enum class BlurType {
void dehaze(Imagefloat *rgb, const procparams::DehazeParams &dehazeParams);
void dehazeloc(Imagefloat *rgb, const procparams::DehazeParams &dehazeParams, int sk, int sp);
void ToneMapFattal02(Imagefloat *rgb, const procparams::FattalToneMappingParams &fatParams, int detail_level, int Lalone, float **Lum, int WW, int HH, int algo);
void ToneMapFattal02(Imagefloat *rgb, const procparams::FattalToneMappingParams &fatParams, int detail_level, int Lalone, float **Lum, int WW, int HH, int algo, bool sat);
void localContrast(LabImage *lab, float **destination, const procparams::LocalContrastParams &localContrastParams, bool fftwlc, double scale);
void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread);
//void shadowsHighlights(LabImage *lab);

View File

@ -6590,7 +6590,7 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int
Imagefloat *tmpImagefat = nullptr;
tmpImagefat = new Imagefloat(bfw, bfh);
lab2rgb(*bufmaskblurcol, *tmpImagefat, params->icm.workingProfile);
ToneMapFattal02(tmpImagefat, fatParams, nlev, 0, nullptr, 0, 0, 0);
ToneMapFattal02(tmpImagefat, fatParams, nlev, 0, nullptr, 0, 0, 0, false);
rgb2lab(*tmpImagefat, *bufmaskblurcol, params->icm.workingProfile);
delete tmpImagefat;
}
@ -8699,8 +8699,10 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
const float dE = rsob + std::sqrt(kab * (kch * chrodelta2 + kH * huedelta2) + kL * SQR(refL - maskptr->L[y][x]));
//reduction action with deltaE
const float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens);
float reducdE = calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens);
if(varsens == 100.f) {
reducdE = 1.f;
}
float cli = (bufexpfin->L[y][x] - bufexporig->L[y][x]);
float cla = (bufexpfin->a[y][x] - bufexporig->a[y][x]);
float clb = (bufexpfin->b[y][x] - bufexporig->b[y][x]);
@ -17054,7 +17056,11 @@ void ImProcFunctions::Lab_Local(
if(fatParams.anchor == 50.f) {
alg = 1;
}
ToneMapFattal02(tmpImagefat.get(), fatParams, 3, 0, nullptr, 0, 0, alg);//last parameter = 1 ==>ART algorithm
bool satu = false;
if(params->locallab.spots.at(sp).fatsatur) {
satu = true;
}
ToneMapFattal02(tmpImagefat.get(), fatParams, 3, 0, nullptr, 0, 0, alg, satu);//last parameter alg = 1 ==>ART algorithm
rgb2lab(*tmpImagefat, *bufexpfin, params->icm.workingProfile);
if (params->locallab.spots.at(sp).expcie && params->locallab.spots.at(sp).modecie == "dr") {
bool HHcurvejz = false, CHcurvejz = false, LHcurvejz = false;
@ -17807,7 +17813,7 @@ void ImProcFunctions::Lab_Local(
}
if (locchCurve && CHcurve && lp.qualcurvemet != 0) {//C=f(H) curve
const float rhue = xatan2f(bufcolcalcb, bufcolcalca);
const float valparam = 2.f * locchCurve[500.f * static_cast<float>(Color::huelab_to_huehsv2(rhue))] - 0.5f; //get valp=f(H)
const float valparam = locchCurve[500.f * static_cast<float>(Color::huelab_to_huehsv2(rhue))] - 0.5f; //get valp=f(H)
float chromaChfactor = 1.0f + valparam;
bufcolcalca *= chromaChfactor;//apply C=f(H)
bufcolcalcb *= chromaChfactor;

View File

@ -1405,11 +1405,12 @@ WBParams::WBParams() :
tempBias(0.0),
observer(ColorTemp::DEFAULT_OBSERVER),
itcwb_green(0.),//slider
itcwb_rgreen(1),//keep for settings
itcwb_rgreen(1),//keep for settings
itcwb_nopurple(false),//keep for settings
itcwb_alg(false),//checkbox
itcwb_prim("beta"),//combobox
itcwb_sampling(false)//keep for 5.9 and for settings
itcwb_sampling(false),//keep for 5.9 and for settings
compat_version(WBParams::CURRENT_COMPAT_VERSION)
{
}
@ -1434,6 +1435,7 @@ bool WBParams::isPanningRelatedChange(const WBParams& other) const
&& itcwb_green == other.itcwb_green
&& itcwb_prim == other.itcwb_prim
&& itcwb_alg == other.itcwb_alg
&& compat_version == other.compat_version
)
)
@ -1455,7 +1457,8 @@ bool WBParams::operator ==(const WBParams& other) const
&& itcwb_nopurple == other.itcwb_nopurple
&& itcwb_alg == other.itcwb_alg
&& itcwb_prim == other.itcwb_prim
&& itcwb_sampling == other.itcwb_sampling;
&& itcwb_sampling == other.itcwb_sampling
&& compat_version == other.compat_version;
}
@ -1712,6 +1715,7 @@ DirPyrDenoiseParams::DirPyrDenoiseParams() :
chroma(15),
redchro(0),
bluechro(0),
autoGain(true),
gamma(1.7),
dmethod("Lab"),
Lmethod("SLI"),
@ -1739,6 +1743,7 @@ bool DirPyrDenoiseParams::operator ==(const DirPyrDenoiseParams& other) const
&& chroma == other.chroma
&& redchro == other.redchro
&& bluechro == other.bluechro
&& autoGain == other.autoGain
&& gamma == other.gamma
&& dmethod == other.dmethod
&& Lmethod == other.Lmethod
@ -2967,7 +2972,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
structexclu(0),
struc(4.0),
shapeMethod("IND"),
avoidgamutMethod("MUNS"),
avoidgamutMethod("XYZ"),
loc{150, 150, 150, 150},
centerX(0),
centerY(0),
@ -2985,7 +2990,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
avoidrad(0.),
transitweak(1.0),
transitgrad(0.0),
hishow(false),
hishow(options.complexity != 2),
activ(true),
blwh(false),
recurs(false),
@ -3343,6 +3348,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
gamm(0.4),
fatamount(1.0),
fatdetail(40.0),
fatsatur(false),
fatanchor(50.0),
fatlevel(1.),
recothrese(1.),
@ -4823,6 +4829,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& gamm == other.gamm
&& fatamount == other.fatamount
&& fatdetail == other.fatdetail
&& fatsatur == other.fatsatur
&& fatanchor == other.fatanchor
&& fatlevel == other.fatlevel
&& recothrese == other.recothrese
@ -6314,6 +6321,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->wb.itcwb_alg, "White Balance", "Itcwb_alg", wb.itcwb_alg, keyFile);
saveToKeyfile(!pedited || pedited->wb.itcwb_prim, "White Balance", "Itcwb_prim", wb.itcwb_prim, keyFile);
saveToKeyfile(!pedited || pedited->wb.itcwb_sampling, "White Balance", "Itcwb_sampling", wb.itcwb_sampling, keyFile);
saveToKeyfile(!pedited || pedited->wb.compat_version, "White Balance", "CompatibilityVersion", wb.compat_version, keyFile);
// Colorappearance
saveToKeyfile(!pedited || pedited->colorappearance.enabled, "Color appearance", "Enabled", colorappearance.enabled, keyFile);
@ -6422,6 +6430,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->dirpyrDenoise.methodmed, "Directional Pyramid Denoising", "MethodMed", dirpyrDenoise.methodmed, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.redchro, "Directional Pyramid Denoising", "Redchro", dirpyrDenoise.redchro, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.bluechro, "Directional Pyramid Denoising", "Bluechro", dirpyrDenoise.bluechro, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.gain, "Directional Pyramid Denoising", "AutoGain", dirpyrDenoise.autoGain, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.gamma, "Directional Pyramid Denoising", "Gamma", dirpyrDenoise.gamma, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.passes, "Directional Pyramid Denoising", "Passes", dirpyrDenoise.passes, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.lcurve, "Directional Pyramid Denoising", "LCurve", dirpyrDenoise.lcurve, keyFile);
@ -6707,6 +6716,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || spot_edited->gamm, "Locallab", "Gamm_" + index_str, spot.gamm, keyFile);
saveToKeyfile(!pedited || spot_edited->fatamount, "Locallab", "Fatamount_" + index_str, spot.fatamount, keyFile);
saveToKeyfile(!pedited || spot_edited->fatdetail, "Locallab", "Fatdetail_" + index_str, spot.fatdetail, keyFile);
saveToKeyfile(!pedited || spot_edited->fatsatur, "Locallab", "Fatsatur_" + index_str, spot.fatsatur, keyFile);
saveToKeyfile(!pedited || spot_edited->fatanchor, "Locallab", "Fatanchor_" + index_str, spot.fatanchor, keyFile);
saveToKeyfile(!pedited || spot_edited->fatlevel, "Locallab", "Fatlevel_" + index_str, spot.fatlevel, keyFile);
saveToKeyfile(!pedited || spot_edited->recothrese, "Locallab", "Recothrese_" + index_str, spot.recothrese, keyFile);
@ -8290,7 +8300,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "White Balance", "Enabled", wb.enabled, pedited->wb.enabled);
assignFromKeyfile(keyFile, "White Balance", "Setting", wb.method, pedited->wb.method);
if (wb.method == "Auto") {
wb.method = "autold";
wb.method = "autitcgreen"; //"autold";
}
assignFromKeyfile(keyFile, "White Balance", "Temperature", wb.temperature, pedited->wb.temperature);
assignFromKeyfile(keyFile, "White Balance", "Green", wb.green, pedited->wb.green);
@ -8315,6 +8325,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
assignFromKeyfile(keyFile, "White Balance", "Itcwb_sampling", wb.itcwb_sampling, pedited->wb.itcwb_sampling);
if (!assignFromKeyfile(keyFile, "White Balance", "CompatibilityVersion", wb.compat_version, pedited->wb.compat_version)) {
bool compat_version_edited = true;
if (ppVersion <= 346) { // 5.8 and earlier.
wb.compat_version = 0;
} else if (ppVersion <= 349) { // 5.9.
wb.compat_version = 1;
} else {
compat_version_edited = false;
}
if (pedited) {
pedited->wb.compat_version = pedited->wb.compat_version || compat_version_edited;
}
}
}
if (keyFile.has_group("Defringing")) {
@ -8458,6 +8481,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Redchro", dirpyrDenoise.redchro, pedited->dirpyrDenoise.redchro);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Bluechro", dirpyrDenoise.bluechro, pedited->dirpyrDenoise.bluechro);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "AutoGain", dirpyrDenoise.autoGain, pedited->dirpyrDenoise.gain);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Gamma", dirpyrDenoise.gamma, pedited->dirpyrDenoise.gamma);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Passes", dirpyrDenoise.passes, pedited->dirpyrDenoise.passes);
}
@ -8886,6 +8910,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "Gamm_" + index_str, spot.gamm, spotEdited.gamm);
assignFromKeyfile(keyFile, "Locallab", "Fatamount_" + index_str, spot.fatamount, spotEdited.fatamount);
assignFromKeyfile(keyFile, "Locallab", "Fatdetail_" + index_str, spot.fatdetail, spotEdited.fatdetail);
assignFromKeyfile(keyFile, "Locallab", "Fatsatur_" + index_str, spot.fatsatur, spotEdited.fatsatur);
assignFromKeyfile(keyFile, "Locallab", "Fatanchor_" + index_str, spot.fatanchor, spotEdited.fatanchor);
assignFromKeyfile(keyFile, "Locallab", "Fatlevel_" + index_str, spot.fatlevel, spotEdited.fatlevel);
assignFromKeyfile(keyFile, "Locallab", "Recothrese_" + index_str, spot.recothrese, spotEdited.recothrese);

View File

@ -636,6 +636,8 @@ struct WBEntry {
};
struct WBParams {
static constexpr int CURRENT_COMPAT_VERSION = 2;
bool enabled;
Glib::ustring method;
int temperature;
@ -649,6 +651,24 @@ struct WBParams {
bool itcwb_alg;
Glib::ustring itcwb_prim;
bool itcwb_sampling;
/**
* Used to maintain edits from previous versions of RawTherapee where
* compatibility cannot be maintained simply by converting the parameters,
* for example, when the output depends on the file type.
*
* Version 0:
* - Base version.
* Version 1 (5.9):
* - RGB Gray fixed to (1, 1, 1) RGB multipliers before temperature bias
* for non-raw files.
* - Temperature correlation fixed to temperature 5000, green 1, and equal
* 1 or equivalent for non-raw files.
* Version 2 (5.10):
* - RGB grey restored to version 0.
* - Temperature correlation equivalent to method "Camera" for non-raw
* files.
*/
int compat_version;
WBParams();
@ -772,6 +792,7 @@ struct DirPyrDenoiseParams {
double chroma;
double redchro;
double bluechro;
bool autoGain;
double gamma;
Glib::ustring dmethod;
Glib::ustring Lmethod;
@ -1190,6 +1211,7 @@ struct LocallabParams {
double gamm;
double fatamount;
double fatdetail;
bool fatsatur;
double fatanchor;
double fatlevel;
double recothrese;

View File

@ -16,6 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
*/
#include <cassert>
#include <cmath>
#include <cstdlib>
#include <iostream>
@ -743,6 +744,8 @@ void RawImageSource::getWBMults(const ColorTemp &ctemp, const RAWParams &raw, st
void RawImageSource::getImage(const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
MyMutex::MyLock lock(getImageMutex);
tran = defTransform(ri, tran);
@ -1722,7 +1725,7 @@ void RawImageSource::preprocess(const RAWParams &raw, const LensProfParams &lens
}
}
if (prepareDenoise && dirpyrdenoiseExpComp == RT_INFINITY) {
if (prepareDenoise) {
LUTu aehist;
int aehistcompr;
double clip = 0;
@ -1744,6 +1747,8 @@ void RawImageSource::preprocess(const RAWParams &raw, const LensProfParams &lens
void RawImageSource::demosaic(const RAWParams &raw, bool autoContrast, double &contrastThreshold, bool cache)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
MyTime t1, t2;
t1.set();
@ -3837,6 +3842,8 @@ void RawImageSource::hlRecovery(const std::string &method, float* red, float* gr
void RawImageSource::getAutoExpHistogram(LUTu & histogram, int& histcompr)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
// BENCHFUN
histcompr = 3;
@ -5307,8 +5314,8 @@ void RawImageSource::ItcWB(bool extra, double &tempref, double &greenref, double
Glib::ustring profuse;
profuse = "JDCmax";
int limx = 0.05f;
int limy = 0.04f;
float limx = 0.05f;
float limy = 0.04f;
if (wbpar.itcwb_prim == "srgb") {
profuse = "sRGB";
@ -7407,7 +7414,6 @@ void RawImageSource::getrgbloc(int begx, int begy, int yEn, int xEn, int cx, int
int precision = 3;//must be 3 5 or 9
bool oldsampling = wbpar.itcwb_sampling;
if (oldsampling == true) {
precision = 5;
}
@ -7481,6 +7487,8 @@ void RawImageSource::getrgbloc(int begx, int begy, int yEn, int xEn, int cx, int
void RawImageSource::getAutoWBMultipliersitc(bool extra, double & tempref, double & greenref, double & tempitc, double & greenitc, float &temp0, float &delta, int &bia, int &dread, int &kcam, int &nocam, float &studgood, float &minchrom, int &kmin, float &minhist, float &maxhist, int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, double & rm, double & gm, double & bm, const WBParams & wbpar, const ColorManagementParams & cmp, const RAWParams & raw, const ToneCurveParams &hrp)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
// BENCHFUN
constexpr double clipHigh = 64000.0;
@ -7692,12 +7700,7 @@ void RawImageSource::getAutoWBMultipliersitc(bool extra, double & tempref, doubl
printf("RGB grey AVG: %g %g %g\n", avg_r / std::max(1, rn), avg_g / std::max(1, gn), avg_b / std::max(1, bn));
}
if (wbpar.method == "autitcgreen") {
//not used
redAWBMul = rm = avg_rm * refwb_red;
greenAWBMul = gm = avg_gm * refwb_green;
blueAWBMul = bm = avg_bm * refwb_blue;
} else {
if (wbpar.method != "autitcgreen") {
const double reds = avg_r / std::max(1, rn) * refwb_red;
const double greens = avg_g / std::max(1, gn) * refwb_green;
const double blues = avg_b / std::max(1, bn) * refwb_blue;
@ -7710,6 +7713,8 @@ void RawImageSource::getAutoWBMultipliersitc(bool extra, double & tempref, doubl
void RawImageSource::getAutoWBMultipliers(double &rm, double &gm, double &bm)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
// BENCHFUN
constexpr double clipHigh = 64000.0;
@ -7926,6 +7931,7 @@ void RawImageSource::getAutoWBMultipliers(double &rm, double &gm, double &bm)
ColorTemp RawImageSource::getSpotWB(std::vector<Coord2D> &red, std::vector<Coord2D> &green, std::vector<Coord2D> &blue, int tran, double equal, StandardObserver observer)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
int x;
int y;
@ -8265,7 +8271,7 @@ void RawImageSource::init()
void RawImageSource::getRawValues(int x, int y, int rotate, int &R, int &G, int &B)
{
if (d1x) { // Nikon D1x has special sensor. We just skip it
if (rawData.getWidth() != W || rawData.getHeight() != H || d1x) { // Nikon D1x has special sensor. We just skip it
R = G = B = 0;
return;
}
@ -8313,6 +8319,8 @@ bool RawImageSource::isGainMapSupported() const
void RawImageSource::applyDngGainMap(const float black[4], const std::vector<GainMap> &gainMaps)
{
assert(rawData.getHeight() == H && rawData.getWidth() == W);
// now we can apply each gain map to raw_data
array2D<float> mvals[2][2];

View File

@ -458,8 +458,15 @@ public:
class AutoWBListener
{
public:
enum class AWBMode {
NONE,
RGB_GREY,
TEMP_CORRELATION_NON_RAW,
TEMP_CORRELATION_RAW,
};
virtual ~AutoWBListener() = default;
virtual void WBChanged(int met, double temp, double green, double rw, double gw, double bw, float temp0, float delta, int bia, int dread, float studgood, float minchrom, int kmin, float histmin, float histmax) = 0;
virtual void WBChanged(int met, double temp, double green, double rw, double gw, double bw, float temp0, float delta, int bia, int dread, float studgood, float minchrom, int kmin, float histmin, float histmax, AWBMode aWBMode) = 0;
};
class FrameCountListener

View File

@ -435,11 +435,21 @@ std::vector<LFLens> LFDatabase::getLenses() const
}
LFCamera LFDatabase::findCamera(const Glib::ustring &make, const Glib::ustring &model) const
LFCamera LFDatabase::findCamera(const Glib::ustring &make, const Glib::ustring &model, bool autoMatch) const
{
LFCamera ret;
if (data_ && !make.empty()) {
MyMutex::MyLock lock(lfDBMutex);
if (!autoMatch) {
// Try to find exact match by name.
for (auto camera_list = data_->GetCameras(); camera_list[0]; camera_list++) {
const auto camera = camera_list[0];
if (make == camera->Maker && model == camera->Model) {
ret.data_ = camera;
return ret;
}
}
}
auto found = data_->FindCamerasExt(make.c_str(), model.c_str());
if (found) {
ret.data_ = found[0];
@ -455,6 +465,16 @@ LFLens LFDatabase::findLens(const LFCamera &camera, const Glib::ustring &name) c
LFLens ret;
if (data_ && !name.empty()) {
MyMutex::MyLock lock(lfDBMutex);
if (!camera.data_) {
// Only the lens name provided. Try to find exact match by name.
LFLens candidate;
for (auto lens_list = data_->GetLenses(); lens_list[0]; lens_list++) {
candidate.data_ = lens_list[0];
if (name == candidate.getLens()) {
return candidate;
}
}
}
auto found = data_->FindLenses(camera.data_, nullptr, name.c_str());
for (size_t pos = 0; !found && pos < name.size(); ) {
// try to split the maker from the model of the lens -- we have to
@ -541,7 +561,7 @@ std::unique_ptr<LFModifier> LFDatabase::findModifier(
return nullptr;
}
const LFCamera c = findCamera(make, model);
const LFCamera c = findCamera(make, model, lensProf.lfAutoMatch());
const LFLens l = findLens(
lensProf.lfAutoMatch()
? c

View File

@ -120,7 +120,7 @@ public:
std::vector<LFCamera> getCameras() const;
std::vector<LFLens> getLenses() const;
LFCamera findCamera(const Glib::ustring &make, const Glib::ustring &model) const;
LFCamera findCamera(const Glib::ustring &make, const Glib::ustring &model, bool autoMatch) const;
LFLens findLens(const LFCamera &camera, const Glib::ustring &name) const;
std::unique_ptr<LFModifier> findModifier(

View File

@ -100,7 +100,7 @@ void adjustBlackLevels(float cblack[4], rtengine::eSensorType sensorType, const
break;
}
for (int i = 0; i < black_adjust.size(); i++) {
for (unsigned int i = 0; i < black_adjust.size(); i++) {
cblack[i] = std::max(0.f, cblack[i] + black_adjust[i]);
}
}
@ -118,7 +118,7 @@ void calculate_scale_mul(float scale_mul[4], const float pre_mul_[4], const floa
{
std::array<float, 4> c_white;
for (int i = 0; i < c_white.size(); ++i) {
for (unsigned int i = 0; i < c_white.size(); ++i) {
c_white[i] = static_cast<float>(ri->get_white(i));
}
@ -1202,7 +1202,19 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
double cam_b = colorMatrix[2][0] * camwbRed + colorMatrix[2][1] * camwbGreen + colorMatrix[2][2] * camwbBlue;
currWB = ColorTemp (cam_r, cam_g, cam_b, params.wb.equal, params.wb.observer);
} else if (params.wb.method == "autold") {
currWB = ColorTemp (autoWBTemp, autoWBGreen, wbEqual, "Custom", wbObserver);
if (params.wb.compat_version == 1 && !isRaw) {
// RGB grey compatibility version 1 used the identity multipliers
// plus temperature bias for non-raw files.
currWB.update(1., 1., 1., params.wb.equal, params.wb.observer, params.wb.tempBias);
} else {
currWB = ColorTemp(autoWBTemp, autoWBGreen, wbEqual, "Custom", wbObserver);
}
} else if (params.wb.method == "autitcgreen") {
if (params.wb.compat_version == 1 && !isRaw) {
currWB = ColorTemp(5000., 1., 1., params.wb.method, StandardObserver::TEN_DEGREES);
} else {
// TODO: Temperature correlation AWB.
}
}
double rm, gm, bm;
@ -1331,7 +1343,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
ipf.firstAnalysis (baseImg, params, hist16);
ipf.dehaze(baseImg, params.dehaze);
ipf.ToneMapFattal02(baseImg, params.fattal, 3, 0, nullptr, 0, 0, 0);
ipf.ToneMapFattal02(baseImg, params.fattal, 3, 0, nullptr, 0, 0, 0, false);
// perform transform
int origFW;

View File

@ -271,16 +271,85 @@ private:
// set the color temperature
currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method, params.wb.observer);
ColorTemp currWBitc;
if (params.wb.method == "autitcgreen" && flush) {
imgsrc->getrgbloc(0, 0, fh, fw, 0, 0, fh, fw, params.wb);
}
const bool autowb = (params.wb.method == "autitcgreen" && imgsrc->isRAW() && flush);
ColorTemp autoWB;
int dread = 0;
int bia = 1;
float studgood = 1000.f;
int nocam = 0;
int kcam = 0;
float minchrom = 1000.f;
float delta = 0.f;
int kmin = 20;
float minhist = 1000000000.f;
float maxhist = -1000.f;
double greenitc = 1.;
float temp0 = 5000.f;
bool extra = false;
bool forcewbgrey = false;
if (!params.wb.enabled) {
currWB = ColorTemp();
} else if (params.wb.method == "Camera") {
} else if (params.wb.method == "Camera" || (params.wb.method == "autitcgreen" && params.wb.compat_version >= 2 && !imgsrc->isRAW() && flush)) {//Use also Camera settings for Temperature correlation and TIF/Jpg
currWB = imgsrc->getWB();
} else if (params.wb.method == "autold") {
} else if (params.wb.method == "autold") {//for Auto RGB
double rm, gm, bm;
imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (params.wb.compat_version == 1 && !imgsrc->isRAW()) {
// RGB grey compatibility version 1 used the identity
// multipliers plus temperature bias for non-raw files.
rm = gm = bm = 1.;
} else {
imgsrc->getAutoWBMultipliers(rm, gm, bm);
}
currWB.update(rm, gm, bm, params.wb.equal, params.wb.observer, params.wb.tempBias);
} else if (autowb) {//for auto Itcwb - flush to enable only when batch only with Raw files
//code similar to that present in improccoordinator.cc
double rm;
double gm;
double bm;
imgsrc->getAutoWBMultipliersItcGreen(
params,
forcewbgrey,
kcam,
greenitc,
extra,
temp0,
delta,
bia,
dread,
nocam,
studgood,
minchrom,
kmin,
minhist,
maxhist,
fh,
fw,
currWB,
0,
0.,
false,
autoWB,
rm,
gm,
bm);
currWB = autoWB;
} else if (params.wb.method == "autitcgreen" && params.wb.compat_version == 1 && !imgsrc->isRAW() && flush) {
// ITCWB compatibility version 1 used 5000 K and observer 10 degrees
// for non-raw files.
currWB = ColorTemp(5000., 1., 1., params.wb.method, StandardObserver::TEN_DEGREES);
currWB.convertObserver(params.wb.observer);
params.wb.temperature = currWB.getTemp();
params.wb.green = currWB.getGreen();
params.wb.equal = currWB.getEqual();
}
//end WB auto
calclum = nullptr ;
params.dirpyrDenoise.getCurves(noiseLCurve, noiseCCurve);
@ -897,7 +966,7 @@ private:
ipf.firstAnalysis(baseImg, params, hist16);
ipf.dehaze(baseImg, params.dehaze);
ipf.ToneMapFattal02(baseImg, params.fattal, 3, 0, nullptr, 0, 0, 0);
ipf.ToneMapFattal02(baseImg, params.fattal, 3, 0, nullptr, 0, 0, 0, false);
// perform transform (excepted resizing)
if (ipf.needsTransform(fw, fh, imgsrc->getRotateDegree(), imgsrc->getMetaData())) {
@ -2116,7 +2185,6 @@ IImagefloat* processImage(ProcessingJob* pjob, int& errorCode, ProgressListener*
void batchProcessingThread(ProcessingJob* job, BatchProcessingListener* bpl)
{
ProcessingJob* currentJob = job;
while (currentJob) {

View File

@ -315,6 +315,10 @@ void StdImageSource::WBauto(bool extra, double &tempref, double &greenref, array
{
}
void StdImageSource::getrgbloc(int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, const procparams::WBParams & wbpar)
{
}
void StdImageSource::getAutoWBMultipliersitc(bool extra, double &tempref, double &greenref, double &tempitc, double &greenitc, float &temp0, float &delta, int &bia, int &dread, int &kcam, int &nocam, float &studgood, float &minchrom, int &kmin, float &minhist, float &maxhist, int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, double &rm, double &gm, double &bm, const WBParams & wbpar, const ColorManagementParams &cmp, const RAWParams &raw, const ToneCurveParams &hrp)
{
if (redAWBMul != -1.) {

View File

@ -59,7 +59,7 @@ public:
int load (const Glib::ustring &fname) override;
void getWBMults (const ColorTemp &ctemp, const procparams::RAWParams &raw, std::array<float, 4>& scale_mul, float &autoGainComp, float &rm, float &gm, float &bm) const override {};
void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const procparams::ToneCurveParams &hrp, const procparams::RAWParams &raw) override;
void getrgbloc (int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, const procparams::WBParams & wbpar) override {};
void getrgbloc (int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, const procparams::WBParams & wbpar) override;
ColorTemp getWB () const override
{
return wb;

View File

@ -84,7 +84,6 @@ namespace rtengine
/******************************************************************************
* RT code
******************************************************************************/
extern MyMutex *fftwMutex;
using namespace std;
@ -310,7 +309,7 @@ float calculateGradients(Array2Df* H, Array2Df* G, int k, bool multithread)
// however, the impact is not visible so we ignore this here
(*G)(x, y) = sqrt(gx * gx + gy * gy) / divider;
avgGrad += static_cast<double>((*G) (x, y));
avgGrad += (*G) (x, y);
}
}
@ -378,6 +377,7 @@ void calculateFiMatrix(Array2Df* FI, Array2Df* gradients[],
// only apply gradients to levels>=detail_level but at least to the coarsest
if ((k >= detail_level || k == nlevels - 1) && beta != 1.f) {
const float a = alfa * avgGrad[k];
//DEBUG_STR << "calculateFiMatrix: apply gradient to level " << k << endl;
#ifdef _OPENMP
#pragma omp parallel for shared(fi,avgGrad) if(multithread)
@ -385,8 +385,7 @@ void calculateFiMatrix(Array2Df* FI, Array2Df* gradients[],
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4f : (*gradients[k]) (x, y);
float a = alfa * avgGrad[k];
float grad = ((*gradients[k]) (x, y) < 1e-4f) ? 1e-4 : (*gradients[k]) (x, y);
float value = pow((grad + noise) / a, beta - 1.0f);
(*fi[k])(x, y) *= value;
@ -470,7 +469,7 @@ void tmo_fattal02(size_t width,
//paramet
// find max value, normalize to range 0..100 and take logarithm
// float minLum = Y (0, 0);
float maxLum = Y(0, 0);
float maxLum = Y(0, 0);
#ifdef _OPENMP
#pragma omp parallel for reduction(max:maxLum) if(multithread)
@ -482,7 +481,7 @@ void tmo_fattal02(size_t width,
Array2Df* H = new Array2Df(width, height);
float temp = 100.f / maxLum;
float eps = 1e-4f;
if (algo == 1) {
temp = 1.f;
}
@ -491,7 +490,6 @@ void tmo_fattal02(size_t width,
#pragma omp parallel if(multithread)
#endif
{
const float eps = 1e-4f;
#ifdef __SSE2__
const vfloat epsv = F2V(eps);
const vfloat tempv = F2V(temp);
@ -567,9 +565,9 @@ void tmo_fattal02(size_t width,
gradients[k] = new Array2Df(pyramids[k]->getCols(), pyramids[k]->getRows());
avgGrad[k] = calculateGradients(pyramids[k], gradients[k], k, multithread);
if (k != 0) { // pyramids[0] is H. Will be deleted later
if (k != 0) // pyramids[0] is H. Will be deleted later
delete pyramids[k];
}
}
@ -615,8 +613,8 @@ void tmo_fattal02(size_t width,
// sets index+1 based on the boundary assumption H(N+1)=H(N-1)
unsigned int xp1 = (x + 1 >= width ? width - 2 : x + 1);
// forward differences in H, so need to use between-points approx of FI
(*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5f * ((*FI) (xp1, y) + (*FI) (x, y));
(*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5f * ((*FI) (x, yp1) + (*FI) (x, y));
(*Gx) (x, y) = ((*H) (xp1, y) - (*H) (x, y)) * 0.5 * ((*FI) (xp1, y) + (*FI) (x, y));
(*Gy) (x, y) = ((*H) (x, yp1) - (*H) (x, y)) * 0.5 * ((*FI) (x, yp1) + (*FI) (x, y));
}
}
@ -759,7 +757,7 @@ void transform_ev2normal(Array2Df *A, Array2Df *T, bool multithread)
}
for (int y = 1 ; y < height - 1 ; y++) {
(*A) (0, y) *= 0.5f;
(*A) (0, y) *= 0.5;
(*A)(width - 1, y) *= 0.5f;
}
@ -889,7 +887,7 @@ void solve_pde_fft(Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread, in
if (multithread) {
fftwf_init_threads();
fftwf_plan_with_nthreads(omp_get_max_threads());
fftwf_plan_with_nthreads(omp_get_num_procs());
}
// #else
@ -924,7 +922,7 @@ void solve_pde_fft(Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread, in
for (int y = 0 ; y < height ; y++) {
for (int x = 0 ; x < width ; x++) {
(*F_tr) (x, y) = static_cast<double>((*F_tr) (x, y)) / (l1[y] + l2[x]);
(*F_tr) (x, y) = (*F_tr) (x, y) / (l1[y] + l2[x]);
}
}
@ -932,7 +930,7 @@ void solve_pde_fft(Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread, in
// transforms F_tr back to the normal space
transform_ev2normal(F_tr, U, multithread);
/*
// the solution U as calculated will satisfy something like int U = 0
// since for any constant c, U-c is also a solution and we are mainly
// working in the logspace of (0,1) data we prefer to have
@ -957,6 +955,8 @@ void solve_pde_fft(Array2Df *F, Array2Df *U, Array2Df *buf, bool multithread, in
(*U)(i) -= maxVal;
}
}
*/
}
@ -1064,7 +1064,7 @@ inline int find_fast_dim(int dim)
} // namespace
void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingParams &fatParams, int detail_level, int Lalone, float **Lum, int WW, int HH, int algo)
void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingParams &fatParams, int detail_level, int Lalone, float **Lum, int WW, int HH, int algo, bool sat)
//algo allows to use ART algorithme algo = 0 RT, algo = 1 ART
//Lalone allows to use L without RGB values in RT mode
{
@ -1073,7 +1073,7 @@ void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingPa
}
BENCHFUN
// const int detail_level = 3;
// const int detail_level = 3;
float alpha = 1.f;
@ -1137,7 +1137,7 @@ void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingPa
Array2Df L(w2, h2);
{
#ifdef _OPENMP
int num_threads = multiThread ? omp_get_max_threads() : 1;
int num_threads = multiThread ? omp_get_num_procs() : 1;
#else
int num_threads = 1;
#endif
@ -1224,16 +1224,18 @@ void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingPa
}
const bool satcontrol = sat;
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16) if(multiThread)
#endif
for (int y = 0; y < h; y++) {
int yy = y * hr + 1;
int yy = std::min(int(y * hr + 1), h2-1);
for (int x = 0; x < w; x++) {
int xx = x * wr + 1;
int xx = std::min(int(x * wr + 1), w2-1);
float Y = std::max(Yr(x, y), epsilon);
float l = std::max(L(xx, yy), epsilon) * (scale / Y);
@ -1242,15 +1244,33 @@ void ImProcFunctions::ToneMapFattal02(Imagefloat *rgb, const FattalToneMappingPa
float &r = rgb->r(y, x);
float &g = rgb->g(y, x);
float &b = rgb->b(y, x);
float s = 1.f;
if(l > 1.f) {
r = max(r * l - offset, r);
g = max(g * l - offset, g);
b = max(b * l - offset, b);
if (satcontrol) {
s = pow_F(1.f / l, 0.3f);
}
} else {
r *= l;
g *= l;
b *= l;
if (satcontrol) {
s = pow_F(l, 0.3f);
}
}
if (satcontrol && s != 1.f) {
float ll = luminance(r, g, b, ws);
float rl = r - ll;
float gl = g - ll;
float bl = b - ll;
r = ll + s * rl;
g = ll + s * gl;
b = ll + s * bl;
}
assert(std::isfinite(rgb->r(y, x)));
assert(std::isfinite(rgb->g(y, x)));
assert(std::isfinite(rgb->b(y, x)));

View File

@ -20,6 +20,7 @@
#include <glib/gstdio.h>
#include <cstring>
#include <functional>
#include "../rtengine/imagedata.h"
#include "../rtengine/rt_math.h"
#include "../rtengine/procparams.h"
@ -43,6 +44,74 @@
using namespace std;
using namespace rtengine;
#ifdef _WIN32
#define PATH_SEPARATOR '\\';
#else
#define PATH_SEPARATOR '/';
#endif
namespace // local helper functions
{
// Look for N or -N in templateText at position ix, meaning "index from end" and "index from start".
// For N, return Nth index from the end, and for -N return the Nth index from the start.
// N is a digit 1 through 9. The returned value is not range-checked, so it may be >=numPathElements.
// or negative. The caller performs any required range-checking.
int decodePathIndex(unsigned int& ix, Glib::ustring& templateText, size_t numPathElements)
{
int pathIndex = static_cast<int>(numPathElements); // a value that means input was invalid
bool fromStart = false;
if (ix < templateText.size()) {
if (templateText[ix] == '-') {
fromStart = true; // minus sign means N is from the start rather than the end of the path
ix++;
}
}
if (ix < templateText.size()) {
pathIndex = templateText[ix] - '1';
if (!fromStart) {
pathIndex = numPathElements - pathIndex - 1;
}
}
return pathIndex;
}
// Extract the initial characters from a canonical absolute path, and append
// those to a path string. Initial characters are '/' for Unix/Linux paths and
// '\\' or '//' for UNC paths. A single backslash is also accepted, for driveless
// Windows paths.
void appendAbsolutePathPrefix(Glib::ustring& path, const Glib::ustring& absolutePath)
{
if (absolutePath[0] == '/') {
if (absolutePath.size() > 1 && absolutePath[1] == '/') {
path += "//"; // Start of a Samba UNC path
} else {
path += '/'; // Start of a Unix/Linux path
}
} else if (absolutePath[0] == '\\') {
if (absolutePath.size() > 1 && absolutePath[1] == '\\') {
path += "\\\\"; // Start of a UNC path
} else {
path += '\\'; // Start of a Windows path that does not include a drive letter
}
}
}
// Look in templateText at index ix for quoted string containing a time format string, and
// use that string to format dateTime. Append the formatted time to path.
void appendFormattedTime(Glib::ustring& path, unsigned int& ix, const Glib::ustring& templateText, const Glib::DateTime& dateTime)
{
constexpr gunichar quoteMark('"');
if ((ix + 1) < templateText.size() && templateText[ix] == quoteMark) {
const auto endPos = templateText.find_first_of(quoteMark, ++ix);
if (endPos != Glib::ustring::npos) {
Glib::ustring formatString(templateText, ix, endPos-ix);
path += dateTime.format(formatString);
ix = endPos;
}
}
}
}
BatchQueue::BatchQueue (FileCatalog* aFileCatalog) : processing(nullptr), fileCatalog(aFileCatalog), sequence(0), listener(nullptr)
{
@ -394,7 +463,7 @@ Glib::ustring BatchQueue::getTempFilenameForParams( const Glib::ustring &filenam
timeval tv;
gettimeofday(&tv, nullptr);
char mseconds[11];
snprintf(mseconds, sizeof(mseconds), "%d", (int)(tv.tv_usec / 1000));
snprintf(mseconds, sizeof(mseconds), "%d", static_cast<int>((tv.tv_usec / 1000)));
time_t rawtime;
struct tm *timeinfo;
char stringTimestamp [80];
@ -561,12 +630,28 @@ void BatchQueue::openLastSelectedItemInEditor()
{
MYREADERLOCK(l, entryRW);
if (selected.size() > 0) {
if (!selected.empty()) {
openItemInEditor(selected.back());
}
}
}
void BatchQueue::updateDestinationPathPreview()
{
MYWRITERLOCK(l, entryRW);
if (!selected.empty()) {
auto& entry = *selected.at(0);
int sequence = 0; // Sequence during subsequent queue processing can't be determined here
Glib::ustring baseDestination = calcAutoFileNameBase(entry.filename, sequence);
Glib::ustring destination = Glib::ustring::compose ("%1.%2", baseDestination, options.saveFormatBatch.format);
if (listener) {
listener->setDestinationPreviewText(destination);
}
}
}
void BatchQueue::openItemInEditor(ThumbBrowserEntryBase* item)
{
if (item) {
@ -811,7 +896,6 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img)
Glib::ustring BatchQueue::calcAutoFileNameBase (const Glib::ustring& origFileName, int sequence)
{
std::vector<Glib::ustring> pa;
std::vector<Glib::ustring> da;
for (size_t i = 0; i < origFileName.size(); i++) {
@ -829,29 +913,13 @@ Glib::ustring BatchQueue::calcAutoFileNameBase (const Glib::ustring& origFileNam
tok = tok + origFileName[i++];
}
da.push_back (tok);
}
if (origFileName[0] == '/') {
pa.push_back ("/" + da[0]);
} else if (origFileName[0] == '\\') {
if (origFileName.size() > 1 && origFileName[1] == '\\') {
pa.push_back ("\\\\" + da[0]);
} else {
pa.push_back ("/" + da[0]);
if (i < origFileName.size()) { // omit the last token, which is the file name
da.push_back (tok);
}
} else {
pa.push_back (da[0]);
}
for (size_t i = 1; i < da.size(); i++) {
pa.push_back (pa[i - 1] + "/" + da[i]);
}
// for (int i=0; i<da.size(); i++)
// printf ("da: %s\n", da[i].c_str());
// for (int i=0; i<pa.size(); i++)
// printf ("pa: %s\n", pa[i].c_str());
// for (unsigned i=0; i<da.size(); i++)
// printf ("da[%u]: \"%s\"\n", i, da[i].c_str());
// extracting filebase
Glib::ustring filename;
@ -878,24 +946,50 @@ Glib::ustring BatchQueue::calcAutoFileNameBase (const Glib::ustring& origFileNam
if (options.savePathTemplate[ix] == '%') {
ix++;
if (options.savePathTemplate[ix] == 'p') {
if (options.savePathTemplate[ix] == 'P') {
// insert path elements from given index to the end
ix++;
unsigned int i = options.savePathTemplate[ix] - '0';
if (i < pa.size()) {
path = path + pa[pa.size() - i - 1] + '/';
int n = decodePathIndex(ix, options.savePathTemplate, da.size());
if (n < 0) {
n = 0; // if too many elements specified, return all available elements
}
if (n < static_cast<int>(da.size())) {
if (n == 0) {
appendAbsolutePathPrefix(path, origFileName);
}
for (unsigned int i = static_cast<unsigned int>(n); i < da.size(); i++) {
path += da[i] + PATH_SEPARATOR;
}
}
// If the next template character is a separator, skip it, because path already has one
ix++;
if (ix < options.savePathTemplate.size() && options.savePathTemplate[ix] != '/' && options.savePathTemplate[ix] != '\\') {
ix--;
}
} else if (options.savePathTemplate[ix] == 'p') {
// insert path elements from the start of the path up to the given index
ix++;
int n = decodePathIndex(ix, options.savePathTemplate, da.size());
if (n >= 0) {
appendAbsolutePathPrefix(path, origFileName);
}
for (unsigned int i=0; static_cast<int>(i) <= n && i < da.size(); i++) {
path += da[i] + PATH_SEPARATOR;
}
// If the next template character is a separator, skip it, because path already has one
ix++;
if (ix < options.savePathTemplate.size() && options.savePathTemplate[ix] != '/' && options.savePathTemplate[ix] != '\\') {
ix--;
}
} else if (options.savePathTemplate[ix] == 'd') {
// insert a single directory name from the file's path
ix++;
unsigned i = options.savePathTemplate[ix] - '0';
if (i < da.size()) {
path = path + da[da.size() - i - 1];
int n = decodePathIndex(ix, options.savePathTemplate, da.size());
if (n >= 0 && n < static_cast<int>(da.size())) {
path += da[n];
}
} else if (options.savePathTemplate[ix] == 'f') {
path = path + filename;
path += filename;
} else if (options.savePathTemplate[ix] == 'r') { // rank from pparams
char rank;
rtengine::procparams::ProcParams pparams;
@ -923,11 +1017,48 @@ Glib::ustring BatchQueue::calcAutoFileNameBase (const Glib::ustring& origFileNam
seqstr << sequence;
path += seqstr.str ();
} else if (options.savePathTemplate[ix] == 't') {
// Insert formatted date/time value. Character after 't' defines time source
if (++ix < options.savePathTemplate.size()) {
Glib::DateTime dateTime;
switch(options.savePathTemplate[ix++])
{
case 'E': // (approximate) time when export started
{
dateTime = Glib::DateTime::create_now_local();
break;
}
case 'F': // time when file was last saved
{
Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(origFileName);
if (file) {
Glib::RefPtr<Gio::FileInfo> info = file->query_info(G_FILE_ATTRIBUTE_TIME_MODIFIED);
if (info) {
dateTime = info->get_modification_date_time();
}
}
break;
}
case 'P': // time when picture was taken
{
const auto timestamp = FramesData(origFileName).getDateTimeAsTS();
dateTime = Glib::DateTime::create_now_local(timestamp);
break;
}
default:
{
break;
}
}
if (dateTime) {
appendFormattedTime(path, ix, options.savePathTemplate, dateTime);
}
}
}
}
else {
path = path + options.savePathTemplate[ix];
path += options.savePathTemplate[ix];
}
ix++;
@ -1021,3 +1152,8 @@ void BatchQueue::redrawNeeded (LWButton* button)
GThreadLock lock;
queue_draw ();
}
void BatchQueue::selectionChanged()
{
updateDestinationPathPreview();
}

View File

@ -38,6 +38,7 @@ public:
virtual ~BatchQueueListener() = default;
virtual void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) = 0;
virtual bool canStartNext() = 0;
virtual void setDestinationPreviewText(const Glib::ustring& destinationPath) = 0;
};
class FileCatalog;
@ -59,6 +60,7 @@ public:
void selectAll ();
void openItemInEditor(ThumbBrowserEntryBase* item);
void openLastSelectedItemInEditor();
void updateDestinationPathPreview();
void startProcessing ();
@ -79,6 +81,7 @@ public:
bool keyPressed (GdkEventKey* event) override;
void buttonPressed (LWButton* button, int actionCode, void* actionData) override;
void redrawNeeded (LWButton* button) override;
void selectionChanged () override;
void setBatchQueueListener (BatchQueueListener* l)
{

View File

@ -73,7 +73,10 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
hb2->pack_start (*useTemplate, Gtk::PACK_SHRINK, 4);
outdirTemplate = Gtk::manage (new Gtk::Entry ());
hb2->pack_start (*outdirTemplate);
odvb->pack_start (*hb2, Gtk::PACK_SHRINK, 4);
templateHelpButton = Gtk::manage (new Gtk::ToggleButton("?"));
templateHelpButton->set_tooltip_markup (M ("QUEUE_LOCATION_TEMPLATE_HELP_BUTTON_TOOLTIP"));
hb2->pack_start (*templateHelpButton, Gtk::PACK_SHRINK, 0);
odvb->pack_start (*hb2, Gtk::PACK_SHRINK, 0);
outdirTemplate->set_tooltip_markup (M("QUEUE_LOCATION_TEMPLATE_TOOLTIP"));
useTemplate->set_tooltip_markup (M("QUEUE_LOCATION_TEMPLATE_TOOLTIP"));
Gtk::Box* hb3 = Gtk::manage (new Gtk::Box ());
@ -108,6 +111,14 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
#endif
odvb->pack_start (*hb3, Gtk::PACK_SHRINK, 4);
destinationPreviewLabel = Gtk::manage (new Gtk::Label ());
destinationPreviewLabel->set_tooltip_markup (M("QUEUE_DESTPREVIEW_TOOLTIP"));
destinationPreviewLabel->set_selectable (true); // so users can copy the path to the clipboard
destinationPreviewLabel->set_halign (Gtk::ALIGN_START);
auto destinationPreviewScrolledWindow = Gtk::manage(new Gtk::ScrolledWindow ());
destinationPreviewScrolledWindow->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
destinationPreviewScrolledWindow->add (*destinationPreviewLabel);
odvb->pack_start (*destinationPreviewScrolledWindow, Gtk::PACK_SHRINK);
Gtk::RadioButton::Group g = useTemplate->get_group();
useFolder->set_group (g);
fdir->add (*odvb);
@ -122,11 +133,13 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
outdirTemplate->set_text (options.savePathTemplate);
useTemplate->set_active (options.saveUsePathTemplate);
useFolder->set_active (!options.saveUsePathTemplate);
destinationPreviewLabel->set_text (M("QUEUE_DESTPREVIEW_TITLE"));
// setup signal handlers
outdirTemplate->signal_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
useTemplate->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
useFolder->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
templateHelpButton->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::templateHelpButtonToggled));
saveFormatPanel->setListener (this);
// setup button bar
@ -138,8 +151,19 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
topBox->pack_start (*fdir, Gtk::PACK_EXPAND_WIDGET, 4);
topBox->pack_start (*fformat, Gtk::PACK_EXPAND_WIDGET, 4);
middleSplitPane = Gtk::manage (new Gtk::Paned(Gtk::ORIENTATION_HORIZONTAL));
templateHelpTextView = Gtk::manage (new Gtk::TextView());
templateHelpTextView->set_editable(false);
templateHelpTextView->set_wrap_mode(Gtk::WRAP_WORD);
scrolledTemplateHelpWindow = Gtk::manage(new Gtk::ScrolledWindow());
scrolledTemplateHelpWindow->add(*templateHelpTextView);
middleSplitPane->pack1 (*scrolledTemplateHelpWindow);
middleSplitPane->pack2 (*batchQueue);
scrolledTemplateHelpWindow->set_visible(false); // initially hidden, templateHelpButton shows it
scrolledTemplateHelpWindow->set_no_show_all(true);
// add middle browser area
pack_start (*batchQueue);
pack_start (*middleSplitPane);
// lower box with thumbnail zoom
bottomBox = Gtk::manage (new Gtk::Box ());
@ -313,6 +337,122 @@ void BatchQueuePanel::setGuiFromBatchState(bool queueRunning, int qsize)
updateTab(qsize);
}
void BatchQueuePanel::templateHelpButtonToggled()
{
bool visible = templateHelpButton->get_active();
auto buffer = templateHelpTextView->get_buffer();
if (buffer->get_text().empty()) {
// Populate the help text the first time it's shown
populateTemplateHelpBuffer(buffer);
const auto fullWidth = middleSplitPane->get_width();
middleSplitPane->set_position(fullWidth / 2);
}
scrolledTemplateHelpWindow->set_visible(visible);
templateHelpTextView->set_visible(visible);
}
void BatchQueuePanel::populateTemplateHelpBuffer(Glib::RefPtr<Gtk::TextBuffer> buffer)
{
auto pos = buffer->begin();
const auto insertTopicHeading = [&pos, buffer](const Glib::ustring& text) {
pos = buffer->insert_markup(pos, Glib::ustring::format("\n\n<u><b>", text, "</b></u>\n"));
};
const auto insertTopicBody = [&pos, buffer](const Glib::ustring& text) {
pos = buffer->insert_markup(pos, Glib::ustring::format("\n", text, "\n"));
};
const auto mainTitle = M("QUEUE_LOCATION_TEMPLATE_HELP_TITLE");
pos = buffer->insert_markup(pos, Glib::ustring::format("<big><b>", mainTitle, "</b></big>\n"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_INTRO"));
insertTopicHeading(M("QUEUE_LOCATION_TEMPLATE_HELP_EXAMPLES_TITLE"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_EXAMPLES_BODY"));
insertTopicHeading(M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_TITLE"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_INTRO"));
pos = buffer->insert(pos, "\n");
#ifdef _WIN32
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_INTRO_WINDOWS"));
pos = buffer->insert(pos, "\n");
#endif
pos = buffer->insert(pos, "\n");
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_BODY_1"));
#ifdef _WIN32
const auto exampleFilePath = M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_EXAMPLE_WINDOWS");
#else
const auto exampleFilePath = M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_EXAMPLE_LINUX");
#endif
pos = buffer->insert_markup(pos, Glib::ustring::format("\n ", exampleFilePath, "\n"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_PATHS_BODY_2"));
// Examples are generated from exampleFilePath using the actual template processing function
const Options savedOptions = options; // to be restored after generating example results
options.saveUsePathTemplate = true;
// Since this code only ever runs once (the first time the help text is presented), no attempt is
// made to be efficient. Use a brute-force method to discover the number of elements in exampleFilePath.
int pathElementCount = 0;
for (int n=9; n>=0; n--) {
options.savePathTemplate = Glib::ustring::format("%d", n);
const auto result = BatchQueue::calcAutoFileNameBase(exampleFilePath);
if (!result.empty()) {
// The 'd' specifier returns an empty string if N exceeds the number of path elements, so
// the largest N that does not return an empty string is the number of elements in exampleFilePath.
pathElementCount = n;
break;
}
}
// Function inserts examples for a particular specifier, with every valid N value for the
// number of elements in the path.
const auto insertPathExamples = [&buffer, &pos, pathElementCount, exampleFilePath](char letter, int offset1, int mult1, int offset2, int mult2)
{
for (int n=0; n<pathElementCount; n++) {
auto path1 = Glib::ustring::format("%", letter, offset1+n*mult1);
auto path2 = Glib::ustring::format("%", letter, offset2+n*mult2);
options.savePathTemplate = path1;
auto result1 = BatchQueue::calcAutoFileNameBase(exampleFilePath);
options.savePathTemplate = path2;
auto result2 = BatchQueue::calcAutoFileNameBase(exampleFilePath);
pos = buffer->insert_markup(pos, Glib::ustring::format("\n <tt><b>", path1, "</b> = <b>", path2, "</b> = <i>", result1, "</i></tt>"));
if (result1 != result2) {
// If this error appears, it indicates a coding error in either BatchQueue::calcAutoFileNameBase
// or BatchQueuePanel::populateTemplateHelpBuffer.
pos = buffer->insert_markup(pos, Glib::ustring::format(" ", M("QUEUE_LOCATION_TEMPLATE_HELP_RESULT_MISMATCH"), " ", result2));
}
}
};
// Example outputs in comments below are for a 4-element path.
insertPathExamples('d', pathElementCount, -1, -1, -1); // <b>%d4</b> = <b>%d-1</b> = <i>home</i>
insertPathExamples('p', 1, 1, -pathElementCount, 1); // <b>%p1</b> = <b>%p-4</b> = <i>/home/tom/photos/2010-10-31/</i>
insertPathExamples('P', 1, 1, -pathElementCount, 1); // <b>%P1</b> = <b>%P-4</b> = <i>2010-10-31/</i>
{
const Glib::ustring fspecifier("%f");
options.savePathTemplate = fspecifier;
const auto result = BatchQueue::calcAutoFileNameBase(exampleFilePath);
pos = buffer->insert_markup(pos, Glib::ustring::format("\n <tt><b>", fspecifier, "</b> = <i>", result, "</i></tt>"));
}
insertTopicHeading(M("QUEUE_LOCATION_TEMPLATE_HELP_RANK_TITLE"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_RANK_BODY"));
insertTopicHeading(M("QUEUE_LOCATION_TEMPLATE_HELP_SEQUENCE_TITLE"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_SEQUENCE_BODY"));
insertTopicHeading(M("QUEUE_LOCATION_TEMPLATE_HELP_TIMESTAMP_TITLE"));
pos = buffer->insert_markup(pos, M("QUEUE_LOCATION_TEMPLATE_HELP_TIMESTAMP_BODY"));
const Glib::ustring dateTimeFormatExamples[] = {
"%Y-%m-%d",
"%Y%m%d_%H%M%S",
"%y/%b/%-d/"
};
const auto timezone = Glib::DateTime::create_now_local().get_timezone();
const auto timeForExamples = Glib::DateTime::create_from_iso8601("2001-02-03T04:05:06.123456", timezone);
for (auto && fmt : dateTimeFormatExamples) {
const auto result = timeForExamples.format(fmt);
pos = buffer->insert_markup(pos, Glib::ustring::format("\n <tt><b>%tE\"", fmt, "\"</b> = <i>", result, "</i></tt>"));
}
pos = buffer->insert(pos, "\n");
options = savedOptions; // Do not add any lines in this function below here
}
void BatchQueuePanel::addBatchQueueJobs(const std::vector<BatchQueueEntry*>& entries, bool head)
{
batchQueue->addEntries(entries, head);
@ -329,6 +469,7 @@ void BatchQueuePanel::saveOptions ()
options.savePathTemplate = outdirTemplate->get_text();
options.saveUsePathTemplate = useTemplate->get_active();
options.procQueueEnabled = qAutoStart->get_active();
batchQueue->updateDestinationPathPreview();
}
bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event)
@ -358,6 +499,11 @@ bool BatchQueuePanel::canStartNext ()
return queueShouldRun;
}
void BatchQueuePanel::setDestinationPreviewText(const Glib::ustring &destinationPath)
{
destinationPreviewLabel->set_text(destinationPath);
}
void BatchQueuePanel::pathFolderButtonPressed ()
{
@ -381,9 +527,11 @@ void BatchQueuePanel::pathFolderButtonPressed ()
void BatchQueuePanel::pathFolderChanged ()
{
options.savePathFolder = outdirFolder->get_filename();
batchQueue->updateDestinationPathPreview();
}
void BatchQueuePanel::formatChanged(const Glib::ustring& format)
{
options.saveFormatBatch = saveFormatPanel->getFormat();
batchQueue->updateDestinationPathPreview();
}

View File

@ -42,6 +42,7 @@ class BatchQueuePanel : public Gtk::Box,
Gtk::CheckButton* qAutoStart;
Gtk::Entry* outdirTemplate;
Gtk::Label* destinationPreviewLabel;
MyFileChooserButton* outdirFolder;
Gtk::Button* outdirFolderButton;
Gtk::RadioButton* useTemplate;
@ -51,8 +52,12 @@ class BatchQueuePanel : public Gtk::Box,
RTWindow* parent;
BatchQueue* batchQueue;
Gtk::TextView* templateHelpTextView;
Gtk::ScrolledWindow* scrolledTemplateHelpWindow;
Gtk::ToggleButton* templateHelpButton;
Gtk::Box* bottomBox;
Gtk::Box* topBox;
Gtk::Paned* middleSplitPane;
std::atomic<bool> queueShouldRun;
@ -72,12 +77,15 @@ public:
// batchqueuelistener interface
void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) override;
bool canStartNext() override;
void setDestinationPreviewText(const Glib::ustring& destinationPath) override;
private:
void startBatchProc ();
void stopBatchProc ();
void startOrStopBatchProc();
void setGuiFromBatchState(bool queueRunning, int qsize);
void templateHelpButtonToggled();
void populateTemplateHelpBuffer(Glib::RefPtr<Gtk::TextBuffer> buffer);
void pathFolderChanged ();
void pathFolderButtonPressed ();

View File

@ -407,7 +407,7 @@ ControlSpotPanel::ControlSpotPanel():
avoidgamutMethod_->append(M("TP_LOCALLAB_GAMUTXYZABSO"));
avoidgamutMethod_->append(M("TP_LOCALLAB_GAMUTXYZRELA"));
avoidgamutMethod_->append(M("TP_LOCALLAB_GAMUTMUNSELL"));
avoidgamutMethod_->set_active(4);
avoidgamutMethod_->set_active(2);
avoidgamutconn_ = avoidgamutMethod_->signal_changed().connect(
sigc::mem_fun(
*this, &ControlSpotPanel::avoidgamutMethodChanged));
@ -660,7 +660,7 @@ void ControlSpotPanel::on_button_delete()
nbSpotChanged_ = true;
selSpotChanged_ = true;
eventType = SpotDeletion;
SpotRow* const delSpotRow = getSpot(selIndex);
const std::unique_ptr<SpotRow> delSpotRow = getSpot(selIndex);
listener->panelChanged(EvLocallabSpotDeleted, delSpotRow->name);
}
@ -682,7 +682,7 @@ void ControlSpotPanel::on_button_duplicate()
nbSpotChanged_ = true;
selSpotChanged_ = true;
eventType = SpotDuplication;
SpotRow* const duplSpotRow = getSpot(selIndex);
const std::unique_ptr<SpotRow> duplSpotRow = getSpot(selIndex);
listener->panelChanged(EvLocallabSpotCreated, M("TP_LOCALLAB_EV_DUPL") + " "
+ duplSpotRow->name);
}
@ -779,7 +779,7 @@ bool ControlSpotPanel::on_button_visibility(GdkEventButton* event)
// Raise event
visibilityChanged_ = true;
SpotRow* const spotRow = getSpot(getSelectedSpot());
const std::unique_ptr<SpotRow> spotRow = getSpot(getSelectedSpot());
if (row[spots_.isvisible]) {
listener->panelChanged(EvLocallabSpotVisibility, M("TP_LOCALLAB_EV_VIS") + " (" + spotRow->name + ")");
@ -896,7 +896,7 @@ void ControlSpotPanel::controlspotChanged()
selSpotChanged_ = true;
eventType = SpotSelection;
SpotRow* const spotRow = getSpot(selIndex);
const std::unique_ptr<SpotRow> spotRow = getSpot(selIndex);
// Image area shall be regenerated if mask or deltaE preview was active when switching spot
if (maskPrevActive || preview_->get_active()) {
@ -2535,13 +2535,16 @@ int ControlSpotPanel::getEventType()
return tmp;
}
ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(const int index)
std::unique_ptr<ControlSpotPanel::SpotRow> ControlSpotPanel::getSpot(const int index)
{
// TODO: Return an std::optional<ControlSpotPanel::SpotRow> after upgrading
// to C++17.
// printf("getSpot: %d\n", index);
MyMutex::MyLock lock(mTreeview);
SpotRow* r = new SpotRow();
std::unique_ptr<SpotRow> r(new SpotRow());
int i = -1;
@ -2676,58 +2679,58 @@ void ControlSpotPanel::resetDeltaEPreview()
previewConn_.block(false);
}
void ControlSpotPanel::addControlSpot(SpotRow* newSpot)
void ControlSpotPanel::addControlSpot(const SpotRow &newSpot)
{
// printf("addControlSpot: %d\n", newSpot->name);
// printf("addControlSpot: %d\n", newSpot.name);
MyMutex::MyLock lock(mTreeview);
disableParamlistener(true);
Gtk::TreeModel::Row row = *(treemodel_->append());
row[spots_.mouseover] = false;
row[spots_.name] = newSpot->name;
row[spots_.isvisible] = newSpot->isvisible;
row[spots_.name] = newSpot.name;
row[spots_.isvisible] = newSpot.isvisible;
row[spots_.curveid] = 0; // No associated curve
row[spots_.prevMethod] = newSpot->prevMethod;
row[spots_.shape] = newSpot->shape;
row[spots_.spotMethod] = newSpot->spotMethod;
row[spots_.sensiexclu] = newSpot->sensiexclu;
row[spots_.structexclu] = newSpot->structexclu;
row[spots_.shapeMethod] = newSpot->shapeMethod;
row[spots_.locX] = newSpot->locX;
row[spots_.locXL] = newSpot->locXL;
row[spots_.locY] = newSpot->locY;
row[spots_.locYT] = newSpot->locYT;
row[spots_.centerX] = newSpot->centerX;
row[spots_.centerY] = newSpot->centerY;
row[spots_.circrad] = newSpot->circrad;
row[spots_.qualityMethod] = newSpot->qualityMethod;
row[spots_.transit] = newSpot->transit;
row[spots_.transitweak] = newSpot->transitweak;
row[spots_.transitgrad] = newSpot->transitgrad;
row[spots_.feather] = newSpot->feather;
row[spots_.struc] = newSpot->struc;
row[spots_.thresh] = newSpot->thresh;
row[spots_.iter] = newSpot->iter;
row[spots_.balan] = newSpot->balan;
row[spots_.balanh] = newSpot->balanh;
row[spots_.colorde] = newSpot->colorde;
row[spots_.colorscope] = newSpot->colorscope;
row[spots_.avoidrad] = newSpot->avoidrad;
row[spots_.hishow] = newSpot->hishow;
row[spots_.activ] = newSpot->activ;
row[spots_.blwh] = newSpot->blwh;
row[spots_.recurs] = newSpot->recurs;
row[spots_.laplac] = newSpot->laplac;
row[spots_.deltae] = newSpot->deltae;
row[spots_.scopemask] = newSpot->scopemask;
row[spots_.denoichmask] = newSpot->denoichmask;
row[spots_.shortc] = newSpot->shortc;
row[spots_.lumask] = newSpot->lumask;
//row[spots_.savrest] = newSpot->savrest;
row[spots_.complexMethod] = newSpot->complexMethod;
row[spots_.wavMethod] = newSpot->wavMethod;
row[spots_.avoidgamutMethod] = newSpot->avoidgamutMethod;
row[spots_.prevMethod] = newSpot.prevMethod;
row[spots_.shape] = newSpot.shape;
row[spots_.spotMethod] = newSpot.spotMethod;
row[spots_.sensiexclu] = newSpot.sensiexclu;
row[spots_.structexclu] = newSpot.structexclu;
row[spots_.shapeMethod] = newSpot.shapeMethod;
row[spots_.locX] = newSpot.locX;
row[spots_.locXL] = newSpot.locXL;
row[spots_.locY] = newSpot.locY;
row[spots_.locYT] = newSpot.locYT;
row[spots_.centerX] = newSpot.centerX;
row[spots_.centerY] = newSpot.centerY;
row[spots_.circrad] = newSpot.circrad;
row[spots_.qualityMethod] = newSpot.qualityMethod;
row[spots_.transit] = newSpot.transit;
row[spots_.transitweak] = newSpot.transitweak;
row[spots_.transitgrad] = newSpot.transitgrad;
row[spots_.feather] = newSpot.feather;
row[spots_.struc] = newSpot.struc;
row[spots_.thresh] = newSpot.thresh;
row[spots_.iter] = newSpot.iter;
row[spots_.balan] = newSpot.balan;
row[spots_.balanh] = newSpot.balanh;
row[spots_.colorde] = newSpot.colorde;
row[spots_.colorscope] = newSpot.colorscope;
row[spots_.avoidrad] = newSpot.avoidrad;
row[spots_.hishow] = newSpot.hishow;
row[spots_.activ] = newSpot.activ;
row[spots_.blwh] = newSpot.blwh;
row[spots_.recurs] = newSpot.recurs;
row[spots_.laplac] = newSpot.laplac;
row[spots_.deltae] = newSpot.deltae;
row[spots_.scopemask] = newSpot.scopemask;
row[spots_.denoichmask] = newSpot.denoichmask;
row[spots_.shortc] = newSpot.shortc;
row[spots_.lumask] = newSpot.lumask;
//row[spots_.savrest] = newSpot.savrest;
row[spots_.complexMethod] = newSpot.complexMethod;
row[spots_.wavMethod] = newSpot.wavMethod;
row[spots_.avoidgamutMethod] = newSpot.avoidgamutMethod;
updateParamVisibility();
disableParamlistener(false);

View File

@ -21,6 +21,8 @@
#ifndef _CONTROLSPOTPANEL_H_
#define _CONTROLSPOTPANEL_H_
#include <memory>
#include "../rtengine/coord.h"
#include "editcallbacks.h"
#include "threadutils.h"
@ -141,7 +143,7 @@ public:
* @param index The spot index to get params
* @return A SpotRow structure containing params of associated spot
*/
SpotRow* getSpot(const int index);
std::unique_ptr<SpotRow> getSpot(const int index);
/**
* Getter of spots number
*
@ -187,7 +189,7 @@ public:
*
* @param newSpot A SpotRow structure containing new spot params
*/
void addControlSpot(SpotRow* newSpot);
void addControlSpot(const SpotRow &newSpot);
// Control spot delete function
/**

View File

@ -43,6 +43,32 @@
using namespace rtengine;
namespace {
inline double zoomLimitToFraction(Options::MaxZoom z) {
switch (z) {
case Options::MaxZoom::PERCENTS_100:
return 1.;
case Options::MaxZoom::PERCENTS_200:
return 2.;
case Options::MaxZoom::PERCENTS_300:
return 3.;
case Options::MaxZoom::PERCENTS_400:
return 4.;
case Options::MaxZoom::PERCENTS_500:
return 5.;
case Options::MaxZoom::PERCENTS_600:
return 6.;
case Options::MaxZoom::PERCENTS_700:
return 7.;
case Options::MaxZoom::PERCENTS_800:
return 8.;
case Options::MaxZoom::PERCENTS_1600:
default:
return 16.;
}
}
}
bool CropWindow::initialized = false;
Glib::ustring CropWindow::zoomOuttt;
@ -2287,13 +2313,18 @@ void CropWindow::updateHoveredPicker (rtengine::Coord *imgPos)
}
void CropWindow::changeZoom (int zoom, bool notify, int centerx, int centery, bool needsRedraw)
{
if (zoom < 0) {
zoom = 0;
} else if (zoom > int(zoomSteps.size())-1) {
zoom = int(zoomSteps.size())-1;
}
// Limit zoom according to user preferences
double zoomLimit = zoomLimitToFraction(options.maxZoomLimit);
while(zoomSteps[zoom].zoom > zoomLimit && zoom != 0) {
--zoom;
}
cropZoom = zoom;
cropLabel = zoomSteps[cropZoom].label;

View File

@ -400,7 +400,9 @@ Gtk::TreePath DirBrowser::expandToDir (const Glib::ustring& absDirPath)
char* dcpy = strdup (absDirPath.c_str());
char* dir = strtok (dcpy, "/\\");
#ifdef _WIN32
int count = 0;
#endif
expandSuccess = true;
#ifndef _WIN32
@ -443,8 +445,9 @@ Gtk::TreePath DirBrowser::expandToDir (const Glib::ustring& absDirPath)
++ix;
++i;
}
#ifdef _WIN32
count++;
#endif
dir = strtok(nullptr, "/\\");
}

View File

@ -26,9 +26,11 @@
#include "editbuffer.h"
#include "guiutils.h"
#include "options.h"
#include "eventmapper.h"
#include "../rtengine/color.h"
#include "../rtengine/procparams.h"
#include "../rtengine/refreshmap.h"
using namespace rtengine;
using namespace rtengine::procparams;
@ -37,6 +39,9 @@ const Glib::ustring DirPyrDenoise::TOOL_NAME = "dirpyrdenoise";
DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, TOOL_NAME, M("TP_DIRPYRDENOISE_LABEL"), true, true), lastmedian(false)
{
const auto procEventMapper = ProcEventMapper::getInstance();
EvDPDNGain = procEventMapper->newEvent(ALLNORAW, "HISTORY_MSG_DIRPYRDENOISE_GAIN");
std::vector<GradientMilestone> milestones;
CurveListener::setMulti(true);
nextnresid = 0.;
@ -229,6 +234,11 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, TOOL_NAME, M("TP_DIRPY
pack_start( *hb11, Gtk::PACK_SHRINK, 1);
smethodconn = smethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrDenoise::smethodChanged) );
autoGain = Gtk::manage(new CheckBox(M("TP_DIRPYRDENOISE_MAIN_AUTO_GAIN"), multiImage));
autoGain->set_tooltip_text(M("TP_DIRPYRDENOISE_MAIN_AUTO_GAIN_TOOLTIP"));
autoGain->setCheckBoxListener(this);
pack_start(*autoGain, Gtk::PACK_SHRINK, 0);
gamma = Gtk::manage (new Adjuster (M("TP_DIRPYRDENOISE_MAIN_GAMMA"), 1.0, 3.0, 0.01, 1.7));
gamma->set_tooltip_text (M("TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP"));
gamma->setAdjusterListener (this);
@ -570,6 +580,7 @@ void DirPyrDenoise::read (const ProcParams* pp, const ParamsEdited* pedited)
redchro->setEditedState (pedited->dirpyrDenoise.redchro ? Edited : UnEdited);
bluechro->setEditedState (pedited->dirpyrDenoise.bluechro ? Edited : UnEdited);
autoGain->set_inconsistent(!pedited->dirpyrDenoise.gain);
gamma->setEditedState (pedited->dirpyrDenoise.gamma ? Edited : UnEdited);
passes->setEditedState (pedited->dirpyrDenoise.passes ? Edited : UnEdited);
set_inconsistent (multiImage && !pedited->dirpyrDenoise.enabled);
@ -593,6 +604,7 @@ void DirPyrDenoise::read (const ProcParams* pp, const ParamsEdited* pedited)
redchro->setValue (pp->dirpyrDenoise.redchro);
bluechro->setValue (pp->dirpyrDenoise.bluechro);
autoGain->setValue(pp->dirpyrDenoise.autoGain);
gamma->setValue (pp->dirpyrDenoise.gamma);
passes->setValue (pp->dirpyrDenoise.passes);
lshape->setCurve (pp->dirpyrDenoise.lcurve);
@ -631,6 +643,7 @@ void DirPyrDenoise::write (ProcParams* pp, ParamsEdited* pedited)
pp->dirpyrDenoise.chroma = chroma->getValue ();
pp->dirpyrDenoise.redchro = redchro->getValue ();
pp->dirpyrDenoise.bluechro = bluechro->getValue ();
pp->dirpyrDenoise.autoGain = autoGain->get_active();
pp->dirpyrDenoise.gamma = gamma->getValue ();
pp->dirpyrDenoise.passes = passes->getValue ();
pp->dirpyrDenoise.enabled = getEnabled();
@ -653,6 +666,7 @@ void DirPyrDenoise::write (ProcParams* pp, ParamsEdited* pedited)
pedited->dirpyrDenoise.chroma = chroma->getEditedState ();
pedited->dirpyrDenoise.redchro = redchro->getEditedState ();
pedited->dirpyrDenoise.bluechro = bluechro->getEditedState ();
pedited->dirpyrDenoise.gain = !autoGain->get_inconsistent();
pedited->dirpyrDenoise.gamma = gamma->getEditedState ();
pedited->dirpyrDenoise.passes = passes->getEditedState ();
pedited->dirpyrDenoise.enabled = !get_inconsistent();
@ -992,6 +1006,13 @@ void DirPyrDenoise::adjusterChanged(Adjuster* a, double newval)
}
}
void DirPyrDenoise::checkBoxToggled(CheckBox* c, CheckValue newval)
{
if (c == autoGain) {
listener->panelChanged(EvDPDNGain, c->getValueAsStr());
}
}
void DirPyrDenoise::enabledChanged ()
{

View File

@ -21,6 +21,7 @@
#include <gtkmm.h>
#include "adjuster.h"
#include "checkbox.h"
#include "colorprovider.h"
#include "curvelistener.h"
#include "guiutils.h"
@ -34,6 +35,7 @@ class EditDataProvider;
class DirPyrDenoise final :
public ToolParamBlock,
public AdjusterListener,
public CheckBoxListener,
public FoldableToolPanel,
public rtengine::AutoChromaListener,
public CurveListener,
@ -54,6 +56,7 @@ public:
void autoOpenCurve () override;
void adjusterChanged (Adjuster* a, double newval) override;
void checkBoxToggled(CheckBox* c, CheckValue newval) override;
void enabledChanged () override;
void medianChanged ();
void chromaChanged (double autchroma, double autred, double autblue) override;
@ -83,6 +86,7 @@ public:
Glib::ustring getSettingString ();
private:
rtengine::ProcEvent EvDPDNGain;
CurveEditorGroup* NoiscurveEditorG;
CurveEditorGroup* CCcurveEditorG;
Adjuster* luma;
@ -90,6 +94,7 @@ private:
Adjuster* chroma;
Adjuster* redchro;
Adjuster* bluechro;
CheckBox* autoGain;
Adjuster* gamma;
Adjuster* passes;
FlatCurveEditor* lshape;

View File

@ -445,7 +445,7 @@ void FlatField::setGainMap(bool enabled) {
flatFieldFromMetaData->set_sensitive(enabled);
if (!enabled) {
idle_register.add(
[this, enabled]() -> bool
[this]() -> bool
{
disableListener();
flatFieldFromMetaData->setValue(false);

View File

@ -242,7 +242,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa
if (pp->lensProf.lfAutoMatch()) {
if (metadata) {
c = db->findCamera(metadata->getMake(), metadata->getModel());
c = db->findCamera(metadata->getMake(), metadata->getModel(), true);
setLensfunCamera(c.getMake(), c.getModel());
}
} else if (pp->lensProf.lfManual()) {
@ -521,7 +521,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged)
setLensfunLens("");
} else if (metadata) {
const LFDatabase* const db = LFDatabase::getInstance();
const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel());
const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel(), true);
const LFLens l = db->findLens(c, metadata->getLens());
setLensfunCamera(c.getMake(), c.getModel());
setLensfunLens(l.getLens());
@ -801,7 +801,7 @@ void LensProfilePanel::updateLensfunWarning()
return;
}
const LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]);
const LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model], false);
const auto itl = lensfunLenses->get_active();
if (!itl) {

View File

@ -241,113 +241,113 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
// TODO Manage it with read function in controlspotpanel.cc
// Add existent spots based on pp
ControlSpotPanel::SpotRow* const r = new ControlSpotPanel::SpotRow();
ControlSpotPanel::SpotRow r;
for (int i = 0; i < (int)pp->locallab.spots.size(); i++) {
r->name = pp->locallab.spots.at(i).name;
r->isvisible = pp->locallab.spots.at(i).isvisible;
r.name = pp->locallab.spots.at(i).name;
r.isvisible = pp->locallab.spots.at(i).isvisible;
if (pp->locallab.spots.at(i).shape == "ELI") {
r->shape = 0;
r.shape = 0;
} else {
r->shape = 1;
r.shape = 1;
}
if (pp->locallab.spots.at(i).prevMethod == "hide") {
r->prevMethod = 0;
r.prevMethod = 0;
} else {
r->prevMethod = 1;
r.prevMethod = 1;
}
if (pp->locallab.spots.at(i).spotMethod == "norm") {
r->spotMethod = 0;
r.spotMethod = 0;
} else if(pp->locallab.spots.at(i).spotMethod == "exc"){
r->spotMethod = 1;
r.spotMethod = 1;
} else if (pp->locallab.spots.at(i).spotMethod == "full"){
r->spotMethod = 2;
r.spotMethod = 2;
}
r->sensiexclu = pp->locallab.spots.at(i).sensiexclu;
r->structexclu = pp->locallab.spots.at(i).structexclu;
r.sensiexclu = pp->locallab.spots.at(i).sensiexclu;
r.structexclu = pp->locallab.spots.at(i).structexclu;
if (pp->locallab.spots.at(i).shapeMethod == "IND") {
r->shapeMethod = 0;
r.shapeMethod = 0;
} else if (pp->locallab.spots.at(i).shapeMethod == "SYM") {
r->shapeMethod = 1;
r.shapeMethod = 1;
} else if (pp->locallab.spots.at(i).shapeMethod == "INDSL") {
r->shapeMethod = 2;
r.shapeMethod = 2;
} else {
r->shapeMethod = 3;
r.shapeMethod = 3;
}
if (pp->locallab.spots.at(i).avoidgamutMethod == "NONE") {
r->avoidgamutMethod = 0;
r.avoidgamutMethod = 0;
} else if (pp->locallab.spots.at(i).avoidgamutMethod == "LAB") {
r->avoidgamutMethod = 1;
r.avoidgamutMethod = 1;
} else if (pp->locallab.spots.at(i).avoidgamutMethod == "XYZ") {
r->avoidgamutMethod= 2;
r.avoidgamutMethod= 2;
} else if (pp->locallab.spots.at(i).avoidgamutMethod == "XYZREL") {
r->avoidgamutMethod= 3;
r.avoidgamutMethod= 3;
} else if (pp->locallab.spots.at(i).avoidgamutMethod == "MUNS") {
r->avoidgamutMethod= 4;
r.avoidgamutMethod= 4;
}
r->locX = pp->locallab.spots.at(i).loc.at(0);
r->locXL = pp->locallab.spots.at(i).loc.at(1);
r->locY = pp->locallab.spots.at(i).loc.at(2);
r->locYT = pp->locallab.spots.at(i).loc.at(3);
r->centerX = pp->locallab.spots.at(i).centerX;
r->centerY = pp->locallab.spots.at(i).centerY;
r->circrad = pp->locallab.spots.at(i).circrad;
r.locX = pp->locallab.spots.at(i).loc.at(0);
r.locXL = pp->locallab.spots.at(i).loc.at(1);
r.locY = pp->locallab.spots.at(i).loc.at(2);
r.locYT = pp->locallab.spots.at(i).loc.at(3);
r.centerX = pp->locallab.spots.at(i).centerX;
r.centerY = pp->locallab.spots.at(i).centerY;
r.circrad = pp->locallab.spots.at(i).circrad;
if (pp->locallab.spots.at(i).qualityMethod == "enh") {
r->qualityMethod = 0;
r.qualityMethod = 0;
} else {
r->qualityMethod = 1;
r.qualityMethod = 1;
}
r->transit = pp->locallab.spots.at(i).transit;
r->transitweak = pp->locallab.spots.at(i).transitweak;
r->transitgrad = pp->locallab.spots.at(i).transitgrad;
r->feather = pp->locallab.spots.at(i).feather;
r->struc = pp->locallab.spots.at(i).struc;
r->thresh = pp->locallab.spots.at(i).thresh;
r->iter = pp->locallab.spots.at(i).iter;
r->balan = pp->locallab.spots.at(i).balan;
r->balanh = pp->locallab.spots.at(i).balanh;
r->colorde = pp->locallab.spots.at(i).colorde;
r->colorscope = pp->locallab.spots.at(i).colorscope;
r->avoidrad = pp->locallab.spots.at(i).avoidrad;
r->hishow = pp->locallab.spots.at(i).hishow;
r->activ = pp->locallab.spots.at(i).activ;
r->blwh = pp->locallab.spots.at(i).blwh;
r->recurs = pp->locallab.spots.at(i).recurs;
r->laplac = true; //pp->locallab.spots.at(i).laplac;
r->deltae = pp->locallab.spots.at(i).deltae;
r->scopemask = pp->locallab.spots.at(i).scopemask;
r->denoichmask = pp->locallab.spots.at(i).denoichmask;
r->shortc = pp->locallab.spots.at(i).shortc;
r->lumask = pp->locallab.spots.at(i).lumask;
//r->savrest = pp->locallab.spots.at(i).savrest;
r.transit = pp->locallab.spots.at(i).transit;
r.transitweak = pp->locallab.spots.at(i).transitweak;
r.transitgrad = pp->locallab.spots.at(i).transitgrad;
r.feather = pp->locallab.spots.at(i).feather;
r.struc = pp->locallab.spots.at(i).struc;
r.thresh = pp->locallab.spots.at(i).thresh;
r.iter = pp->locallab.spots.at(i).iter;
r.balan = pp->locallab.spots.at(i).balan;
r.balanh = pp->locallab.spots.at(i).balanh;
r.colorde = pp->locallab.spots.at(i).colorde;
r.colorscope = pp->locallab.spots.at(i).colorscope;
r.avoidrad = pp->locallab.spots.at(i).avoidrad;
r.hishow = pp->locallab.spots.at(i).hishow;
r.activ = pp->locallab.spots.at(i).activ;
r.blwh = pp->locallab.spots.at(i).blwh;
r.recurs = pp->locallab.spots.at(i).recurs;
r.laplac = true; //pp->locallab.spots.at(i).laplac;
r.deltae = pp->locallab.spots.at(i).deltae;
r.scopemask = pp->locallab.spots.at(i).scopemask;
r.denoichmask = pp->locallab.spots.at(i).denoichmask;
r.shortc = pp->locallab.spots.at(i).shortc;
r.lumask = pp->locallab.spots.at(i).lumask;
//r.savrest = pp->locallab.spots.at(i).savrest;
if (pp->locallab.spots.at(i).complexMethod == "sim") {
r->complexMethod = 0;
r.complexMethod = 0;
} else if (pp->locallab.spots.at(i).complexMethod == "mod") {
r->complexMethod = 1;
r.complexMethod = 1;
} else if (pp->locallab.spots.at(i).complexMethod == "all") {
r->complexMethod = 2;
r.complexMethod = 2;
}
if (pp->locallab.spots.at(i).wavMethod == "D2") {
r->wavMethod = 0;
r.wavMethod = 0;
} else if (pp->locallab.spots.at(i).wavMethod == "D4") {
r->wavMethod = 1;
r.wavMethod = 1;
} else if (pp->locallab.spots.at(i).wavMethod == "D6") {
r->wavMethod = 2;
r.wavMethod = 2;
} else if (pp->locallab.spots.at(i).wavMethod == "D10") {
r->wavMethod = 3;
r.wavMethod = 3;
} else if (pp->locallab.spots.at(i).wavMethod == "D14") {
r->wavMethod = 4;
r.wavMethod = 4;
}
expsettings->addControlSpot(r);
@ -401,7 +401,6 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
const int spotPanelEvent = expsettings->getEventType();
int spotIndex;
ControlSpotPanel::SpotRow* r;
rtengine::procparams::LocallabParams::LocallabSpot* newSpot;
int imW, imH; // Size of image
@ -412,57 +411,57 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
int toolNb;
switch (spotPanelEvent) {
case (ControlSpotPanel::SpotCreation): // Spot creation event
case (ControlSpotPanel::SpotCreation): { // Spot creation event
// Spot creation (default initialization)
newSpot = new LocallabParams::LocallabSpot();
r = new ControlSpotPanel::SpotRow();
r->name = newSpot->name = M("TP_LOCALLAB_SPOTNAME");
r->isvisible = newSpot->isvisible;
ControlSpotPanel::SpotRow r;
r.name = newSpot->name = M("TP_LOCALLAB_SPOTNAME");
r.isvisible = newSpot->isvisible;
if (newSpot->shape == "ELI") {
r->shape = 0;
r.shape = 0;
} else {
r->shape = 1;
r.shape = 1;
}
if (newSpot->prevMethod == "hide") {
r->prevMethod = 0;
r.prevMethod = 0;
} else {
r->prevMethod = 1;
r.prevMethod = 1;
}
if (newSpot->spotMethod == "norm") {
r->spotMethod = 0;
r.spotMethod = 0;
} else if(newSpot->spotMethod == "exc") {
r->spotMethod = 1;
r.spotMethod = 1;
} else if(newSpot->spotMethod == "full") {
r->spotMethod = 2;
r.spotMethod = 2;
}
r->sensiexclu = newSpot->sensiexclu;
r->structexclu = newSpot->structexclu;
r.sensiexclu = newSpot->sensiexclu;
r.structexclu = newSpot->structexclu;
if (newSpot->shapeMethod == "IND") {
r->shapeMethod = 0;
r.shapeMethod = 0;
} else if (newSpot->shapeMethod == "SYM") {
r->shapeMethod = 1;
r.shapeMethod = 1;
} else if (newSpot->shapeMethod == "INDSL") {
r->shapeMethod = 2;
r.shapeMethod = 2;
} else {
r->shapeMethod = 3;
r.shapeMethod = 3;
}
if (newSpot->avoidgamutMethod == "NONE") {
r->avoidgamutMethod = 0;
r.avoidgamutMethod = 0;
} else if (newSpot->avoidgamutMethod == "LAB") {
r->avoidgamutMethod = 1;
r.avoidgamutMethod = 1;
} else if (newSpot->avoidgamutMethod == "XYZ") {
r->avoidgamutMethod = 2;
r.avoidgamutMethod = 2;
} else if (newSpot->avoidgamutMethod == "XYZREL") {
r->avoidgamutMethod = 3;
r.avoidgamutMethod = 3;
} else if (newSpot->avoidgamutMethod == "MUNS") {
r->avoidgamutMethod = 4;
r.avoidgamutMethod = 4;
}
// Calculate spot size and center position according to preview area
@ -483,63 +482,63 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
}
}
r->locX = newSpot->loc.at(0);
r->locXL = newSpot->loc.at(1);
r->locY = newSpot->loc.at(2);
r->locYT = newSpot->loc.at(3);
r->centerX = newSpot->centerX;
r->centerY = newSpot->centerY;
r.locX = newSpot->loc.at(0);
r.locXL = newSpot->loc.at(1);
r.locY = newSpot->loc.at(2);
r.locYT = newSpot->loc.at(3);
r.centerX = newSpot->centerX;
r.centerY = newSpot->centerY;
r->circrad = newSpot->circrad;
r.circrad = newSpot->circrad;
if (newSpot->qualityMethod == "enh") {
r->qualityMethod = 0;
r.qualityMethod = 0;
} else {
r->qualityMethod = 1;
r.qualityMethod = 1;
}
r->transit = newSpot->transit;
r->transitweak = newSpot->transitweak;
r->transitgrad = newSpot->transitgrad;
r->feather = newSpot->feather;
r->struc = newSpot->struc;
r->thresh = newSpot->thresh;
r->iter = newSpot->iter;
r->balan = newSpot->balan;
r->balanh = newSpot->balanh;
r->colorde = newSpot->colorde;
r->colorscope = newSpot->colorscope;
r->avoidrad = newSpot->avoidrad;
r->hishow = newSpot->hishow;
r->activ = newSpot->activ;
r->blwh = newSpot->blwh;
r->recurs = newSpot->recurs;
r->laplac = newSpot->laplac;
r->deltae = newSpot->deltae;
r->scopemask = newSpot->scopemask;
r->denoichmask = newSpot->denoichmask;
r->shortc = newSpot->shortc;
r->lumask = newSpot->lumask;
//r->savrest = newSpot->savrest;
r.transit = newSpot->transit;
r.transitweak = newSpot->transitweak;
r.transitgrad = newSpot->transitgrad;
r.feather = newSpot->feather;
r.struc = newSpot->struc;
r.thresh = newSpot->thresh;
r.iter = newSpot->iter;
r.balan = newSpot->balan;
r.balanh = newSpot->balanh;
r.colorde = newSpot->colorde;
r.colorscope = newSpot->colorscope;
r.avoidrad = newSpot->avoidrad;
r.hishow = newSpot->hishow;
r.activ = newSpot->activ;
r.blwh = newSpot->blwh;
r.recurs = newSpot->recurs;
r.laplac = newSpot->laplac;
r.deltae = newSpot->deltae;
r.scopemask = newSpot->scopemask;
r.denoichmask = newSpot->denoichmask;
r.shortc = newSpot->shortc;
r.lumask = newSpot->lumask;
//r.savrest = newSpot->savrest;
if (newSpot->complexMethod == "sim") {
r->complexMethod = 0;
r.complexMethod = 0;
} else if (newSpot->complexMethod == "mod") {
r->complexMethod = 1;
r.complexMethod = 1;
} else if (newSpot->complexMethod == "all") {
r->complexMethod = 2;
r.complexMethod = 2;
}
if (newSpot->wavMethod == "D2") {
r->wavMethod = 0;
r.wavMethod = 0;
} else if (newSpot->wavMethod == "D4") {
r->wavMethod = 1;
r.wavMethod = 1;
} else if (newSpot->wavMethod == "D6") {
r->wavMethod = 2;
r.wavMethod = 2;
} else if (newSpot->wavMethod == "D10") {
r->wavMethod = 3;
r.wavMethod = 3;
} else if (newSpot->wavMethod == "D14") {
r->wavMethod = 4;
r.wavMethod = 4;
}
expsettings->addControlSpot(r);
@ -584,6 +583,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
// Note: No need to manage pedited as batch mode is deactivated for Locallab
break;
}
case (ControlSpotPanel::SpotDeletion): // Spot deletion event
// Get deleted spot index in ProcParams and update it
@ -724,7 +724,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
break;
case (ControlSpotPanel::SpotDuplication): // Spot duplication event
case (ControlSpotPanel::SpotDuplication): { // Spot duplication event
newSpot = nullptr;
spotIndex = expsettings->getSelectedSpot();
@ -740,53 +740,53 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
}
// Spot creation (initialization at currently selected spot)
r = new ControlSpotPanel::SpotRow();
r->name = newSpot->name = newSpot->name + " - " + M("TP_LOCALLAB_DUPLSPOTNAME");
r->isvisible = newSpot->isvisible;
ControlSpotPanel::SpotRow r;
r.name = newSpot->name = newSpot->name + " - " + M("TP_LOCALLAB_DUPLSPOTNAME");
r.isvisible = newSpot->isvisible;
if (newSpot->shape == "ELI") {
r->shape = 0;
r.shape = 0;
} else {
r->shape = 1;
r.shape = 1;
}
if (newSpot->prevMethod == "hide") {
r->prevMethod = 0;
r.prevMethod = 0;
} else {
r->prevMethod = 1;
r.prevMethod = 1;
}
if (newSpot->spotMethod == "norm") {
r->spotMethod = 0;
r.spotMethod = 0;
} else if (newSpot->spotMethod == "exc") {
r->spotMethod = 1;
r.spotMethod = 1;
} else if (newSpot->spotMethod == "full") {
r->spotMethod = 2;
r.spotMethod = 2;
}
r->sensiexclu = newSpot->sensiexclu;
r->structexclu = newSpot->structexclu;
r.sensiexclu = newSpot->sensiexclu;
r.structexclu = newSpot->structexclu;
if (newSpot->shapeMethod == "IND") {
r->shapeMethod = 0;
r.shapeMethod = 0;
} else if (newSpot->shapeMethod == "SYM") {
r->shapeMethod = 1;
r.shapeMethod = 1;
} else if (newSpot->shapeMethod == "INDSL") {
r->shapeMethod = 2;
r.shapeMethod = 2;
} else {
r->shapeMethod = 3;
r.shapeMethod = 3;
}
//printf("n0=%f n1=%f n2=%f n3=%f\n", (double) newSpot->loc.at(0), (double) newSpot->loc.at(1), (double) newSpot->loc.at(2), (double) newSpot->loc.at(3));
if (newSpot->avoidgamutMethod == "NONE") {
r->avoidgamutMethod = 0;
r.avoidgamutMethod = 0;
} else if (newSpot->avoidgamutMethod == "LAB") {
r->avoidgamutMethod = 1;
r.avoidgamutMethod = 1;
} else if (newSpot->avoidgamutMethod== "XYZ") {
r->avoidgamutMethod = 2;
r.avoidgamutMethod = 2;
} else if (newSpot->avoidgamutMethod== "XYZREL") {
r->avoidgamutMethod = 3;
r.avoidgamutMethod = 3;
} else if (newSpot->avoidgamutMethod== "MUNS") {
r->avoidgamutMethod = 4;
r.avoidgamutMethod = 4;
}
//printf("n0=%f n1=%f n2=%f n3=%f\n", (double) newSpot->loc.at(0), (double) newSpot->loc.at(1), (double) newSpot->loc.at(2), (double) newSpot->loc.at(3));
@ -810,70 +810,71 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
}
}
if(r->spotMethod != 2) {
r->locX = newSpot->loc.at(0);
r->locXL = newSpot->loc.at(1);
r->locY = newSpot->loc.at(2);
r->locYT = newSpot->loc.at(3);
if(r.spotMethod != 2) {
r.locX = newSpot->loc.at(0);
r.locXL = newSpot->loc.at(1);
r.locY = newSpot->loc.at(2);
r.locYT = newSpot->loc.at(3);
} else {
r->locX = 3000.;
r->locXL = 3000.;
r->locY = 3000.;
r->locYT = 3000.;
r.locX = 3000.;
r.locXL = 3000.;
r.locY = 3000.;
r.locYT = 3000.;
}
r->centerX = newSpot->centerX;
r->centerY = newSpot->centerY;
r.centerX = newSpot->centerX;
r.centerY = newSpot->centerY;
r->circrad = newSpot->circrad;
r.circrad = newSpot->circrad;
if (newSpot->qualityMethod == "enh") {
r->qualityMethod = 0;
r.qualityMethod = 0;
} else {
r->qualityMethod = 1;
r.qualityMethod = 1;
}
r->transit = newSpot->transit;
r->transitweak = newSpot->transitweak;
r->transitgrad = newSpot->transitgrad;
r->feather = newSpot->feather;
r->struc = newSpot->struc;
r->thresh = newSpot->thresh;
r->iter = newSpot->iter;
r->balan = newSpot->balan;
r->balanh = newSpot->balanh;
r->colorde = newSpot->colorde;
r->colorscope = newSpot->colorscope;
r->avoidrad = newSpot->avoidrad;
r->activ = newSpot->activ;
r->blwh = newSpot->blwh;
r->recurs = newSpot->recurs;
r->laplac = newSpot->laplac;
r->deltae = newSpot->deltae;
r->scopemask = newSpot->scopemask;
r->denoichmask = newSpot->denoichmask;
r->shortc = newSpot->shortc;
r->lumask = newSpot->lumask;
//r->savrest = newSpot->savrest;
r.transit = newSpot->transit;
r.transitweak = newSpot->transitweak;
r.transitgrad = newSpot->transitgrad;
r.feather = newSpot->feather;
r.struc = newSpot->struc;
r.thresh = newSpot->thresh;
r.iter = newSpot->iter;
r.balan = newSpot->balan;
r.balanh = newSpot->balanh;
r.colorde = newSpot->colorde;
r.colorscope = newSpot->colorscope;
r.avoidrad = newSpot->avoidrad;
r.hishow = newSpot->hishow;
r.activ = newSpot->activ;
r.blwh = newSpot->blwh;
r.recurs = newSpot->recurs;
r.laplac = newSpot->laplac;
r.deltae = newSpot->deltae;
r.scopemask = newSpot->scopemask;
r.denoichmask = newSpot->denoichmask;
r.shortc = newSpot->shortc;
r.lumask = newSpot->lumask;
//r.savrest = newSpot->savrest;
if (newSpot->complexMethod == "sim") {
r->complexMethod = 0;
r.complexMethod = 0;
} else if (newSpot->complexMethod == "mod") {
r->complexMethod = 1;
r.complexMethod = 1;
} else if (newSpot->complexMethod == "all") {
r->complexMethod = 2;
r.complexMethod = 2;
}
if (newSpot->wavMethod == "D2") {
r->wavMethod = 0;
r.wavMethod = 0;
} else if (newSpot->wavMethod == "D4") {
r->wavMethod = 1;
r.wavMethod = 1;
} else if (newSpot->wavMethod == "D6") {
r->wavMethod = 2;
r.wavMethod = 2;
} else if (newSpot->wavMethod == "D10") {
r->wavMethod = 3;
r.wavMethod = 3;
} else if (newSpot->wavMethod == "D14") {
r->wavMethod = 4;
r.wavMethod = 4;
}
expsettings->addControlSpot(r);
@ -915,9 +916,10 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
// Note: No need to manage pedited as batch mode is deactivated for Locallab
break;
}
case (ControlSpotPanel::SpotAllVisibilityChanged): // Event when updating visibility of all spots
r = expsettings->getSpot(expsettings->getSelectedSpot());
case (ControlSpotPanel::SpotAllVisibilityChanged): { // Event when updating visibility of all spots
const auto r = expsettings->getSpot(expsettings->getSelectedSpot());
// ProcParams update
for (size_t i = 0; i < pp->locallab.spots.size(); i++) {
@ -927,10 +929,11 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
// Note: No need to manage pedited as batch mode is deactivated for Locallab
break;
}
default: // Spot or locallab GUI updated
if (pp->locallab.spots.size() > 0) {
r = expsettings->getSpot(expsettings->getSelectedSpot());
const auto r = expsettings->getSpot(expsettings->getSelectedSpot());
// ProcParams update
if (pp->locallab.selspot < (int)pp->locallab.spots.size()) {

View File

@ -2568,6 +2568,7 @@ LocallabExposure::LocallabExposure():
expfat(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_FATFRA")))),
fatamount(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATAMOUNT"), 1., 100., 1., 1.))),
fatdetail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATDETAIL"), -100., 300., 1., 0.))),
fatsatur(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_FATSAT")))),
norm(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
fatlevel(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATLEVEL"), 0.5, 2.0, 0.01, 1.))),
fatanchor(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 0.1, 100.0, 0.01, 50., Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
@ -2617,7 +2618,9 @@ LocallabExposure::LocallabExposure():
strmaskexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -2., 2., 0.05, 0.))),
angmaskexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180., 180., 0.1, 0.))),
mask2expCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
Lmaskexpshape(static_cast<DiagonalCurveEditor*>(mask2expCurveEditorG->addCurve(CT_Diagonal, "L(L)")))
Lmaskexpshape(static_cast<DiagonalCurveEditor*>(mask2expCurveEditorG->addCurve(CT_Diagonal, "L(L)"))),
Evlocallabtmosatur(ProcEventMapper::getInstance()->newEvent(AUTOEXP, "HISTORY_MSG_LOCAL_TMO_SATUR"))
{
set_orientation(Gtk::ORIENTATION_VERTICAL);
@ -2705,6 +2708,7 @@ LocallabExposure::LocallabExposure():
decaye->setAdjusterListener(this);
setExpandAlignProperties(exprecove, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
normConn = norm->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::normChanged));
fatsaturConn = fatsatur->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::fatsaturChanged));
inversexConn = inversex->signal_toggled().connect(sigc::mem_fun(*this, &LocallabExposure::inversexChanged));
inversex->set_tooltip_text(M("TP_LOCALLAB_INVERS_TOOLTIP"));
@ -2799,6 +2803,7 @@ LocallabExposure::LocallabExposure():
// fatBox->pack_start(*norm);
// fatBox->pack_start(*fatlevel);
fatBox->pack_start(*fatanchor);
fatBox->pack_start(*fatsatur);
// fatFrame->add(*fatBox);
expfat->add(*fatBox, false);
// pack_start(*fatFrame);
@ -2985,6 +2990,7 @@ void LocallabExposure::disableListener()
exnoiseMethodConn.block(true);
inversexConn.block(true);
normConn.block(true);
fatsaturConn.block(true);
showmaskexpMethodConn.block(true);
showmaskexpMethodConninv.block(true);
enaExpMaskConn.block(true);
@ -2999,6 +3005,7 @@ void LocallabExposure::enableListener()
exnoiseMethodConn.block(false);
inversexConn.block(false);
normConn.block(false);
fatsaturConn.block(false);
showmaskexpMethodConn.block(false);
showmaskexpMethodConninv.block(false);
enaExpMaskConn.block(false);
@ -3056,6 +3063,23 @@ void LocallabExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
structexp->setValue(spot.structexp);
blurexpde->setValue(spot.blurexpde);
expcomp->setValue(spot.expcomp);
if(expcomp->getValue()== 0.) {
black->hide();
hlcompr->hide();
hlcomprthresh->hide();
shadex->hide();
shcompr->hide();
expchroma->hide();
} else {
black->show();
hlcompr->show();
hlcomprthresh->show();
shadex->show();
shcompr->show();
expchroma->show();
}
black->setValue(spot.black);
hlcompr->setValue(spot.hlcompr);
hlcomprthresh->setValue(spot.hlcomprthresh);
@ -3067,6 +3091,7 @@ void LocallabExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
angexp->setValue(spot.angexp);
softradiusexp->setValue(spot.softradiusexp);
norm->set_active(spot.norm);
fatsatur->set_active(spot.fatsatur);
inversex->set_active(spot.inversex);
enaExpMask->set_active(spot.enaExpMask);
enaExpMaskaft->set_active(spot.enaExpMaskaft);
@ -3158,6 +3183,7 @@ void LocallabExposure::write(rtengine::procparams::ProcParams* pp, ParamsEdited*
spot.softradiusexp = softradiusexp->getValue();
spot.inversex = inversex->get_active();
spot.norm = norm->get_active();
spot.fatsatur = fatsatur->get_active();
spot.enaExpMask = enaExpMask->get_active();
spot.enaExpMaskaft = enaExpMaskaft->get_active();
spot.CCmaskexpcurve = CCmaskexpshape->getCurve();
@ -3353,6 +3379,22 @@ void LocallabExposure::adjusterChanged(Adjuster* a, double newval)
}
if (a == expcomp) {
if(expcomp->getValue()== 0.) {
black->hide();
hlcompr->hide();
hlcomprthresh->hide();
shadex->hide();
shcompr->hide();
expchroma->hide();
} else {
black->show();
hlcompr->show();
hlcomprthresh->show();
shadex->show();
shcompr->show();
expchroma->show();
}
if (listener) {
listener->panelChanged(Evlocallabexpcomp,
expcomp->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
@ -3747,6 +3789,21 @@ void LocallabExposure::normChanged()
}
}
void LocallabExposure::fatsaturChanged()
{
if (isLocActivated && exp->getEnabled()) {
if (listener) {
if (fatsatur->get_active()) {
listener->panelChanged(Evlocallabtmosatur,
M("GENERAL_ENABLED") + " (" + escapeHtmlChars(getSpotName()) + ")");
} else {
listener->panelChanged(Evlocallabtmosatur,
M("GENERAL_DISABLED") + " (" + escapeHtmlChars(getSpotName()) + ")");
}
}
}
}
void LocallabExposure::inversexChanged()
{

View File

@ -345,6 +345,7 @@ private:
MyExpander* const expfat;
Adjuster* const fatamount;
Adjuster* const fatdetail;
Gtk::CheckButton* const fatsatur;
Gtk::CheckButton* const norm;
Adjuster* const fatlevel;
Adjuster* const fatanchor;
@ -395,8 +396,9 @@ private:
Adjuster* const angmaskexp;
CurveEditorGroup* const mask2expCurveEditorG;
DiagonalCurveEditor* const Lmaskexpshape;
rtengine::ProcEvent Evlocallabtmosatur;
sigc::connection expMethodConn, exnoiseMethodConn, inversexConn, normConn, showmaskexpMethodConn, showmaskexpMethodConninv, enaExpMaskConn, enaExpMaskaftConn;
sigc::connection expMethodConn, exnoiseMethodConn, inversexConn, normConn, fatsaturConn, showmaskexpMethodConn, showmaskexpMethodConninv, enaExpMaskConn, enaExpMaskaftConn;
public:
LocallabExposure();
@ -429,6 +431,7 @@ private:
void exnoiseMethodChanged();
void inversexChanged();
void normChanged();
void fatsaturChanged();
void showmaskexpMethodChanged();
void showmaskexpMethodChangedinv();
void enaExpMaskChanged();

View File

@ -367,6 +367,7 @@ void Options::setDefaults()
fbShowDateTime = true;
fbShowBasicExif = true;
fbShowExpComp = false;
maxZoomLimit = MaxZoom::PERCENTS_1600;
#ifdef _WIN32
// use windows setting for visibility of hidden files/folders
SHELLFLAGSTATE sft = { 0 };
@ -1724,6 +1725,9 @@ void Options::readFromFile(Glib::ustring fname)
if (keyFile.has_key("GUI", "ZoomOnScroll")) {
zoomOnScroll = keyFile.get_boolean("GUI", "ZoomOnScroll");
}
if (keyFile.has_key("GUI", "MaxZoom")) {
maxZoomLimit = static_cast<MaxZoom>(keyFile.get_integer("GUI", "MaxZoom"));
}
}
if (keyFile.has_group("Crop Settings")) {
@ -2576,6 +2580,7 @@ void Options::saveToFile(Glib::ustring fname)
keyFile.set_integer("GUI", "Complexity", complexity);
keyFile.set_boolean("GUI", "InspectorWindow", inspectorWindow);
keyFile.set_boolean("GUI", "ZoomOnScroll", zoomOnScroll);
keyFile.set_integer("GUI", "MaxZoom", static_cast<int>(maxZoomLimit));
//Glib::ArrayHandle<int> crvopen = crvOpen;
//keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen);

View File

@ -367,6 +367,22 @@ public:
CropGuidesMode cropGuides;
bool cropAutoFit;
// Other options
// Maximum zoom
enum class MaxZoom: int {
PERCENTS_100 = 0,
PERCENTS_200,
PERCENTS_300,
PERCENTS_400,
PERCENTS_500,
PERCENTS_600,
PERCENTS_700,
PERCENTS_800,
PERCENTS_1600,
};
MaxZoom maxZoomLimit;
// Performance options
Glib::ustring clutsDir;
int rgbDenoiseThreadLimit; // maximum number of threads for the denoising tool ; 0 = use the maximum available

View File

@ -273,6 +273,7 @@ void ParamsEdited::set(bool v)
wb.itcwb_alg = v;
wb.itcwb_prim = v;
wb.itcwb_sampling = v;
wb.compat_version = v;
//colorShift.a = v;
//colorShift.b = v;
//lumaDenoise.enabled = v;
@ -297,6 +298,7 @@ void ParamsEdited::set(bool v)
dirpyrDenoise.chroma = v;
dirpyrDenoise.redchro = v;
dirpyrDenoise.bluechro = v;
dirpyrDenoise.gain = v;
dirpyrDenoise.gamma = v;
dirpyrDenoise.passes = v;
dirpyrDenoise.dmethod = v;
@ -987,6 +989,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
wb.itcwb_alg = wb.itcwb_alg && p.wb.itcwb_alg == other.wb.itcwb_alg;
wb.itcwb_prim = wb.itcwb_prim && p.wb.itcwb_prim == other.wb.itcwb_prim;
wb.itcwb_sampling = wb.itcwb_sampling && p.wb.itcwb_sampling == other.wb.itcwb_sampling;
wb.compat_version = wb.compat_version && p.wb.compat_version == other.wb.compat_version;
//colorShift.a = colorShift.a && p.colorShift.a == other.colorShift.a;
//colorShift.b = colorShift.b && p.colorShift.b == other.colorShift.b;
//lumaDenoise.enabled = lumaDenoise.enabled && p.lumaDenoise.enabled == other.lumaDenoise.enabled;
@ -1013,6 +1016,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
dirpyrDenoise.chroma = dirpyrDenoise.chroma && p.dirpyrDenoise.chroma == other.dirpyrDenoise.chroma;
dirpyrDenoise.redchro = dirpyrDenoise.redchro && p.dirpyrDenoise.redchro == other.dirpyrDenoise.redchro;
dirpyrDenoise.bluechro = dirpyrDenoise.bluechro && p.dirpyrDenoise.bluechro == other.dirpyrDenoise.bluechro;
dirpyrDenoise.gain = dirpyrDenoise.gain && p.dirpyrDenoise.autoGain == other.dirpyrDenoise.autoGain;
dirpyrDenoise.gamma = dirpyrDenoise.gamma && p.dirpyrDenoise.gamma == other.dirpyrDenoise.gamma;
dirpyrDenoise.passes = dirpyrDenoise.passes && p.dirpyrDenoise.passes == other.dirpyrDenoise.passes;
dirpyrDenoise.dmethod = dirpyrDenoise.dmethod && p.dirpyrDenoise.dmethod == other.dirpyrDenoise.dmethod;
@ -1261,6 +1265,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).gamm = locallab.spots.at(j).gamm && pSpot.gamm == otherSpot.gamm;
locallab.spots.at(j).fatamount = locallab.spots.at(j).fatamount && pSpot.fatamount == otherSpot.fatamount;
locallab.spots.at(j).fatdetail = locallab.spots.at(j).fatdetail && pSpot.fatdetail == otherSpot.fatdetail;
locallab.spots.at(j).fatsatur = locallab.spots.at(j).fatsatur && pSpot.fatsatur == otherSpot.fatsatur;
locallab.spots.at(j).fatanchor = locallab.spots.at(j).fatanchor && pSpot.fatanchor == otherSpot.fatanchor;
locallab.spots.at(j).fatlevel = locallab.spots.at(j).fatlevel && pSpot.fatlevel == otherSpot.fatlevel;
locallab.spots.at(j).recothrese = locallab.spots.at(j).recothrese && pSpot.recothrese == otherSpot.recothrese;
@ -2895,6 +2900,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.wb.temperature = dontforceSet && options.baBehav[ADDSET_WB_TEMPERATURE] ? toEdit.wb.temperature + mods.wb.temperature : mods.wb.temperature;
}
if (wb.compat_version) {
toEdit.wb.compat_version = mods.wb.compat_version;
}
//if (colorShift.a) toEdit.colorShift.a = dontforceSet && options.baBehav[ADDSET_CS_BLUEYELLOW] ? toEdit.colorShift.a + mods.colorShift.a : mods.colorShift.a;
//if (colorShift.b) toEdit.colorShift.b = dontforceSet && options.baBehav[ADDSET_CS_GREENMAGENTA] ? toEdit.colorShift.b + mods.colorShift.b : mods.colorShift.b;
//if (lumaDenoise.enabled) toEdit.lumaDenoise.enabled = mods.lumaDenoise.enabled;
@ -3146,6 +3155,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.dirpyrDenoise.bluechro = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE] ? toEdit.dirpyrDenoise.bluechro + mods.dirpyrDenoise.bluechro : mods.dirpyrDenoise.bluechro;
}
if (dirpyrDenoise.gain) {
toEdit.dirpyrDenoise.autoGain = mods.dirpyrDenoise.autoGain;
}
if (dirpyrDenoise.gamma) {
toEdit.dirpyrDenoise.gamma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_GAMMA] ? toEdit.dirpyrDenoise.gamma + mods.dirpyrDenoise.gamma : mods.dirpyrDenoise.gamma;
}
@ -4097,6 +4110,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).fatdetail = mods.locallab.spots.at(i).fatdetail;
}
if (locallab.spots.at(i).fatsatur) {
toEdit.locallab.spots.at(i).fatsatur = mods.locallab.spots.at(i).fatsatur;
}
if (locallab.spots.at(i).fatanchor) {
toEdit.locallab.spots.at(i).fatanchor = mods.locallab.spots.at(i).fatanchor;
}
@ -7658,6 +7675,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
fatdetail(v),
fatanchor(v),
fatlevel(v),
fatsatur(v),
recothrese(v),
lowthrese(v),
higthrese(v),
@ -8349,6 +8367,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
gamm = v;
fatamount = v;
fatdetail = v;
fatsatur = v;
fatanchor = v;
fatlevel = v;
recothrese = v;

View File

@ -255,6 +255,7 @@ struct WBParamsEdited {
bool itcwb_prim;
bool itcwb_sampling;
bool itcwb_green;
bool compat_version;
};
@ -326,6 +327,7 @@ struct DirPyrDenoiseParamsEdited {
bool chroma;
bool redchro;
bool bluechro;
bool gain;
bool gamma;
bool lcurve;
bool cccurve;
@ -565,6 +567,7 @@ public:
bool fatdetail;
bool fatanchor;
bool fatlevel;
bool fatsatur;
bool recothrese;
bool lowthrese;
bool higthrese;

View File

@ -705,7 +705,7 @@ Gtk::Widget* Preferences::getImageProcessingPanel ()
dirgrid->attach_next_to(*cameraProfilesDirLabel, *clutsDirLabel, Gtk::POS_BOTTOM, 1, 1);
dirgrid->attach_next_to(*cameraProfilesDir, *cameraProfilesDirLabel, Gtk::POS_RIGHT, 1, 1);
//Lens Profiles Dir
//Lens Profiles Dir
Gtk::Label *lensProfilesDirLabel = Gtk::manage(new Gtk::Label(M("PREFERENCES_LENSPROFILESDIR") + ":"));
lensProfilesDirLabel->set_tooltip_text(M("PREFERENCES_LENSPROFILESDIR_TOOLTIP"));
setExpandAlignProperties(lensProfilesDirLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
@ -752,6 +752,29 @@ Gtk::Widget* Preferences::getImageProcessingPanel ()
cropFrame->add(*cropGrid);
vbImageProcessing->pack_start(*cropFrame, Gtk::PACK_SHRINK, 4);
// Other: max zoom
{
Gtk::Frame *frame = Gtk::manage(new Gtk::Frame(M("GENERAL_OTHER")));
frame->set_label_align (0.025, 0.5);
Gtk::Grid *grid = Gtk::manage(new Gtk::Grid());
Gtk::Label *label = Gtk::manage(new Gtk::Label(M("PREFERENCES_MAX_ZOOM_TITLE") + ": ", Gtk::ALIGN_START));
label->set_line_wrap(true);
grid->attach(*label, 0, 0);
maxZoomCombo = Gtk::manage(new Gtk::ComboBoxText());
// Labels order matches to Options::MaxZoom enum
for (int i = 1; i <= 8; ++i) {
maxZoomCombo->append(Glib::ustring::compose("%100%%", i));
}
maxZoomCombo->append("1600%");
grid->attach(*maxZoomCombo, 1, 0, 1, 1);
frame->add(*grid);
vbImageProcessing->pack_start(*frame, Gtk::PACK_SHRINK, 4);
}
swImageProcessing->add(*vbImageProcessing);
return swImageProcessing;
@ -1973,6 +1996,7 @@ void Preferences::storePreferences()
moptions.cropGuides = Options::CropGuidesMode(cropGuidesCombo->get_active_row_number());
moptions.cropAutoFit = cropAutoFitCB->get_active();
moptions.maxZoomLimit = Options::MaxZoom(maxZoomCombo->get_active_row_number());
toolLocationPreference->updateOptions();
@ -2205,6 +2229,7 @@ void Preferences::fillPreferences()
cropGuidesCombo->set_active(moptions.cropGuides);
cropAutoFitCB->set_active(moptions.cropAutoFit);
maxZoomCombo->set_active(static_cast<int>(options.maxZoomLimit));
addc.block(false);
setc.block(false);

View File

@ -238,6 +238,8 @@ class Preferences final :
Gtk::ComboBoxText *cropGuidesCombo;
Gtk::CheckButton *cropAutoFitCB;
Gtk::ComboBoxText *maxZoomCombo;
Gtk::ComboBoxText *metadataSyncCombo;
Gtk::ComboBoxText *xmpSidecarCombo;

Some files were not shown because too many files have changed in this diff Show More