558 Commits

Author SHA1 Message Date
Lawrence37
f9e8fb4124
Merge pull request #5887 from Beep6581/waveform
Waveform, RGB parade, and vectorscopes
2020-10-23 09:57:40 -07:00
Desmis
21758da234 Suppress TRC working profile 2020-10-05 13:03:07 +02:00
Lawrence Lee
b8af429f0e Prevent null pointer access
Thanks to Ingo for fixing the segfault.
2020-09-28 22:17:49 -07:00
Lawrence Lee
6e7185081a Fix scaling of H-C vectorscope 2020-09-22 22:10:57 -07:00
Lawrence Lee
af29bf84e6 Fix cppcheck warnings for uninitialized variables 2020-09-13 12:33:25 -07:00
Lawrence Lee
c03efe4878 Add dedicated buttons for scope switching
Previously, changing to a different scope was done by clicking the scope
type button and cycling through all scopes. This commit decreases the
number of clicks needed to switch between two scopes by adding a radio
selector. The radio buttons can be shown or hidden by pressing the scope
type button. This commit also makes the raw histogram one of the scope
types.
2020-09-12 17:52:24 -07:00
Desmis
467bac3dea
Wavelet levels: denoise and guided filter with hue curve and local contrast (#5894)
* First wavelet denoise

* Gui for wavel denoise

* First version local contrast and denoise

* Second version local contrast and denoise

* second version GUI equalizer

* enable equalizer local contrast denoise 1234

* change local contrast curve defaut

* disable local contrast when curve 1

* denmethod in advanced - standard

* Simulate slider denoise with curve

* Some various chnages

* Chnage reference local contrast

* GUI part reference local contrast

* Enable reference noise mix denoise for local contrast denoise

* Improvment to reference local contrast denoise

* Display comment in console

* Best format string in console

* Change agressive denoise limit to 50 - added tooltip

* Added method quality denoise - change madL in ftblockdn

* Change equalizer 1234 settings - added high level local contrast

* added high levels local contrast curve

* Fixed sigma local contrast

* clean format code

* Some improvments

* normalize level slider high level threshold

* change ordonate curve high level contrast

* Fixed bad level for curve high levels - simplify GUI standard

* several changes - guidefilter final - new double slider threshold

* save provisory work

* save GUI work GF threshold

* save provisory work

* Fixed some bad behavior GUI

* save GUI Hue GF

* Curve Hue for GF

* OMP for hue GF

* addes noisevarhue and fixed some bug

* save GUI equalizer hue

* enable equalizer hue

* Fixed bad behavior GUI in advanced mode

* change some default values

* Others change default values

* Change in progressivity slider threshold local contrast

* simplifie algorithm and GUI

* Added tooltip and chnage some labels

* Change labels and tooltip wavelet denoise

* added level 5 denoise

* Change typo in label guided theshold

* Various changes labels tooltip

* Change minimum wavelet level

* Added level 5 to denoise

* Change slider sigm for a double slider sigm03 sigm45

* small delay for double slider sigm

* Fixed wrong values sigm

* Hide level56 in standard complexity

* Improve in standard complexity

* Various improvment levels 14

* interaction 56 14 - advanced complexity
2020-08-30 08:16:31 +02:00
Lawrence Lee
b2942fd949 Improve performance of scopes
If a scope update is requested, don't recalculate scope data if it is
already up-to-date.

Eliminate double and triple scope rendering.
2020-08-28 22:33:52 -07:00
Ingo Weyrich
6c2463889b Revert "CH vectorscope: speedup by avoiding conversions"
This reverts commit cfc1e66024684da5b48a43ee11f20ae52802a4ea.
2020-08-20 12:31:37 +02:00
Ingo Weyrich
cfc1e66024 CH vectorscope: speedup by avoiding conversions 2020-08-19 14:00:09 +02:00
Ingo Weyrich
e667e3dce7 Removed timing code and some includes 2020-08-16 21:34:11 +02:00
Ingo Weyrich
2858876f44 use array2D.fill() instead of memset() 2020-08-16 17:19:59 +02:00
Ingo Weyrich
9e040b3bc2 ImProcCoordinator::updateVectorscope(): parallelize loops 2020-08-16 11:46:17 +02:00
Flössie
c5ace05df8 Merge branch 'dev' into waveform 2020-08-16 10:08:28 +02:00
Ingo Weyrich
e67b02da8b further cleanups 2020-08-15 22:36:10 +02:00
Ingo Weyrich
07d26c16ed ImProcCoordinator::updateVectorscope(): fix crash caused by large stack allocation, speedup, fixed scaling from [0;255] to [0;65535] range 2020-08-15 17:35:24 +02:00
Ingo Weyrich
a5c7713042 Cleanup: removed unused function; also murder instead of call for suicide (delete this) 2020-08-13 13:10:33 +02:00
Lawrence Lee
8b3af4c520 Fix some cppcheck warnings 2020-08-09 17:16:57 -07:00
Lawrence Lee
6cd87ad975 Use array2D for waveform and vectorscopes 2020-08-09 16:49:28 -07:00
Lawrence Lee
f779527833 Clip H-C vectorscope according to color profile 2020-08-08 12:37:28 -07:00
Lawrence Lee
9382306fed Add CIELAB lightness to waveform 2020-08-05 11:57:34 -07:00
Lawrence Lee
ba57a6c680 Fix waveform and vectorscope crop behavior
Properly scale values for the vectorscopes and only show the crop region
for the waveform.
2020-08-04 23:07:03 -07:00
Lawrence Lee
fbe73614c3 Add H-S and H-C vectorscopes 2020-08-03 18:23:25 -07:00
Lawrence Lee
6df69b3786 Improve performance of histogram/waveform updates
Only perform calculations for the currently shown scope.
Cache the waveform so it can be reused when the scope is resized.
Increase speed of waveform rendering.
2020-07-26 13:27:17 -07:00
Lawrence Lee
4cbd622569 Add initial implementation of waveform 2020-07-21 22:45:10 -07:00
Desmis
2a5ce3c0ba merge with dev 2020-07-14 07:42:15 +02:00
Desmis
32329f306f Prepare rtengine for CH curve 2020-07-13 17:32:38 +02:00
Ingo Weyrich
d22fcb9df1 Cleanup for curves.* 2020-07-13 16:07:52 +02:00
Ingo Weyrich
a0eacde31a Merge branch 'dev' into cleanup_locallab_periphery 2020-06-28 12:20:54 +02:00
Ingo Weyrich
3bab9ec688 copy constructor for labimage, further cleanup for locallab periphery 2020-06-27 16:52:53 +02:00
Ingo Weyrich
f02c4e1fd1 use LUT_CLIP_OFF instead of 0 2020-06-27 14:30:58 +02:00
Ingo Weyrich
96c5eff50c Further cleanups to locallab periphery 2020-06-27 13:13:26 +02:00
Ingo Weyrich
6d824842af Further cleanups to locallab periphery 2020-06-26 22:25:58 +02:00
Ingo Weyrich
01e48cc809 Some first cleanups for locallab periphery 2020-06-26 21:20:26 +02:00
Desmis
20bc7af14f Change labels blend mask and default values - change range all soft guidedfilter 2020-06-26 11:19:41 +02:00
Desmis
6a03d8e325 first run that work...with bug...but save 2020-06-23 17:53:56 +02:00
Desmis
fb06a4dcfd Pass GUI parameters mask to rtengine and iplocallab.cc 2020-06-23 12:00:23 +02:00
Desmis
90dedb001f Add common mask curve to rtengine and iplocallab.cc 2020-06-23 09:17:37 +02:00
Desmis
af0b286e5a Suppress message in improccoordinator.cc 2020-05-14 14:30:43 +02:00
Desmis
a806d00268 Merge with dev 2020-05-13 08:51:50 +02:00
Pandagrapher
bd3037a803 Some minor fixes in Locallab GUI 2020-05-12 18:35:33 +02:00
Desmis
fb4f64699b Use previewDeltaE information to show deltaE 2020-05-12 17:19:44 +02:00
Desmis
99fd6162f8 Clean code 2020-05-12 16:28:17 +02:00
Pandagrapher
276dd89382 Save GUI part for deltaE preview in Locallab settings panel 2020-05-12 16:23:29 +02:00
Desmis
e25f5aa455 Rebuild wavtm with curve finerCoraser - language - various chnages to denoise 2020-05-12 09:11:16 +02:00
Pandagrapher
192c9b118f Update storage method in .pp3 files for RT-spot points
RT-spot points are now stored as integer vector (instead of four
dedicated integer) to allow future improvements.
2020-04-23 19:38:53 +02:00
Pandagrapher
cca6b09768 Merge remote-tracking branch 'dev/newlocallab' into newlocallab 2020-04-20 12:54:09 +02:00
Desmis
f0e78b2a0d merge with dev 2020-04-18 07:43:44 +02:00
Pandagrapher
4ea4663e34 Merge with 'dev/newlocallab'... 2020-04-16 16:01:53 +02:00
rom9
22eee9787e
Film negative stable multipliers (#5485)
* Added new feature to calculate channel multipliers from crop area. This also saves the crop area channel medians to the processing profiles, in order to get a more consistent color balance when batch-applying the same profile to multiple pictures from the same film roll.

* Fixed wrong initialization of array, and missing check for the result of `getFilmNegativeMedians()`.
Moved `ImProcCoordinator::translateCoord()` from private member to anonymous namespace.
Fixed some whitespace and formatting issues.

* Fixed some formatting issues

* Passed `ipf` parameter as const in `translateCoord`.
Narrowed `using namespace` to single class `Coord2D`.

* Added `scaleGain` entry to thumbnail metadata file, to make `scale_mul` multipliers available in thumbnail processing phase. This simplifies multiplier calculations, so that "faking" thumbnail multipliers in the main image processing is not necessary anymore. This way, output values are immune to slight variations of multipliers between successive shots taken with in-camera AWB turned on.
Shifted multipliers so that the output channel medians are balanced when "Camera WB" is selected. This way, just computing multipliers from crop and setting "Camera WB" (which is the default) gives a pretty well balanced image as a starting point.

* New channel scaling method, based on a film base color sample instead of crop area channel medians. Channels are scaled so that the converted film base values are equal to 1/512th of the output range (65k). This giver better black levels in the output, and more consistency when batch-processing multiple negatives.
The output is now compensated for a known fixed WB value, so that the film base will appear grey when WB is set to 3500K, Green=1.
Added PPVERSION 347 to preserve backwards compatibility: when a processing profile saved by RT 5.7 is loaded (PPVERSION=346), the new fields are initialized to the special value -1, which will instruct the main processing to follow the old channel scaling behaviour. The old channel scaling multipliers will then be converted to the new film base values so that the resulting image is the same, and the fields will be overwritten as soon as the PP is saved again. This will transparently upgrade the processing profile.
When the new behaviour is used, but the film base values are still unset, they are estimated based on channel medians, excluding a 20% border around the image. This should give a better result out-of-the-box for pictures containing a large film holder.

* Code cleanup from review

* Run astyle on film neg source files

* Fixed automated build failure caused by incompatible libraries on my dev PC.

* Simplified `Thumbnail::processFilmNegative` method signature. There is no need to pass in `rmi`,`gmi`,`bmi` multipliers from the caller, i can do the same with my own internal multipliers.

* Added `FilmNegListener` class to pass estimeted film base values to the GUI after first processing. Removed old `filmBaseValues` instance variable from RawImageSource.

* Code cleanup

* Forgot to set baseValues flag in `PartialPasteDlg::applyPaste`
Fixed `filmBaseValuesLabel` not updating when reading zero baseValues. Normally not needed (the label is updated later by the listener), but when the user is browsing through pictures the listener won't fire, so the label must be updated to show values are unset.

* Overwritten channel scaling multipliers by calling `get_colorsCoeff` with `forceAutoWB=false`.
Initially, in `RawImageSource::load`, channels are auto-balanced by averaging the whole picture when computing multipliers.
This can give different multipliers for multiple shots of the same camera, which will lead to inconsistent conversions when batch-processing multiple negatives.
This commit re-sets `scale_mul`, `ref_pre_mul`, etc., in order to "undo" the auto-WB and use the normal camera multipliers.

* Found an easier way to get stable overall multipliers, removed the (horrible) on-the-fly mutation of scaling instance variables.
2020-04-13 17:20:56 +02:00