added "Auto White Balance temperature bias" feature

This new slider in the White Balance tools allows to alter the computation of
the "auto white balance" by "biasing" it towards warmer or cooler
temperatures. The bias is expressed as a percentage of the computed
temperature, so that the resuling temperature is given by
"computedTemp + computedTemp * bias".
This commit is contained in:
Alberto Griggio 2017-02-12 17:39:52 +01:00
parent 6b6c08028d
commit dca0e41f35
54 changed files with 276 additions and 74 deletions

View File

@ -1280,6 +1280,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2033,6 +2034,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_WAVELET_TON;Toning
!TP_WBALANCE_EQBLUERED;Blue/Red equalizer
!TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable.
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2
!TP_WBALANCE_WATER_HEADER;UnderWater

View File

@ -1197,6 +1197,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2041,5 +2042,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
!TP_WBALANCE_LED_LSI;LSI Lumelex 2040
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -934,6 +934,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2030,6 +2031,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -2070,3 +2070,10 @@ ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit obrázek obrazovce\nZkratka: <b>f</b>
ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: <b>+</b>
ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_444;WB - Temp bias
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -2067,3 +2067,10 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: <b>f</b>
ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: <b>+</b>
ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_444;WB - Temp bias
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -758,6 +758,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!HISTORY_SNAPSHOT;Snapshot
@ -2023,6 +2024,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_SPOTWB;Spot WB
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TEMPERATURE;Temperature
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1

View File

@ -676,6 +676,7 @@
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!HISTORY_SNAPSHOT;Snapshot
@ -2023,6 +2024,8 @@
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_SPOTWB;Spot WB
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TEMPERATURE;Temperature
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1

View File

@ -1674,6 +1674,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2100,4 +2101,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -2035,3 +2035,10 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: <b>f</b>
ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: <b>+</b>
ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_444;WB - Temp bias
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -929,6 +929,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -1547,6 +1547,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2041,4 +2042,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -1925,6 +1925,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2071,3 +2072,5 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -1209,6 +1209,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2036,6 +2037,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_WAVELET_TON;Toning
!TP_WBALANCE_EQBLUERED;Blue/Red equalizer
!TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable.
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2
!TP_WBALANCE_WATER_HEADER;UnderWater

View File

@ -2004,6 +2004,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2058,3 +2059,5 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
!TP_RETINEX_SKAL;Scale
!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -929,6 +929,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -1631,6 +1631,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2047,3 +2048,5 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -1631,6 +1631,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2047,3 +2048,5 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatura
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -1490,6 +1490,7 @@ ZOOMPANEL_ZOOMOUT;Удалить <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2043,4 +2044,6 @@ ZOOMPANEL_ZOOMOUT;Удалить <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -1657,6 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2176,4 +2177,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -1657,6 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2176,4 +2177,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TMTYPE;Compression method
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>Alt</b>-<b>f</b>

View File

@ -993,6 +993,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2037,6 +2038,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -931,6 +931,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -1918,6 +1918,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_425;Retinex - Log base
!HISTORY_MSG_427;Output rendering intent
!HISTORY_MSG_428;Monitor rendering intent
!HISTORY_MSG_444;WB - Temp bias
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@ -2043,3 +2044,5 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements.
!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
!TP_WAVELET_TON;Toning
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".

View File

@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_441;Retinex - Gain transmission
!HISTORY_MSG_442;Retinex - Scale
!HISTORY_MSG_443;Output Black Point Compensation
!HISTORY_MSG_444;WB - Temp bias
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TUNGSTEN;Tungsten
!TP_WBALANCE_WATER1;UnderWater 1
!TP_WBALANCE_WATER2;UnderWater 2

View File

@ -675,6 +675,7 @@ HISTORY_MSG_440;CbDL - Method
HISTORY_MSG_441;Retinex - Gain transmission
HISTORY_MSG_442;Retinex - Scale
HISTORY_MSG_443;Output Black Point Compensation
HISTORY_MSG_444;WB - Temp bias
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
HISTORY_SNAPSHOT;Snapshot
@ -2022,6 +2023,8 @@ TP_WBALANCE_SOLUX41;Solux 4100K
TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
TP_WBALANCE_SPOTWB;Spot WB
TP_WBALANCE_TEMPBIAS;AWB temperature bias
TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
TP_WBALANCE_TEMPERATURE;Temperature
TP_WBALANCE_TUNGSTEN;Tungsten
TP_WBALANCE_WATER1;UnderWater 1

View File

@ -57,10 +57,13 @@ public:
ColorTemp (double t, double g, double e, const Glib::ustring &m);
ColorTemp (double mulr, double mulg, double mulb, double e);
void update (const double rmul, const double gmul, const double bmul, const double equal)
void update (const double rmul, const double gmul, const double bmul, const double equal, const double tempBias=0.0)
{
this->equal = equal;
mul2temp (rmul, gmul, bmul, this->equal, temp, green);
if (tempBias != 0.0 && tempBias >= -1.0 && tempBias <= 1.0) {
temp += temp * tempBias;
}
}
void useDefaults (const double equal)
{

View File

@ -34,7 +34,7 @@ extern const Settings* settings;
ImProcCoordinator::ImProcCoordinator ()
: orig_prev(nullptr), oprevi(nullptr), oprevl(nullptr), nprevl(nullptr), previmg(nullptr), workimg(nullptr),
ncie(nullptr), imgsrc(nullptr), shmap(nullptr), lastAwbEqual(0.), ipf(&params, true), monitorIntent(RI_RELATIVE),
ncie(nullptr), imgsrc(nullptr), shmap(nullptr), lastAwbEqual(0.), lastAwbTempBias(0.0), ipf(&params, true), monitorIntent(RI_RELATIVE),
softProof(false), gamutCheck(false), scale(10), highDetailPreprocessComputed(false), highDetailRawComputed(false),
allocated(false), bwAutoR(-9000.f), bwAutoG(-9000.f), bwAutoB(-9000.f), CAMMean(NAN),
@ -284,15 +284,17 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
if (params.wb.method == "Camera") {
currWB = imgsrc->getWB ();
} else if (params.wb.method == "Auto") {
if (lastAwbEqual != params.wb.equal) {
if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) {
double rm, gm, bm;
imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1.) {
autoWB.update(rm, gm, bm, params.wb.equal);
autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias);
lastAwbEqual = params.wb.equal;
lastAwbTempBias = params.wb.tempBias;
} else {
lastAwbEqual = -1.;
lastAwbTempBias = 0.0;
autoWB.useDefaults(params.wb.equal);
}
@ -1011,21 +1013,23 @@ void ImProcCoordinator::progress (Glib::ustring str, int pr)
}*/
}
bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal)
bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias)
{
if (imgsrc) {
if (lastAwbEqual != equal) {
if (lastAwbEqual != equal || lastAwbTempBias != tempBias) {
// Issue 2500 MyMutex::MyLock lock(minit); // Also used in crop window
double rm, gm, bm;
imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1) {
autoWB.update(rm, gm, bm, equal);
autoWB.update(rm, gm, bm, equal, tempBias);
lastAwbEqual = equal;
lastAwbTempBias = tempBias;
} else {
lastAwbEqual = -1.;
autoWB.useDefaults(equal);
lastAwbTempBias = 0.0;
}
}
@ -1162,15 +1166,17 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
if (params.wb.method == "Camera") {
currWB = imgsrc->getWB ();
} else if (params.wb.method == "Auto") {
if (lastAwbEqual != params.wb.equal) {
if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) {
double rm, gm, bm;
imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1.) {
autoWB.update(rm, gm, bm, params.wb.equal);
autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias);
lastAwbEqual = params.wb.equal;
lastAwbTempBias = params.wb.tempBias;
} else {
lastAwbEqual = -1.;
lastAwbTempBias = 0.0;
autoWB.useDefaults(params.wb.equal);
}
}

View File

@ -69,6 +69,7 @@ protected:
ColorTemp autoWB;
double lastAwbEqual;
double lastAwbTempBias;
ImProcFunctions ipf;
@ -256,7 +257,7 @@ public:
DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow);
bool getAutoWB (double& temp, double& green, double equal);
bool getAutoWB (double& temp, double& green, double equal, double tempBias);
void getCamWB (double& temp, double& green);
void getSpotWB (int x, int y, int rectSize, double& temp, double& green);
void getAutoCrop (double ratio, int &x, int &y, int &w, int &h);

View File

@ -470,6 +470,7 @@ enum ProcEvent {
EvRetinexgaintransmission = 440,
EvLskal = 441,
EvOBPCompens = 442,
EvWBtempBias = 443,
NUMOFEVENTS
};

View File

@ -58,40 +58,40 @@ bool ToneCurveParams::HLReconstructionNecessary(LUTu &histRedRaw, LUTu &histGree
void WBParams::init()
{
// Creation of the different methods and its associated temperature value
wbEntries.push_back(new WBEntry("Camera" , WBT_CAMERA, M("TP_WBALANCE_CAMERA"), 0, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Auto" , WBT_AUTO, M("TP_WBALANCE_AUTO"), 0, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Daylight" , WBT_DAYLIGHT, M("TP_WBALANCE_DAYLIGHT"), 5300, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Cloudy" , WBT_CLOUDY, M("TP_WBALANCE_CLOUDY"), 6200, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Shade" , WBT_SHADE, M("TP_WBALANCE_SHADE"), 7600, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Water 1" , WBT_WATER, M("TP_WBALANCE_WATER1"), 35000, 0.3f, 1.1f));
wbEntries.push_back(new WBEntry("Water 2" , WBT_WATER, M("TP_WBALANCE_WATER2"), 48000, 0.63f, 1.38f));
wbEntries.push_back(new WBEntry("Tungsten" , WBT_TUNGSTEN, M("TP_WBALANCE_TUNGSTEN"), 2856, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F1" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO1"), 6430, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F2" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO2"), 4230, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F3" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO3"), 3450, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F4" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO4"), 2940, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F5" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO5"), 6350, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F6" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO6"), 4150, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F7" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO7"), 6500, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F8" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO8"), 5020, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F9" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO9"), 4330, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F10" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO10"), 5300, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F11" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO11"), 4000, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Fluo F12" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO12"), 3000, 1.f, 1.f));
wbEntries.push_back(new WBEntry("HMI Lamp" , WBT_LAMP, M("TP_WBALANCE_HMI"), 4800, 1.f, 1.f));
wbEntries.push_back(new WBEntry("GTI Lamp" , WBT_LAMP, M("TP_WBALANCE_GTI"), 5000, 1.f, 1.f));
wbEntries.push_back(new WBEntry("JudgeIII Lamp" , WBT_LAMP, M("TP_WBALANCE_JUDGEIII"), 5100, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Solux Lamp 3500K" , WBT_LAMP, M("TP_WBALANCE_SOLUX35"), 3480, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Solux Lamp 4100K" , WBT_LAMP, M("TP_WBALANCE_SOLUX41"), 3930, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47"), 4700, 1.f, 1.f));
wbEntries.push_back(new WBEntry("NG Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47_NG"), 4480, 1.f, 1.f));
wbEntries.push_back(new WBEntry("LED LSI Lumelex 2040", WBT_LED, M("TP_WBALANCE_LED_LSI"), 2970, 1.f, 1.f));
wbEntries.push_back(new WBEntry("LED CRS SP12 WWMR16" , WBT_LED, M("TP_WBALANCE_LED_CRS"), 3050, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Flash 5500K" , WBT_FLASH, M("TP_WBALANCE_FLASH55"), 5500, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Flash 6000K" , WBT_FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Flash 6500K" , WBT_FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Camera" , WBT_CAMERA, M("TP_WBALANCE_CAMERA"), 0, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Auto" , WBT_AUTO, M("TP_WBALANCE_AUTO"), 0, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Daylight" , WBT_DAYLIGHT, M("TP_WBALANCE_DAYLIGHT"), 5300, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Cloudy" , WBT_CLOUDY, M("TP_WBALANCE_CLOUDY"), 6200, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Shade" , WBT_SHADE, M("TP_WBALANCE_SHADE"), 7600, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Water 1" , WBT_WATER, M("TP_WBALANCE_WATER1"), 35000, 0.3f, 1.1f, 0.f));
wbEntries.push_back(new WBEntry("Water 2" , WBT_WATER, M("TP_WBALANCE_WATER2"), 48000, 0.63f, 1.38f, 0.f));
wbEntries.push_back(new WBEntry("Tungsten" , WBT_TUNGSTEN, M("TP_WBALANCE_TUNGSTEN"), 2856, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F1" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO1"), 6430, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F2" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO2"), 4230, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F3" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO3"), 3450, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F4" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO4"), 2940, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F5" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO5"), 6350, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F6" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO6"), 4150, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F7" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO7"), 6500, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F8" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO8"), 5020, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F9" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO9"), 4330, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F10" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO10"), 5300, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F11" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO11"), 4000, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Fluo F12" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO12"), 3000, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("HMI Lamp" , WBT_LAMP, M("TP_WBALANCE_HMI"), 4800, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("GTI Lamp" , WBT_LAMP, M("TP_WBALANCE_GTI"), 5000, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("JudgeIII Lamp" , WBT_LAMP, M("TP_WBALANCE_JUDGEIII"), 5100, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Solux Lamp 3500K" , WBT_LAMP, M("TP_WBALANCE_SOLUX35"), 3480, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Solux Lamp 4100K" , WBT_LAMP, M("TP_WBALANCE_SOLUX41"), 3930, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47"), 4700, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("NG Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47_NG"), 4480, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("LED LSI Lumelex 2040", WBT_LED, M("TP_WBALANCE_LED_LSI"), 2970, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("LED CRS SP12 WWMR16" , WBT_LED, M("TP_WBALANCE_LED_CRS"), 3050, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Flash 5500K" , WBT_FLASH, M("TP_WBALANCE_FLASH55"), 5500, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Flash 6000K" , WBT_FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f, 0.f));
wbEntries.push_back(new WBEntry("Flash 6500K" , WBT_FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f, 0.f));
// Should remain the last one
wbEntries.push_back(new WBEntry("Custom" , WBT_CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f));
wbEntries.push_back(new WBEntry("Custom" , WBT_CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f));
}
void WBParams::cleanup()
@ -1059,6 +1059,7 @@ void ProcParams::setDefaults ()
wb.temperature = 6504;
wb.green = 1.0;
wb.equal = 1.0;
wb.tempBias = 0.0;
colorappearance.enabled = false;
colorappearance.degree = 90;
colorappearance.autodegree = true;
@ -1985,6 +1986,10 @@ int ProcParams::save (const Glib::ustring &fname, const Glib::ustring &fname2, b
keyFile.set_double ("White Balance", "Equal", wb.equal);
}
if (!pedited || pedited->wb.tempBias) {
keyFile.set_double ("White Balance", "TemperatureBias", wb.tempBias);
}
/*
// save colorShift
if (!pedited || pedited->colorShift.a) keyFile.set_double ("Color Shift", "ChannelA", colorShift.a);
@ -4664,6 +4669,14 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited)
pedited->wb.equal = true;
}
}
if (keyFile.has_key ("White Balance", "TemperatureBias")) {
wb.tempBias = keyFile.get_double ("White Balance", "TemperatureBias");
if (pedited) {
pedited->wb.tempBias = true;
}
}
}
// load colorShift

View File

@ -546,8 +546,9 @@ public:
int temperature;
double green;
double equal;
double tempBias;
WBEntry(const Glib::ustring &p, enum WBTypes t, const Glib::ustring &l, int temp, double green, double equal) : ppLabel(p), type(t), GUILabel(l), temperature(temp), green(green), equal(equal) {};
WBEntry(const Glib::ustring &p, enum WBTypes t, const Glib::ustring &l, int temp, double green, double equal, double bias) : ppLabel(p), type(t), GUILabel(l), temperature(temp), green(green), equal(equal), tempBias(bias) {};
};
class WBParams
@ -559,6 +560,7 @@ public:
int temperature;
double green;
double equal;
double tempBias;
static void init();
static void cleanup();

View File

@ -469,7 +469,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
ALLNORAW, // EvcbdlMethod
RETINEX, // EvRetinexgaintransmission
RETINEX, // EvLskal
OUTPUTPROFILE // EvOBPCompens
OUTPUTPROFILE, // EvOBPCompens
ALLNORAW // EvWBtempBias
};

View File

@ -396,7 +396,7 @@ public:
* @return a pointer to the Crop object that handles the image data trough its own pipeline */
virtual DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) = 0;
virtual bool getAutoWB (double& temp, double& green, double equal) = 0;
virtual bool getAutoWB (double& temp, double& green, double equal, double tempBias) = 0;
virtual void getCamWB (double& temp, double& green) = 0;
virtual void getSpotWB (int x, int y, int rectSize, double& temp, double& green) = 0;
virtual void getAutoCrop (double ratio, int &x, int &y, int &w, int &h) = 0;

View File

@ -162,6 +162,7 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h,
tpp->greenAWBMul = avg_g / double(n);
tpp->blueAWBMul = avg_b / double(n);
tpp->wbEqual = wbEq;
tpp->wbTempBias = 0.0;
cTemp.mul2temp (tpp->redAWBMul, tpp->greenAWBMul, tpp->blueAWBMul, tpp->wbEqual, tpp->autoWBTemp, tpp->autoWBGreen);
}
@ -735,6 +736,7 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati
tpp->greenAWBMul = ri->get_rgb_cam(1, 0) * reds + ri->get_rgb_cam(1, 1) * greens + ri->get_rgb_cam(1, 2) * blues;
tpp->blueAWBMul = ri->get_rgb_cam(2, 0) * reds + ri->get_rgb_cam(2, 1) * greens + ri->get_rgb_cam(2, 2) * blues;
tpp->wbEqual = wbEq;
tpp->wbTempBias = 0.0;
ColorTemp cTemp;
cTemp.mul2temp(tpp->redAWBMul, tpp->greenAWBMul, tpp->blueAWBMul, tpp->wbEqual, tpp->autoWBTemp, tpp->autoWBGreen);
@ -776,7 +778,7 @@ Thumbnail::Thumbnail () :
camProfile(nullptr), thumbImg(nullptr),
camwbRed(1.0), camwbGreen(1.0), camwbBlue(1.0),
redAWBMul(-1.0), greenAWBMul(-1.0), blueAWBMul(-1.0),
autoWBTemp(2700), autoWBGreen(1.0), wbEqual(-1.0),
autoWBTemp(2700), autoWBGreen(1.0), wbEqual(-1.0), wbTempBias(0.0),
embProfileLength(0), embProfileData(nullptr), embProfile(nullptr),
redMultiplier(1.0), greenMultiplier(1.0), blueMultiplier(1.0),
defGain(1.0),
@ -839,11 +841,13 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
BENCHFUN
// check if the WB's equalizer value has changed
if (wbEqual < (params.wb.equal - 5e-4) || wbEqual > (params.wb.equal + 5e-4)) {
if (wbEqual < (params.wb.equal - 5e-4) || wbEqual > (params.wb.equal + 5e-4) || wbTempBias < (params.wb.tempBias - 5e-4) || wbTempBias > (params.wb.tempBias + 5e-4)) {
wbEqual = params.wb.equal;
wbTempBias = params.wb.tempBias;
// recompute the autoWB
ColorTemp cTemp;
cTemp.mul2temp (redAWBMul, greenAWBMul, blueAWBMul, wbEqual, autoWBTemp, autoWBGreen);
autoWBTemp += autoWBTemp * wbTempBias;
}
// compute WB multipliers
@ -1272,15 +1276,17 @@ void Thumbnail::getCamWB (double& temp, double& green)
green = currWB.getGreen ();
}
void Thumbnail::getAutoWB (double& temp, double& green, double equal)
void Thumbnail::getAutoWB (double& temp, double& green, double equal, double tempBias)
{
if (equal != wbEqual) {
if (equal != wbEqual || tempBias != wbTempBias) {
// compute the values depending on equal
ColorTemp cTemp;
wbEqual = equal;
wbTempBias = tempBias;
// compute autoWBTemp and autoWBGreen
cTemp.mul2temp(redAWBMul, greenAWBMul, blueAWBMul, wbEqual, autoWBTemp, autoWBGreen);
autoWBTemp += autoWBTemp * tempBias;
}
temp = autoWBTemp;

View File

@ -47,7 +47,7 @@ class Thumbnail
double camwbGreen;
double camwbBlue;
double redAWBMul, greenAWBMul, blueAWBMul; // multipliers for auto WB
double autoWBTemp, autoWBGreen, wbEqual; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified
double autoWBTemp, autoWBGreen, wbEqual, wbTempBias; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified
LUTu aeHistogram;
int aeHistCompression;
int embProfileLength;
@ -83,7 +83,7 @@ public:
static RawMetaDataLocation loadMetaDataFromRaw (const Glib::ustring& fname);
void getCamWB (double& temp, double& green);
void getAutoWB (double& temp, double& green, double equal);
void getAutoWB (double& temp, double& green, double equal, double tempBias);
void getAutoWBMultipliers (double& rm, double& gm, double& bm);
void getSpotWB (const procparams::ProcParams& params, int x, int y, int rect, double& temp, double& green);
void applyAutoExp (procparams::ProcParams& pparams);

View File

@ -160,7 +160,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
} else if (params.wb.method == "Auto") {
double rm, gm, bm;
imgsrc->getAutoWBMultipliers(rm, gm, bm);
currWB.update(rm, gm, bm, params.wb.equal);
currWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias);
}
NoiseCurve noiseLCurve;

View File

@ -115,6 +115,7 @@ enum {
ADDSET_RETI_VART,
ADDSET_RETI_GAM,
ADDSET_RETI_SLO,
ADDSET_WB_TEMPBIAS,
ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!!
};

View File

@ -152,7 +152,7 @@ void BatchToolPanelCoordinator::initSession ()
toneCurve->setAdjusterBehavior (false, false, false, false, false, false, false, false);
lcurve->setAdjusterBehavior (false, false, false);
whitebalance->setAdjusterBehavior (false, false, false);
whitebalance->setAdjusterBehavior (false, false, false, false);
vibrance->setAdjusterBehavior (false, false);
vignetting->setAdjusterBehavior (false, false, false, false);
colorappearance->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false);
@ -191,7 +191,7 @@ void BatchToolPanelCoordinator::initSession ()
toneCurve->setAdjusterBehavior (options.baBehav[ADDSET_TC_EXPCOMP], options.baBehav[ADDSET_TC_HLCOMPAMOUNT], options.baBehav[ADDSET_TC_HLCOMPTHRESH], options.baBehav[ADDSET_TC_BRIGHTNESS], options.baBehav[ADDSET_TC_BLACKLEVEL], options.baBehav[ADDSET_TC_SHCOMP], options.baBehav[ADDSET_TC_CONTRAST], options.baBehav[ADDSET_TC_SATURATION]);
lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST], options.baBehav[ADDSET_LC_CHROMATICITY]);
whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN], options.baBehav[ADDSET_WB_EQUAL]);
whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN], options.baBehav[ADDSET_WB_EQUAL], options.baBehav[ADDSET_WB_TEMPBIAS]);
vibrance->setAdjusterBehavior (options.baBehav[ADDSET_VIBRANCE_PASTELS], options.baBehav[ADDSET_VIBRANCE_SATURATED]);
vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT], options.baBehav[ADDSET_VIGN_RADIUS], options.baBehav[ADDSET_VIGN_STRENGTH], options.baBehav[ADDSET_VIGN_CENTER]);
colorappearance->setAdjusterBehavior (options.baBehav[ADDSET_CAT_DEGREE], options.baBehav[ADDSET_CAT_ADAPTSCENE], options.baBehav[ADDSET_CAT_ADAPTVIEWING], options.baBehav[ADDSET_CAT_BADPIX], options.baBehav[ADDSET_CAT_LIGHT], options.baBehav[ADDSET_CAT_CHROMA], options.baBehav[ADDSET_CAT_CONTRAST], options.baBehav[ADDSET_CAT_RSTPRO], options.baBehav[ADDSET_CAT_BRIGHT], options.baBehav[ADDSET_CAT_CONTRAST_Q], options.baBehav[ADDSET_CAT_CHROMA_S], options.baBehav[ADDSET_CAT_CHROMA_M], options.baBehav[ADDSET_CAT_HUE]);
@ -325,6 +325,10 @@ void BatchToolPanelCoordinator::initSession ()
pparams.wb.equal = 0;
}
if (options.baBehav[ADDSET_WB_TEMPBIAS]) {
pparams.wb.tempBias = 0;
}
if (options.baBehav[ADDSET_VIBRANCE_PASTELS]) {
pparams.vibrance.pastels = 0;
}
@ -856,11 +860,11 @@ void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const G
}
}
void BatchToolPanelCoordinator::getAutoWB (double& temp, double& green, double equal)
void BatchToolPanelCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias)
{
if (!selected.empty()) {
selected[0]->getAutoWB (temp, green, equal);
selected[0]->getAutoWB (temp, green, equal, tempBias);
}
}

View File

@ -60,7 +60,7 @@ public:
void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr);
// wbprovider interface
void getAutoWB (double& temp, double& green, double equal);
void getAutoWB (double& temp, double& green, double equal, double tempBias);
void getCamWB (double& temp, double& green);
// thumbnaillistener interface

View File

@ -604,6 +604,7 @@ void Options::setDefaults ()
0, // ADDSET_RETI_VART
0, // ADDSET_RETI_GAM
0, // ADDSET_RETI_SLO
0, // ADDSET_WB_TEMPBIAS
};
rtSettings.darkFramesPath = "";

View File

@ -215,6 +215,7 @@ void ParamsEdited::set (bool v)
wb.green = v;
wb.temperature = v;
wb.equal = v;
wb.tempBias = v;
//colorShift.a = v;
//colorShift.b = v;
//lumaDenoise.enabled = v;
@ -708,6 +709,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
wb.green = wb.green && p.wb.green == other.wb.green;
wb.equal = wb.equal && p.wb.equal == other.wb.equal;
wb.temperature = wb.temperature && p.wb.temperature == other.wb.temperature;
wb.tempBias = wb.tempBias && p.wb.tempBias == other.wb.tempBias;
//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;
@ -1587,6 +1589,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.wb.equal = dontforceSet && options.baBehav[ADDSET_WB_EQUAL] ? toEdit.wb.equal + mods.wb.equal : mods.wb.equal;
}
if (wb.tempBias) {
toEdit.wb.tempBias = dontforceSet && options.baBehav[ADDSET_WB_TEMPBIAS] ? toEdit.wb.tempBias + mods.wb.tempBias : mods.wb.tempBias;
}
if (wb.green) {
toEdit.wb.green = dontforceSet && options.baBehav[ADDSET_WB_GREEN] ? toEdit.wb.green + mods.wb.green : mods.wb.green;
}

View File

@ -234,6 +234,7 @@ public:
bool temperature;
bool green;
bool equal;
bool tempBias;
};
/*class ColorShiftParamsEdited {

View File

@ -231,6 +231,7 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
appendBehavList (mi, M("TP_WBALANCE_TEMPERATURE"), ADDSET_WB_TEMPERATURE, true);
appendBehavList (mi, M("TP_WBALANCE_GREEN"), ADDSET_WB_GREEN, true);
appendBehavList (mi, M("TP_WBALANCE_EQBLUERED"), ADDSET_WB_EQUAL, true);
appendBehavList (mi, M("TP_WBALANCE_TEMPBIAS"), ADDSET_WB_TEMPBIAS, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_COLORAPP_LABEL"));

View File

@ -184,7 +184,7 @@ const ProcParams& Thumbnail::getProcParamsU ()
pparams.wb.temperature = ct;
} else if (pparams.wb.method == "Auto") {
double ct;
getAutoWB (ct, pparams.wb.green, pparams.wb.equal);
getAutoWB (ct, pparams.wb.green, pparams.wb.equal, pparams.wb.tempBias);
pparams.wb.temperature = ct;
}
}
@ -669,7 +669,7 @@ const Glib::ustring& Thumbnail::getDateTimeString ()
return dateTimeString;
}
void Thumbnail::getAutoWB (double& temp, double& green, double equal)
void Thumbnail::getAutoWB (double& temp, double& green, double equal, double tempBias)
{
if (cfs.redAWBMul != -1.0) {
rtengine::ColorTemp ct(cfs.redAWBMul, cfs.greenAWBMul, cfs.blueAWBMul, equal);

View File

@ -125,7 +125,7 @@ public:
temp = green = -1.0;
}
}
void getAutoWB (double& temp, double& green, double equal);
void getAutoWB (double& temp, double& green, double equal, double tempBias);
void getSpotWB (int x, int y, int rect, double& temp, double& green)
{
if (tpp) {

View File

@ -252,10 +252,10 @@ public:
void writeOptions ();
// wbprovider interface
void getAutoWB (double& temp, double& green, double equal)
void getAutoWB (double& temp, double& green, double equal, double tempBias)
{
if (ipc) {
ipc->getAutoWB (temp, green, equal);
ipc->getAutoWB (temp, green, equal, tempBias);
}
}
void getCamWB (double& temp, double& green)

View File

@ -25,7 +25,7 @@ class WBProvider
public:
virtual ~WBProvider() {}
virtual void getAutoWB (double& temp, double& green, double equal) {}
virtual void getAutoWB (double& temp, double& green, double equal, double tempBias) {}
virtual void getCamWB (double& temp, double& green) {}
virtual void spotWBRequested (int size) {}
};

View File

@ -232,6 +232,7 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB
custom_green = 1.0;
custom_equal = 1.0;
custom_tempBias = 0.0;
}
//Add the model columns to the Combo (which is a kind of view),
@ -313,13 +314,17 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB
temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider));
green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR));
equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR));
tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0));
cache_customTemp (0);
cache_customGreen (0);
cache_customEqual (0);
cache_customTempBias (0);
equal->set_tooltip_markup (M("TP_WBALANCE_EQBLUERED_TOOLTIP"));
tempBias->set_tooltip_markup (M("TP_WBALANCE_TEMPBIAS_TOOLTIP"));
temp->show ();
green->show ();
equal->show ();
tempBias->show ();
/* Gtk::HBox* boxgreen = Gtk::manage (new Gtk::HBox ());
boxgreen->show ();
@ -332,10 +337,12 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB
//pack_start (*boxgreen);
pack_start (*green);
pack_start (*equal);
pack_start (*tempBias);
temp->setAdjusterListener (this);
green->setAdjusterListener (this);
equal->setAdjusterListener (this);
tempBias->setAdjusterListener (this);
spotbutton->signal_pressed().connect( sigc::mem_fun(*this, &WhiteBalance::spotPressed) );
methconn = method->signal_changed().connect( sigc::mem_fun(*this, &WhiteBalance::optChanged) );
@ -348,6 +355,7 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval)
int tVal = (int)temp->getValue();
double gVal = green->getValue();
double eVal = equal->getValue();
double tempBiasVal = tempBias->getValue();
Gtk::TreeModel::Row row = getActiveMethod();
if (row == refTreeModel->children().end()) {
@ -358,11 +366,16 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval)
WBEntry* ppMethod = findWBEntry (row[methodColumns.colLabel], WBLT_GUI);
WBEntry* wbCustom = findWBEntry ("Custom", WBLT_PP);
if (!ppMethod || (ppMethod->ppLabel != wbCustom->ppLabel && !(a == equal && ppMethod->type == WBT_AUTO)) ) {
if (!ppMethod || (ppMethod->ppLabel != wbCustom->ppLabel && !((a == equal || a == tempBias) && ppMethod->type == WBT_AUTO)) ) {
methconn.block(true);
opt = setActiveMethod(wbCustom->GUILabel);
cache_customWB (tVal, gVal);
cache_customEqual(eVal);
if (a != equal) {
cache_customEqual(eVal);
}
if (a != tempBias) {
cache_customTempBias(tempBiasVal);
}
methconn.block(false);
}
@ -373,12 +386,16 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval)
cache_customGreen (gVal);
} else if (a == equal) {
cache_customEqual (eVal);
} else if (a == tempBias) {
cache_customTempBias (tempBiasVal);
}
if (a == equal || a == tempBias) {
// Recomputing AutoWB if it's the current method
if (wbp && ppMethod->type == WBT_AUTO) {
double ctemp = -1.0;
double cgreen = -1.0;
wbp->getAutoWB (ctemp, cgreen, eVal);
wbp->getAutoWB (ctemp, cgreen, eVal, tempBiasVal);
if (ctemp != -1.0) {
// Set the automatics temperature value only if in SET mode
@ -401,6 +418,8 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval)
listener->panelChanged (EvWBGreen, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue()));
} else if (a == equal) {
listener->panelChanged (EvWBequal, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue()));
} else if (a == tempBias) {
listener->panelChanged (EvWBtempBias, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue()));
}
}
}
@ -442,11 +461,13 @@ void WhiteBalance::optChanged ()
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
green->setValue (green->getAddMode() ? 0.0 : cgreen);
equal->setValue (equal->getAddMode() ? 0.0 : 1.0);
tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0);
if (batchMode) {
temp->setEditedState (UnEdited);
green->setEditedState (UnEdited);
equal->setEditedState (UnEdited);
tempBias->setEditedState (UnEdited);
}
}
@ -460,9 +481,9 @@ void WhiteBalance::optChanged ()
// equal remain as is
}
if (!batchMode || equal->getEditedState()) {
if (!batchMode || equal->getEditedState() || tempBias->getEditedState()) {
double ctemp, cgreen;
wbp->getAutoWB (ctemp, cgreen, equal->getValue());
wbp->getAutoWB (ctemp, cgreen, equal->getValue(), tempBias->getValue());
if (ctemp != -1.0) {
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
@ -478,16 +499,19 @@ void WhiteBalance::optChanged ()
temp->setValue (temp->getAddMode() ? 0.0 : custom_temp);
green->setValue (green->getAddMode() ? 0.0 : custom_green);
equal->setValue (equal->getAddMode() ? 0.0 : custom_equal);
tempBias->setValue (tempBias->getAddMode() ? 0.0 : custom_tempBias);
} else {
cache_customTemp (temp->getValue());
cache_customGreen (green->getValue());
cache_customEqual (equal->getValue());
cache_customTempBias (tempBias->getValue());
}
if (batchMode) {
temp->setEditedState (Edited);
green->setEditedState (Edited);
equal->setEditedState (Edited);
tempBias->setEditedState (Edited);
}
break;
@ -506,11 +530,13 @@ void WhiteBalance::optChanged ()
temp->setValue ( temp->getAddMode() ? 0.0 : (double)(currMethod->temperature));
green->setValue (green->getAddMode() ? 0.0 : (double)(currMethod->green));
equal->setValue (equal->getAddMode() ? 0.0 : (double)(currMethod->equal));
tempBias->setValue (tempBias->getAddMode() ? 0.0 : (double)(currMethod->tempBias));
if (batchMode) {
temp->setEditedState (Edited);
green->setEditedState (Edited);
equal->setEditedState (Edited);
tempBias->setEditedState (Edited);
}
break;
@ -546,12 +572,14 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
methconn.block (true);
equal->setValue (pp->wb.equal);
tempBias->setValue (pp->wb.tempBias);
if (pedited) {
// By default, temperature and green are said "UnEdited", but it may change later
temp->setEditedState (UnEdited);
green->setEditedState (UnEdited);
equal->setEditedState (pedited->wb.equal ? Edited : UnEdited);
tempBias->setEditedState (pedited->wb.tempBias ? Edited : UnEdited);
}
if (pedited && !pedited->wb.method) {
@ -571,9 +599,11 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature);
green->setValue (green->getAddMode() ? 0.0 : pp->wb.green);
equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal);
tempBias->setValue (tempBias->getAddMode() ? 0.0 : pp->wb.tempBias);
cache_customTemp (pp->wb.temperature);
cache_customGreen (pp->wb.green);
cache_customEqual (pp->wb.equal);
cache_customTempBias (pp->wb.tempBias);
if (pedited) {
// The user may have changed the temperature and green value
@ -595,10 +625,12 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
// Set the camera's green value, or 0.0 if in ADD mode
green->setValue (green->getAddMode() ? 0.0 : cgreen);
equal->setValue (equal->getAddMode() ? 0.0 : 1.);
tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0);
} else {
temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature);
green->setValue (green->getAddMode() ? 0.0 : pp->wb.green);
equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal);
tempBias->setValue (equal->getAddMode() ? 0.0 : pp->wb.tempBias);
}
}
@ -607,7 +639,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
case WBT_AUTO:
// the equalizer's value is restored for the AutoWB
equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal);
tempBias->setValue (tempBias->getAddMode() ? 0.0 : pp->wb.tempBias);
// set default values first if in ADD mode, otherwise keep the current ones
if (temp->getAddMode() ) {
temp->setValue (0.0);
@ -621,7 +654,7 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
if (wbp) {
double ctemp = -1.0;
double cgreen = -1.0;
wbp->getAutoWB (ctemp, cgreen, pp->wb.equal);
wbp->getAutoWB (ctemp, cgreen, pp->wb.equal, pp->wb.tempBias);
if (ctemp != -1.0) {
// Set the automatics temperature if in SET mode
@ -663,11 +696,13 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited)
// Set the stored temperature, or 0.0 if in ADD mode
green->setValue(green->getAddMode() ? 0.0 : pp->wb.green);
equal->setValue(equal->getAddMode() ? 0.0 : pp->wb.equal);
tempBias->setValue(equal->getAddMode() ? 0.0 : pp->wb.tempBias);
// The user may have changed the green value even for predefined WB values
if (pedited) {
green->setEditedState (pedited->wb.green ? Edited : UnEdited);
equal->setEditedState (pedited->wb.equal ? Edited : UnEdited);
tempBias->setEditedState (pedited->wb.tempBias ? Edited : UnEdited);
}
//cache_customGreen (pp->wb.green);
@ -688,6 +723,7 @@ void WhiteBalance::write (ProcParams* pp, ParamsEdited* pedited)
pedited->wb.temperature = temp->getEditedState ();
pedited->wb.green = green->getEditedState ();
pedited->wb.equal = equal->getEditedState ();
pedited->wb.tempBias = tempBias->getEditedState ();
pedited->wb.method = row[methodColumns.colLabel] != M("GENERAL_UNCHANGED");
}
@ -700,11 +736,14 @@ void WhiteBalance::write (ProcParams* pp, ParamsEdited* pedited)
pp->wb.temperature = temp->getIntValue ();
pp->wb.green = green->getValue ();
pp->wb.equal = equal->getValue ();
pp->wb.tempBias = tempBias->getValue ();
}
void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
{
equal->setDefault (defParams->wb.equal);
tempBias->setDefault (defParams->wb.tempBias);
if (wbp && defParams->wb.method == "Camera") {
double ctemp;
@ -721,7 +760,7 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited*
// but wbp is not ready to provide!
double ctemp;
double cgreen;
wbp->getAutoWB (ctemp, cgreen, defParams->wb.equal);
wbp->getAutoWB (ctemp, cgreen, defParams->wb.equal, defParams->wb.tempBias);
if (ctemp != -1.0) {
temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp);
@ -740,10 +779,12 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited*
temp->setDefaultEditedState (pedited->wb.temperature ? Edited : UnEdited);
green->setDefaultEditedState (pedited->wb.green ? Edited : UnEdited);
equal->setDefaultEditedState (pedited->wb.equal ? Edited : UnEdited);
tempBias->setDefaultEditedState (pedited->wb.tempBias ? Edited : UnEdited);
} else {
temp->setDefaultEditedState (Irrelevant);
green->setDefaultEditedState (Irrelevant);
equal->setDefaultEditedState (Irrelevant);
tempBias->setDefaultEditedState (Irrelevant);
}
}
@ -754,6 +795,7 @@ void WhiteBalance::setBatchMode (bool batchMode)
temp->showEditedCB ();
green->showEditedCB ();
equal->showEditedCB ();
tempBias->showEditedCB ();
Gtk::TreeModel::Row row = *(refTreeModel->append());
row[methodColumns.colId] = WBParams::wbEntries.size();
row[methodColumns.colLabel] = M("GENERAL_UNCHANGED");
@ -776,6 +818,7 @@ void WhiteBalance::setWB (int vtemp, double vgreen)
opt = setActiveMethod(wbValues->GUILabel);
cache_customWB (vtemp, vgreen); // sequence in which this call is made is important; must be before "method->set_active (2);"
cache_customEqual(equal->getValue());
cache_customTempBias(tempBias->getValue());
temp->setEditedState (Edited);
green->setEditedState (Edited);
methconn.block(false);
@ -785,12 +828,13 @@ void WhiteBalance::setWB (int vtemp, double vgreen)
}
}
void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd)
void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd)
{
temp->setAddMode(tempadd);
green->setAddMode(greenadd);
equal->setAddMode(equaladd);
tempBias->setAddMode(tempbiasadd);
}
void WhiteBalance::trimValues (rtengine::procparams::ProcParams* pp)
@ -799,6 +843,7 @@ void WhiteBalance::trimValues (rtengine::procparams::ProcParams* pp)
temp->trimValue(pp->wb.temperature);
green->trimValue(pp->wb.green);
equal->trimValue(pp->wb.equal);
tempBias->trimValue(pp->wb.tempBias);
}
inline void WhiteBalance::cache_customTemp(int temp)
@ -815,6 +860,11 @@ void WhiteBalance::cache_customEqual(double equal)
custom_equal = equal;
}
void WhiteBalance::cache_customTempBias(double tempBias)
{
custom_tempBias = tempBias;
}
void WhiteBalance::cache_customWB(int temp, double green)
{
cache_customTemp (temp);

View File

@ -65,6 +65,7 @@ protected:
Adjuster* temp;
Adjuster* green;
Adjuster* equal;
Adjuster* tempBias;
Gtk::Button* spotbutton;
int opt;
@ -76,10 +77,12 @@ protected:
int custom_temp;
double custom_green;
double custom_equal;
double custom_tempBias;
void cache_customWB (int temp, double green); //cache custom WB setting to allow its recall
void cache_customTemp (int temp); //cache Temperature only to allow its recall
void cache_customGreen (double green); //cache Green only to allow its recall
void cache_customEqual (double equal); //cache Equal only to allow its recall
void cache_customTempBias (double tempBias); //cache TempBias only to allow its recall
int setActiveMethod (Glib::ustring label);
int _setActiveMethod (Glib::ustring &label, Gtk::TreeModel::Children &children);
@ -115,7 +118,7 @@ public:
}
void setWB (int temp, double green);
void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd);
void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};