darktablehttps://www.darktable.org/Mon, 22 Jan 2018 15:00:00 +0000darktable 2.4.1 releasedhttps://www.darktable.org/2018/01/darktable-241-released/<p>we’re proud to announce the first bugfix release for the 2.4 series of darktable,&nbsp;2.4.1!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.4.1">https://github.com/darktable-org/darktable/releases/tag/release-2.4.1</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.4.1.tar.xz 6254c63f9b50894b3fbf431d98c0fe8ec481957ab91f9af76e33cc1201c29704 darktable-2.4.1.tar.xz $ sha256sum darktable-2.4.1.dmg 75077f17332a6fda144125ab0f1d3dd219c214bf7602b0b252208f1ec665d031 darktable-2.4.1.dmg $ sha256sum darktable-2.4.1-win64.exe 0be1e0dd8dec61a7cea41598c52db258edaee8783c543b4311fa0ac56ab43d2a darktable-2.4.1-win64.exe $ sha256sum darktable-2.4.1-win64.zip 560d82e4c87c002f0284daca922023df136c822713e3670ba42358c9427fe26c darktable-2.4.1-win64.zip </pre></div> <p>when updating from the currently stable 2.2.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.4 to 2.2.x any&nbsp;more.</p> <h4>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, <em>please</em> read <a href="https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri">this post</a> on how/what raw samples you can contribute to ensure that we have the <em>full</em> raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</h4> <p>and the changelog as compared to 2.4.0 can be found&nbsp;below.</p> <h2>New&nbsp;Features</h2> <ul> <li>Allow to select the <span class="caps">GUI</span> language in the&nbsp;preferences</li> <li>Add a filter rule to the collect module to find locally copied&nbsp;images</li> <li>Add favourite toggle to darkroom modules&#8217; right click&nbsp;popup</li> <li>Allow blending/masking in the hot pixels&nbsp;module</li> <li>Add keyboard shortcuts to zoom and pan an image in darkroom. Panning uses the arrow keys, zooming defaults to <code>ctrl-</code> and <code>ctrl+</code>. Use <code>alt</code> and <code>ctrl</code> to change the step size of&nbsp;panning.</li> <li>Some minor speedups in the grain&nbsp;module</li> <li>Handling stdout on Windows: do not redirect stdout for simple command line arguments (<code>--help</code> and <code>--version</code>)</li> <li>On Windows, show the location of the log file in the help&nbsp;message</li> <li>Enable searching in the more modules list – click into the list to give focus to it, then start typing. The default <span class="caps">GTK</span> shortcut <code>ctrl-f</code> doesn&#8217;t work as it&#8217;s used for filmstrip&nbsp;already</li> <li>Add a debug print when compiling OpenCL&nbsp;kernels</li> </ul> <h2>Bugfixes</h2> <ul> <li>Use the configured overwrite color profile when exporting from Lua – this broke <span class="caps">GIMP</span>&nbsp;integration</li> <li>Support presets with <code>&lt;</code> in their&nbsp;name</li> <li>Fix export to non-existing path with <code>\</code> as the path separator on&nbsp;Windows</li> <li>Don&#8217;t insist on the db being locked when it doesn&#8217;t even&nbsp;exist</li> <li>Don&#8217;t touch the mix slider when resetting the curve in color&nbsp;zones</li> <li>Fix a bug in the exposure module that would only allow corrections of up to 10&nbsp;stops</li> <li>Fix custom shortcuts with <code>shift</code> modifier</li> <li>Properly ellipsize text in the recently used collections&nbsp;list</li> <li>Fix exported galeries with filenames containing a <code>'</code></li> <li>Fix finding mipmaps cache folder in <code>purge_from_cache.sh</code> script</li> <li>Fix a crash in the recently used collections list due to a broken config&nbsp;file</li> <li>Set the sqlite threading mode to&nbsp;Serialized</li> <li>Fix old export presets using&nbsp;OpenEXR</li> <li>Fix building with clang on&nbsp;Windows</li> </ul> <h2>Changed&nbsp;Dependencies</h2> <ul> <li>iso-codes version 3.66 or newer is suggested for a nicer list of translations in the&nbsp;preferences.</li> <li>The Windows installer comes with an updated libexiv2 so <span class="caps">TIFF</span> exports should be much faster&nbsp;now</li> </ul> <h2>Camera support, compared to&nbsp;2.4.0</h2> <h4>Warning: support for Nikon <span class="caps">NEF</span> &#8216;lossy after split&#8217; raws was unintentionally broken due to the lack of such samples. Please see <a href="https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri">this post</a> for more details. If you have affected raws, please contribute&nbsp;samples!</h4> <h3>Base&nbsp;Support</h3> <ul> <li>Panasonic <span class="caps">DC</span>-G9&nbsp;(4:3)</li> <li>Paralenz Dive Camera&nbsp;(chdk)</li> <li>Pentax <span class="caps">KP</span></li> <li>Sjcam <span class="caps">SJ6</span> <span class="caps">LEGEND</span> (chdk-b,&nbsp;chdk-c)</li> </ul> <h3>White Balance&nbsp;Presets</h3> <ul> <li>Leaf Credo&nbsp;40</li> <li>Nikon&nbsp;D3400</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Panasonic <span class="caps">DC</span>-G9</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7RM3</span></li> </ul> <h3>Noise&nbsp;Profiles</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M100</li> <li>Canon <span class="caps">EOS</span>&nbsp;M6</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M4</span></li> <li><span class="caps">YI</span> <span class="caps">TECHNOLOGY</span>&nbsp;M1</li> </ul> <h2>Translations</h2> <ul> <li>Czech</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hebrew</li> <li>Hungarian</li> <li>Italian</li> <li>Slovenian</li> </ul><img src="https://www.darktable.org/2018/01/darktable-241-released/buffalo.jpg" class="hidden-lede">houzMon, 22 Jan 2018 15:00:00 +0000tag:www.darktable.org,2018-01-22:2018/01/darktable-241-released/announcementdarktable releasedarktable 2.4.0 releasedhttps://www.darktable.org/2017/12/darktable-240-released/<p>we&#8217;re proud to finally announce the new feature release of darktable,&nbsp;2.4.0!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.4.0">https://github.com/darktable-org/darktable/releases/tag/release-2.4.0</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.4.0.tar.xz 9d37388aee79d5ada71062bbac3cda612a61d1a781f6320b784b27308f3a1878 darktable-2.4.0.tar.xz $ sha256sum darktable-2.4.0.dmg 70dcbec46c54f2006f2887b7ec1c9d748f9a726389d3b75cd5e081695e26394e darktable-2.4.0.dmg $ sha256sum darktable-2.4.0-win64.exe 5b7b00a0bed8ea0d5ac45b0a0668f1998ad396e4bc3b5791e7a17f7c70b90f7c darktable-2.4.0.exe </pre></div> <p>when updating from the currently stable 2.2.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.4 to 2.2.x any&nbsp;more.</p> <h4>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, <em>please</em> read <a href="https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri">this post</a> on how/what raw samples you can contribute to ensure that we have the <em>full</em> raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</h4> <ul> <li>The maintainership of the <a href="https://github.com/darktable-org/rawspeed">RawSpeed library</a> was transferred to the darktable project. The work on code cleanup, hardening, modernization, simplification and testing is&nbsp;ongoing.</li> <li>Almost 3 thousand commits to darktable+rawspeed since&nbsp;2.2.0</li> <li>273 pull requests&nbsp;handled</li> <li>340+ issues&nbsp;closed</li> <li>Updated user manual is coming&nbsp;soon™</li> </ul> <p>Gource visualization of git log from 2.2.0 to right before&nbsp;2.4.0:</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/VNdFenRQWtw?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <h2>Hell Froze&nbsp;Over</h2> <ul> <li>As you might have read on our <a href="https://www.darktable.org/2017/08/darktable-for-windows/">news post</a> we finally ported darktable to Windows and intend to support it in the future. At the moment it&#8217;s still lacking a few features (for example there is no printing support), has a few limitations (tethering requires special drivers to be installed) and comes with its own set of bugs (<span class="caps">TIFF</span> import and export doesn&#8217;t support non-<span class="caps">ASCII</span> characters in file names). But overall we are confident that it&#8217;s quite usable already and hope you will enjoy it. A very special thanks goes to Peter Budai who finally convinced us to agree to the port and who did most of the&nbsp;work.</li> </ul> <h2>The Big&nbsp;Ones</h2> <ul> <li>A new module for haze&nbsp;removal</li> <li>The local contrast module can now be pushed much further, it also got a new <a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/">local laplacian</a>&nbsp;mode</li> <li>Add undo support for masks and more intelligent grouping of undo&nbsp;steps</li> <li>Blending now allows to display individual channels using false&nbsp;colors</li> <li>darktable now supports loading Fujifilm compressed&nbsp;RAFs</li> <li>darktable now supports loading floating point <span class="caps">HDR</span> DNGs as written by <span class="caps">HDRMERGE</span></li> <li>We also added channel specific blend modes for Lab and <span class="caps">RGB</span> color&nbsp;spaces</li> <li>The base curve module allows for more control of the <a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/">exposure fusion</a> feature using the newly added bias&nbsp;slider</li> <li>The tonecurve module now supports auto colour adjustment in <span class="caps">RGB</span></li> <li>Add absolute color input as an option to the color look up table&nbsp;module</li> <li>A new X-Trans demosaicing algorithm, Frequency Domain Chroma, was&nbsp;implemented.</li> <li>You can now choose from pre-defined scheduling profiles for&nbsp;OpenCL</li> <li>Speaking of OpenCL, darktable now allows to force-use OpenCL for a specific&nbsp;pixelpipe</li> <li><span class="caps">XMP</span> sidecar files are no longer written to disk when the content didn&#8217;t actually change. That mostly helps with network storage and backup systems that use files&#8217; time&nbsp;stamps</li> </ul> <h2>New Features And&nbsp;Changes</h2> <ul> <li>Show a dialog window that tells when locking the database/library&nbsp;failed</li> <li>Don&#8217;t shade the whole region on the map when searching for a location. Instead just draw a border around&nbsp;it.</li> <li>Also in map mode: Clear the search list and map indicators when resetting the search&nbsp;module.</li> <li>With OsmGPSMap newer than version 1.1.0 (i.e., anything released after that OsmGPSMap version) the map will show copyright&nbsp;info.</li> <li>Running jobs with a progressbar (mostly import and export) will show that progress bar ontop the window entry in your task bar – if the system supports it. It should work on <span class="caps">GNOME</span>, <span class="caps">KDE</span> and Windows at&nbsp;least.</li> <li>Add bash like string replacement for variables (export, watermark, session&nbsp;settings)</li> <li>Add a preferences option to ask before removing empty&nbsp;dirs</li> <li>The &#8220;colorbalance&#8221; module got a lot faster, thanks to <span class="caps">SSE</span> optimized&nbsp;code</li> <li>Make gradient sliders a little more&nbsp;colorful</li> <li>Make <span class="caps">PNG</span> compression level used for exporting&nbsp;configurable</li> <li>On <span class="caps">OSX</span>, load single images from command line or via drag&amp;drop in darkroom&nbsp;mode</li> <li>Add an option to omit the intermediate tag hierarchy in exported files and only add the last&nbsp;level</li> <li>In the watermark module, sort the list of <span class="caps">SVG</span> files and omit the file&nbsp;extension</li> <li>Support <span class="caps">XYZ</span> as a proofing&nbsp;profile</li> <li>Local contrast now got a new slider to set the midtone&nbsp;range</li> <li>darktable got two new helper scripts (those are not installed by default, grab them from <a href="https://github.com/darktable-org/darktable/tree/master/tools">the sources</a>)<ul> <li>One to purge thumbnails that no longer have an associated image in the&nbsp;database,</li> <li>and a second script that uses inotify to watch a folder for new files to open them in a running darktable&nbsp;instance.</li> </ul> </li> <li>In the curve editors of base curve and tone curve you can now delete nodes with a right click and see coordinates of nodes while editing. Note that you can use keyboard modifiers <code>ctrl</code> and <code>shift</code> to change the precision of your&nbsp;changes</li> <li>Creating a new instance of a module can now be done with a quick click of the middle mouse button on the multi-instance&nbsp;icon</li> <li>New darktable installations on computers with more than 8 Gb of memory will now by default use half of that per&nbsp;module</li> <li>Several background colors and the brush color are now configurable in the <span class="caps">CSS</span></li> <li>Some new cameras can bump the <span class="caps">ISO</span> level to insane highs. We try to follow as good as we can by no longer limiting it to 51200 in the <span class="caps">GUI</span></li> <li>Base curve and the highlights module now support multiple instances and use blending and&nbsp;masks</li> <li>Having the <code>1</code> key toggle between 1 and 0 stars wasn&#8217;t very popular with many people. You can disable that extra feature and have it behave like the other rating shortcuts&nbsp;now</li> <li>You can decide if you want to be asked before resetting the history stacks of images from the&nbsp;lighttable</li> <li>The grain module was slightly changed to have a more pleasing, photographic-paper like&nbsp;appearance</li> <li>Using the color look up table module you can now convert your images to monochrome, honoring the Helmholtz-Kohlrausch&nbsp;effect</li> <li>Support basic import of Lightroom 7&nbsp;settings</li> <li>Change the styling of insensitive bauhaus&nbsp;widgets</li> <li>Don&#8217;t hide the mode combobox in the exposure module, just disable&nbsp;it</li> <li>Read primaries and whitepoint from .hdr files and default to those as the input color&nbsp;profile</li> <li>Some more small improvements were&nbsp;made</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix the problem with rating images by accident when moving the mouse while typing an image size in the export&nbsp;module</li> <li>Fix several oddities in folder and tag mode of the collect&nbsp;module</li> <li>Print mode&#8217;s color profile settings no longer interact with the export&nbsp;module</li> <li>Update the style lists when importing a&nbsp;style</li> <li>Fix some bugs with multiple module instances used in a&nbsp;style</li> <li>On <span class="caps">OSX</span> only the main window should be fullscreen, not the&nbsp;popups</li> <li>Some speedups with <span class="caps">VERY</span> big libraries or having A <span class="caps">LOT</span> <span class="caps">OF</span>&nbsp;tags</li> <li>Significantly speed up tagging many&nbsp;images</li> <li>Fix searching locations using&nbsp;OpenStreetMap</li> <li>Fix partial copies of large files in &#8220;import from&nbsp;camera&#8221;</li> <li>Fix a crash in the import dialog when using Lua to add widgets&nbsp;there</li> <li>Fix some false-positive warnings about another running darktable instance and it having locked the&nbsp;databases</li> <li>No longer switch to the favourite modules group when duplicating one of its&nbsp;modules</li> <li>Fix loading of <span class="caps">XYZ</span>&nbsp;files</li> <li>Fix Lab export when the profile was set from the&nbsp;lighttable</li> <li>Create temporary snapshot files with mode 0600 to stop other people looking at&nbsp;them</li> <li>Fix several bugs with Wayland. However, there are still issues, so darktable will prefer&nbsp;XWayland</li> <li>Google deprecated the Picasa Web <span class="caps">API</span> so it&#8217;s no longer possible to create G+&nbsp;albums</li> <li>Fix the default for sliders with target not being &#8220;red&#8221; in the channel&nbsp;mixer</li> <li>Fix the removal of&nbsp;directories</li> <li>Make the escape key cancel history&nbsp;dialogs</li> <li>Block keyboard accels when editing camera&nbsp;controls</li> <li>Properly delete <span class="caps">XMP</span>&nbsp;sidecars</li> <li>Make sure that the rating set in darktable is used for the exported file, not something set inside the raw&nbsp;file</li> <li>Don&#8217;t re-write all <span class="caps">XMP</span> files when detaching a&nbsp;tag</li> <li>Sync XMPs when a tag is removed from the&nbsp;database</li> <li>Sync XMPs after a tag is attached/detached via the Lua <span class="caps">API</span></li> <li>Bail out of darktable-cli when the <span class="caps">XMP</span> file is not&nbsp;readable</li> <li>Show ratings on zoomable lighttable without a&nbsp;delay</li> <li>Rely on <span class="caps">CUPS</span> color management when printing without configuring any color profile in&nbsp;darktable</li> <li>Fix spurious segfault in local&nbsp;contrast</li> <li>Make calls to exiv2&#8217;s readMetadata thread safe to not crash&nbsp;randomly</li> <li>Properly read Lightroom XMPs on systems with <code>,</code> as the decimal&nbsp;separator</li> <li>Fix setting the <span class="caps">PNG</span> bit depth from the&nbsp;gui</li> <li>Many more bugs got&nbsp;fixed</li> </ul> <h2>Lua</h2> <ul> <li>darktable now uses Lua 5.3. The bundled copy got updated&nbsp;accordingly</li> <li>Add dt.print_log. It&#8217;s like print_error but without the <span class="caps">ERROR</span>&nbsp;prefix</li> <li>Reorder callback parameters for intermediate export image: add the actual image to the parameters of the&nbsp;event</li> <li>Call lua post-import-image event&nbsp;synchronously</li> <li>Add darktable.configuration.running_os to detect the <span class="caps">OS</span> darktable is running&nbsp;on</li> <li>New widget type: section_label, adds a label which looks like a section&nbsp;change</li> </ul> <h2>Changed&nbsp;Dependencies</h2> <ul> <li>CMake 3.1 is now&nbsp;required</li> <li>In order to compile darktable you now need at least&nbsp;gcc-5.0+/clang-3.4+</li> <li><span class="caps">ZLIB</span> is now required for the <span class="caps">DNG</span> Deflate compressed raw&nbsp;support</li> <li>darktable now uses Lua&nbsp;5.3</li> </ul> <h2>Camera support, compared to&nbsp;2.2.0</h2> <h4>Warning: support for Nikon <span class="caps">NEF</span> &#8216;lossy after split&#8217; raws was unintentionally broken due to the lack of such samples. Please see <a href="https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri">this post</a> for more details. If you have affected raws, please contribute&nbsp;samples!</h4> <h3>Base&nbsp;Support</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9</li> <li>Canon <span class="caps">EOS</span> Rebel <span class="caps">SL2</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span> (sRaw1,&nbsp;sRaw2)</li> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;800D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T7i</li> <li>Canon <span class="caps">EOS</span>&nbsp;M100</li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon <span class="caps">EOS</span>&nbsp;M6</li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Canon PowerShot <span class="caps">SX40</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm <span class="caps">GFX</span> 50S&nbsp;(compressed)</li> <li>Fujifilm&nbsp;X-A3</li> <li>Fujifilm X-<span class="caps">E2S</span></li> <li>Fujifilm X-E3&nbsp;(compressed)</li> <li>Fujifilm X-Pro2&nbsp;(compressed)</li> <li>Fujifilm X-T2&nbsp;(compressed)</li> <li>Fujifilm X-T20&nbsp;(compressed)</li> <li>Fujifilm <span class="caps">X100F</span>&nbsp;(compressed)</li> <li><span class="caps">GITUP</span> <span class="caps">GIT2P</span> (chdk-a,&nbsp;chdk-b)</li> <li>Kodak EasyShare&nbsp;Z980</li> <li><span class="caps">LG</span> D855&nbsp;(dng)</li> <li><span class="caps">LG</span> H815&nbsp;(dng)</li> <li><span class="caps">LG</span> Nexus 5X&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">US996</span>&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">VS995</span>&nbsp;(dng)</li> <li>Leica D-<span class="caps">LUX</span> (Typ 109) (4:3, 3:2, 16:9,&nbsp;1:1)</li> <li>Leica X2&nbsp;(dng)</li> <li>Nikon <span class="caps">COOLPIX</span> B700&nbsp;(12bit-uncompressed)</li> <li>Nikon D500 (14bit-uncompressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5600 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D7500 (12bit-compressed,&nbsp;14bit-compressed)</li> <li>Nikon D850 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon <span class="caps">LS</span>-5000&nbsp;(dng)</li> <li>Nokia Lumia 1020&nbsp;(dng)</li> <li>Olympus E-M10 Mark <span class="caps">III</span></li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus <span class="caps">TG</span>-5</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ82</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">GH5</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ91</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ92</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ93</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">TZ90</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">ZS70</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ330</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> (16:9, 3:2,&nbsp;1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ61</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS40</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ81</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS60</span>&nbsp;(4:3)</li> <li>Pentax K-5&nbsp;(dng)</li> <li>Pentax K-r&nbsp;(dng)</li> <li>Pentax <span class="caps">K10D</span>&nbsp;(dng)</li> <li>Phase One <span class="caps">IQ140</span></li> <li>Samsung <span class="caps">G920F</span></li> <li>Samsung <span class="caps">G935F</span></li> <li>Samsung <span class="caps">GX10</span></li> <li>Sony <span class="caps">ILCE</span>-6500</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7RM3</span></li> <li>Sony <span class="caps">ILCE</span>-9</li> </ul> <h3>White Balance&nbsp;Presets</h3> <ul> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-T20</li> <li>Fujifilm <span class="caps">X100F</span></li> <li>Nikon 1 <span class="caps">AW1</span></li> <li>Nikon Coolpix&nbsp;A</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax K-3 <span class="caps">II</span></li> </ul> <h3>Noise&nbsp;Profiles</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-M1</li> <li>Fujifilm&nbsp;X-Pro1</li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T20</li> <li>Leica&nbsp;X2</li> <li>Nikon Coolpix&nbsp;A</li> <li>Nikon <span class="caps">D2X</span></li> <li>Nikon&nbsp;D3000</li> <li>Nikon&nbsp;D3400</li> <li>Nikon&nbsp;D4</li> <li>Nikon&nbsp;D500</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus&nbsp;E-P5</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ200</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span></li> <li>Panasonic <span class="caps">DMC</span>-G7</li> <li>Panasonic <span class="caps">DMC</span>-G70</li> <li>Panasonic <span class="caps">DMC</span>-G8</li> <li>Panasonic <span class="caps">DMC</span>-G80</li> <li>Panasonic <span class="caps">DMC</span>-G81</li> <li>Panasonic <span class="caps">DMC</span>-G85</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax&nbsp;K-70</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-5000</li> <li>Sony <span class="caps">ILCE</span>-6500</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7RM3</span></li> </ul> <h2>Translations</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Greek</li> <li>Hebrew</li> <li>Hungarian</li> <li>Italian</li> <li>Japanese</li> <li>Polish</li> <li>Russian</li> <li>Slovak</li> <li>Slovenian</li> <li>Spanish</li> <li>Swedish</li> <li>Ukrainian</li> </ul><img src="https://www.darktable.org/2017/12/darktable-240-released/shore.jpg" class="hidden-lede">houzSun, 24 Dec 2017 10:08:00 +0000tag:www.darktable.org,2017-12-24:2017/12/darktable-240-released/announcementdarktable releasea new websitehttps://www.darktable.org/2017/12/a-new-website/<p>A new year is coming on us quickly, so how about a nice new website to go with&nbsp;it?</p> <figure> <a title="J. C. Leyendecker [Public domain], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File%3ABabynew.jpg"> <img alt="Babynew" src="https://www.darktable.org/blog/2017-12-12-a-new-website/Babynew.jpg" width="288" height="369"/> </a> <figcaption> Baby New Year from 110 years ago &#8230; </figcaption> </figure> <p>houz and I have been working hard over the past few months to migrate the old website from Wordpress to a new static site, using <a href="https://www.python.org/" title="Python homepage">Python</a>/<a href="https://blog.getpelican.com/" title="Pelican Static Site Generator">Pelican</a>. This should make things more secure and safer for both you and us (see the <a href="https://www.darktable.org/2017/01/rawsamples-ch-replacement/" title="rawsamples.ch replacement on darktable.org">problems that rawsamples.ch</a> had for the perils of using a db-driven backend for a website). Not to mention it makes collaboration and contributing a bit easier now, as the entire site gets its <a href="https://github.com/darktable-org/dtorg" title="darktable.org website repository">own GitHub repository</a> (I&#8217;ll be eagerly awaiting your pull&nbsp;requests).</p> <p>I tried to create a design that had a bit more emphasis on accessibility and readability. The site is fully responsive for screens ranging from a mobile phone to a full desktop. The type is larger and generally given a bit more room to breathe in the page and we tried to highlight images a bit more, as this is a photography-centered&nbsp;project.</p> <p>This is just one small way for me to contribute and give back to the community in my own way (you should probably not let me near any real code). In fact, this is one of the reasons I started up the community over at <a href="https://pixls.us" title="PIXLS.US - Free Software Photography"><span class="caps">PIXLS</span>.<span class="caps">US</span></a>. We needed a community focused specifically on Free Software photography and a way for us to freely share our knowledge and experiences to help everyone, especially across multiple&nbsp;projects.</p> <h2>pixls.us</h2> <figure> <img src="https://www.darktable.org/blog/2017-12-12-a-new-website/pixls.us-logo.png" alt="PIXLS.US Logo" width="75" height="75"> </figure> <p>If you&#8217;re not familiar with the community yet, why not?! We&#8217;re all photography folks who have a passion for Free Software with the&nbsp;mission:</p> <blockquote> <p>To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source&nbsp;Software.</p> </blockquote> <p>We also happen to have quite a few developers of various types in the community, and as a way to assist projects and contribute back we&#8217;ve been working on websites and other community-oriented functionality (like <a href="https://discuss.pixls.us" title="PIXLS.US Discussion Forum">the forums</a>, hosting comments, files, and more). I&#8217;d get in trouble if I didn&#8217;t mention that we also got <a href="https://raw.pixls.us" title="Raw Files for Free Software">raw.pixls.us</a> setup to <a href="https://www.darktable.org/2017/01/rawsamples-ch-replacement/" title="rawsamples.ch replacement on darktable.org">replace the ailing rawsamples.ch</a>&nbsp;also.</p> <p>One neat way we&#8217;re able to help out even more is by integrating the commenting system here into <a href="https://discuss.pixls.us" title="PIXLS.US Discussion Forum">the forums</a>. It&#8217;s how we manage commenting on the main pixls.us website, and we had great success with this approach for the <a href="https://www.digikam.org/" title="digiKam Homepage">digiKam project</a> when we <a href="https://www.digikam.org/news/2017-04-30-new-digikam-static-site/" title="The new digiKam web presence">built them a new website</a> earlier this year. This lets us moderate comments in one place, allows for cross-pollination of knowledge between the projects, and users get to truly own their comments (instead of being monetized and tracked by some third-party commenting system like&nbsp;Disqus).</p> <h2>Happy New&nbsp;Year</h2> <p>Have a look around the new site and please don&#8217;t hesitate to point out any problems you may run into! From me, thank you x1000 to the developers for this awesome&nbsp;project.</p> <p><a href="https://patdavid.net" title="Pat David">patdavid</a> &hearts;&#8217;s&nbsp;darktable</p><img src="https://www.darktable.org/2017/12/a-new-website/Glades.jpg" class="hidden-lede">patdavidThu, 21 Dec 2017 11:02:54 -0600tag:www.darktable.org,2017-12-21:2017/12/a-new-website/announcementblogcommunitydarktable 2.4.0rc2 releasedhttps://www.darktable.org/2017/12/darktable-2-4-0rc2-released/<p>we&#8217;re proud to announce the third release candidate for the upcoming 2.4 series of darktable,&nbsp;2.4.0rc2!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc2">https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc2</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.4.0rc2.tar.xz dcb56e1eb2c10aa9fe64ea9ba3e806e3da3a3a0ebb47646a07e1838b88f15949 darktable-2.4.0rc1.tar.xz $ sha256sum darktable-2.4.0rc2.dmg 5ad1c355c04d8a42bab7c2879cba92891dbdd0a89b8fe0ff2ea18f1f8b592f15 darktable-2.4.0rc1.dmg $ sha256sum darktable-2.4.0rc2.dirty-win64.exe a4cd63e9e44f029d4a85b430c5fdaf49e110c1ebe0a9cfc51ac2bf86ebac41cf darktable-2.4.0rc1.exe </pre></div> <h4>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, <em>please</em> read <a href="https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri">this post</a> on how/what raw samples you can contribute to ensure that we have the <em>full</em> raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</h4> <h2>changes since&nbsp;rc1</h2> <ul> <li>Fix a bug in haze removal that resulted in black areas in the exported&nbsp;image</li> <li>Support Sony <span class="caps">ILCE</span>-<span class="caps">7RM3</span></li> <li>Make calls to exiv2&#8217;s readMetadata thread safe to not crash&nbsp;randomly</li> <li>Don&#8217;t hide the mode combobox in the exposure module, just disable&nbsp;it</li> <li>Change the styling of insensitive bauhaus&nbsp;widgets</li> <li>Fix spurious segfault in local&nbsp;contrast</li> <li>Don&#8217;t show an error popup on Windows when the <span class="caps">CD</span> drive is&nbsp;empty</li> </ul> <p>and the changelog as compared to 2.2.0 can be found below. Some of the fixes might have been backported to the stable 2.2.x series&nbsp;already.</p> <ul> <li>The maintainership of the RawSpeed library was transferred to the darktable project. The work on code cleanup, hardening, modernization, simplification and testing is&nbsp;ongoing.</li> <li>Well over 2 thousand commits to darktable+rawspeed since&nbsp;2.2.0</li> <li>244 pull requests&nbsp;handled</li> <li>320+ issues&nbsp;closed</li> <li>Updated user manual is coming&nbsp;soon™</li> </ul> <h2>Hell Froze&nbsp;Over</h2> <ul> <li>As you might have read on our <a href="https://www.darktable.org/2017/08/darktable-for-windows/">news post</a> we finally ported darktable to Windows and intend to support it in the future. At the moment it&#8217;s still lacking a few features (for example there is not printing support), has a few limitations (tethering requires special drivers to be installed) and comes with its own set of bugs. But overall we are confident that it&#8217;s quite usable already and hope you will enjoy it. A very special thanks goes to Peter Budai who finally convinced us to agree to the port and who did most of the&nbsp;work.</li> </ul> <h2>The Big&nbsp;Ones</h2> <ul> <li>A new module for haze&nbsp;removal</li> <li>The local contrast module can now be pushed much further, it also got a new local laplacian&nbsp;mode</li> <li>Add undo support for masks and more intelligent grouping of undo&nbsp;steps</li> <li>Blending now allows to display individual channels using false&nbsp;colors</li> <li>darktable now supports loading Fujifilm compressed&nbsp;RAFs</li> <li>darktable now supports loading floating point <span class="caps">HDR</span> DNGs as written by <span class="caps">HDRMERGE</span></li> <li>We also added channel specific blend modes for Lab and <span class="caps">RGB</span> color&nbsp;spaces</li> <li>The base curve module allows for more control of the exposure fusion feature using the newly added bias&nbsp;slider</li> <li>The tonecurve module now supports auto colour adjustment in <span class="caps">RGB</span></li> <li>Add absolute color input as an option to the color look up table&nbsp;module</li> <li>A new X-Trans demosaicing algorithm, Frequency Domain Chroma, was&nbsp;implemented.</li> <li>You can now choose from pre-defined scheduling profiles for&nbsp;OpenCL</li> <li>Speaking of OpenCL, darktable now allows to force-use OpenCL for a specific&nbsp;pixelpipe</li> <li>Xmp sidecar files are no longer written to disk when the content didn&#8217;t actually change. That mostly helps with network storage and backup systems that use files&#8217; time&nbsp;stamps</li> </ul> <h2>New Features And&nbsp;Changes</h2> <ul> <li>Show a dialog window that tells when locking the database/library&nbsp;failed</li> <li>Don&#8217;t shade the whole region on the map when searching for a location. Instead just draw a border around&nbsp;it.</li> <li>Also in map mode: Clear the search list and map indicators when resetting the search&nbsp;module.</li> <li>With OsmGPSMap newer than version 1.1.0 (i.e., anything released after that OsmGPSMap version) the map will show copyright&nbsp;info.</li> <li>Running jobs with a progressbar (mostly import and export) will show that progress bar ontop the window entry in your task bar – if the system supports it. It should work on <span class="caps">GNOME</span>, <span class="caps">KDE</span> and Windows at&nbsp;least.</li> <li>Add bash like string replacement for variables (export, watermark, session&nbsp;settings).</li> <li>Add a preferences option to ask before removing empty&nbsp;dirs</li> <li>The &#8220;colorbalance&#8221; module got a lot faster, thanks to <span class="caps">SSE</span> optimized&nbsp;code</li> <li>Make gradient sliders a little more&nbsp;colorful</li> <li>Make <span class="caps">PNG</span> compression level used for exporting&nbsp;configurable</li> <li>On <span class="caps">OSX</span>, load single images from command line or via drag&amp;drop in darkroom&nbsp;mode</li> <li>Add an option to omit the intermediate tag hierarchy in exported files and only add the last&nbsp;level</li> <li>In the watermark module, sort the list of <span class="caps">SVG</span> files and omit the file&nbsp;extension</li> <li>Support <span class="caps">XYZ</span> as a proofing&nbsp;profile</li> <li>Local contrast now got a new slider to set the midtone&nbsp;range</li> <li>darktable got two new helper scripts (those are not installed by default, grab them from the sources): One to purge thumbnails that no longer have an associated image in the database, and a second script that uses inotify to watch a folder for new files to open them in a running darktable&nbsp;instance.</li> <li>In the curve editors of base curve and tone curve you can now delete nodes with a right click and see coordinates of nodes while editing. Note that you can use keyboard modifiers ctrl and shift to change the precision of your&nbsp;changes</li> <li>Creating a new instance of a module can now be done with a quick click of the middle mouse button on the multi-instance&nbsp;icon</li> <li>New darktable installations on computers with more than 8 Gb of memory will now by default use half of that per&nbsp;module</li> <li>Several background colors and the brush color are now configurable in the <span class="caps">CSS</span></li> <li>Some new cameras can bump the <span class="caps">ISO</span> level to insane highs. We try to follow as good as we can by no longer limiting it to 51200 in the <span class="caps">GUI</span></li> <li>Base curve and the highlights module now support multiple instances and use blending and&nbsp;masks</li> <li>Having the <code>1</code> key toggle between 1 and 0 stars wasn&#8217;t very popular with many people. You can disable that extra feature and have it behave like the other rating shortcuts&nbsp;now</li> <li>You can decide if you want to be asked before resetting the history stacks of images from the&nbsp;lighttable</li> <li>The grain module was slightly changed to have a more pleasing, photographic-paper like&nbsp;appearance</li> <li>Using the color look up table module you can now convert your images to monochrome, honoring the Helmholtz-Kohlrausch&nbsp;effect</li> <li>Some more small improvements were&nbsp;made</li> <li>Support basic import of Lightroom 7&nbsp;settings</li> <li>Change the styling of insensitive bauhaus&nbsp;widgets</li> <li>Don&#8217;t hide the mode combobox in the exposure module, just disable&nbsp;it</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix the problem with rating images by accident when moving the mouse while typing an image size in the export&nbsp;module</li> <li>Fix several oddities in folder and tag mode of the collect&nbsp;module.</li> <li>Print mode&#8217;s color profile settings no longer interact with the export&nbsp;module</li> <li>Update the style lists when importing a&nbsp;style</li> <li>Fix some bugs with multiple module instances used in a&nbsp;style</li> <li>On <span class="caps">OSX</span> only the main window should be fullscreen, not the&nbsp;popups</li> <li>Some speedups with <span class="caps">VERY</span> big libraries or having A <span class="caps">LOT</span> <span class="caps">OF</span>&nbsp;tags</li> <li>Significantly speed up tagging many&nbsp;images</li> <li>Fix searching locations using&nbsp;OpenStreetMap</li> <li>Fix partial copies of large files in &#8220;import from&nbsp;camera&#8221;</li> <li>Fix a crash in the import dialog when using Lua to add widgets&nbsp;there</li> <li>Fix some false-positive warnings about another running darktable instance and it having locked the&nbsp;databases</li> <li>No longer switch to the favourite modules group when duplicating one of its&nbsp;modules</li> <li>Fix loading of <span class="caps">XYZ</span>&nbsp;files</li> <li>Fix Lab export when the profile was set from the&nbsp;lighttable</li> <li>Create tmp snapshot files with mode 0600 to stop other people looking at&nbsp;them</li> <li>Fix several bugs with Wayland. However, there are still issues, so darktable will prefer&nbsp;XWayland</li> <li>Google deprecated the Picasa Web <span class="caps">API</span> so it&#8217;s no longer possible to create G+&nbsp;albums</li> <li>Fix the default for sliders with target not being &#8220;red&#8221; in the channel&nbsp;mixer</li> <li>Fix the removing of&nbsp;directories</li> <li>Make the escape key cancel history&nbsp;dialogs</li> <li>Block keyboard accels when editing camera&nbsp;controls</li> <li>Properly delete <span class="caps">XMP</span>&nbsp;sidecars</li> <li>Make sure that the rating set in darktable is used for the exported file, not something set inside the raw&nbsp;file</li> <li>Don&#8217;t re-write all <span class="caps">XMP</span> files when detaching a&nbsp;tag</li> <li>Sync XMPs when a tag is removed from the&nbsp;database</li> <li>Sync XMPs after a tag is attached/detached via the Lua <span class="caps">API</span></li> <li>Bail out of darktable-cli when the <span class="caps">XMP</span> file is not&nbsp;readable</li> <li>Show ratings on zoomable lighttable without a&nbsp;delay</li> <li>Rely on <span class="caps">CUPS</span> color management when printing without configuring any color profile in&nbsp;darktable</li> <li>Many more bugs got&nbsp;fixed</li> <li>Fix spurious segfault in local&nbsp;contrast</li> <li>Make calls to exiv2&#8217;s readMetadata thread safe to not crash&nbsp;randomly</li> </ul> <h2>Lua</h2> <ul> <li>darktable now uses Lua 5.3. The bundled copy got updated&nbsp;accordingly</li> <li>Add dt.print_log. It&#8217;s like print_error but without the <span class="caps">ERROR</span>&nbsp;prefix</li> <li>Reorder callback parameters for intermediate export image: add the actual image to the parameters of the&nbsp;event</li> <li>Call lua post-import-image event&nbsp;synchronously</li> <li>Add darktable.configuration.running_os to detect the <span class="caps">OS</span> darktable is running&nbsp;on</li> <li>New widget type: section_label, adds a label which looks like a section&nbsp;change</li> </ul> <h2>Changed&nbsp;Dependencies</h2> <ul> <li>CMake 3.1 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.9+/clang-3.4+, and gcc-5.0+ is <em>highly</em>&nbsp;recommended.</li> <li><span class="caps">ZLIB</span> is now required for the <span class="caps">DNG</span> Deflate compressed raw&nbsp;support.</li> <li>darktable now uses Lua&nbsp;5.3</li> </ul> <h2>Camera support, compared to&nbsp;2.2.0</h2> <h4>Warning: support for Nikon <span class="caps">NEF</span> &#8216;lossy after split&#8217; raws was unintentionally broken due to the lack of such samples. Please see <a href="https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri">this post</a> for more details. If you have affected raws, please contribute&nbsp;samples!</h4> <h3>Base&nbsp;Support</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9</li> <li>Canon <span class="caps">EOS</span> Rebel <span class="caps">SL2</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span> (sRaw1,&nbsp;sRaw2)</li> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;800D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T7i</li> <li>Canon <span class="caps">EOS</span>&nbsp;M100</li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon <span class="caps">EOS</span>&nbsp;M6</li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Canon PowerShot <span class="caps">SX40</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm <span class="caps">GFX</span> 50S&nbsp;(compressed)</li> <li>Fujifilm&nbsp;X-A3</li> <li>Fujifilm X-<span class="caps">E2S</span></li> <li>Fujifilm X-E3&nbsp;(compressed)</li> <li>Fujifilm X-Pro2&nbsp;(compressed)</li> <li>Fujifilm X-T2&nbsp;(compressed)</li> <li>Fujifilm X-T20&nbsp;(compressed)</li> <li>Fujifilm <span class="caps">X100F</span>&nbsp;(compressed)</li> <li><span class="caps">GITUP</span> <span class="caps">GIT2P</span> (chdk-a,&nbsp;chdk-b)</li> <li>Kodak EasyShare&nbsp;Z980</li> <li><span class="caps">LG</span> D855&nbsp;(dng)</li> <li><span class="caps">LG</span> H815&nbsp;(dng)</li> <li><span class="caps">LG</span> Nexus 5X&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">US996</span>&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">VS995</span>&nbsp;(dng)</li> <li>Leica D-<span class="caps">LUX</span> (Typ 109) (4:3, 3:2, 16:9,&nbsp;1:1)</li> <li>Leica X2&nbsp;(dng)</li> <li>Nikon <span class="caps">COOLPIX</span> B700&nbsp;(12bit-uncompressed)</li> <li>Nikon D500 (14bit-uncompressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5600 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D7500 (12bit-compressed,&nbsp;14bit-compressed)</li> <li>Nikon D850 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon <span class="caps">LS</span>-5000&nbsp;(dng)</li> <li>Nokia Lumia 1020&nbsp;(dng)</li> <li>Olympus E-M10 Mark <span class="caps">III</span></li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus <span class="caps">TG</span>-5</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ82</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">GH5</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ91</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ92</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ93</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">TZ90</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">ZS70</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ330</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> (16:9, 3:2,&nbsp;1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ61</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS40</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ81</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS60</span>&nbsp;(4:3)</li> <li>Pentax K-5&nbsp;(dng)</li> <li>Pentax K-r&nbsp;(dng)</li> <li>Pentax <span class="caps">K10D</span>&nbsp;(dng)</li> <li>Phase One <span class="caps">IQ140</span></li> <li>Samsung <span class="caps">G920F</span></li> <li>Samsung <span class="caps">G935F</span></li> <li>Samsung <span class="caps">GX10</span></li> <li>Sony <span class="caps">ILCE</span>-6500</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7RM3</span></li> <li>Sony <span class="caps">ILCE</span>-9</li> </ul> <h3>White Balance&nbsp;Presets</h3> <ul> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-T20</li> <li>Fujifilm <span class="caps">X100F</span></li> <li>Nikon 1 <span class="caps">AW1</span></li> <li>Nikon Coolpix&nbsp;A</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax K-3 <span class="caps">II</span></li> </ul> <h3>Noise&nbsp;Profiles</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-M1</li> <li>Fujifilm&nbsp;X-Pro1</li> <li>Fujifilm&nbsp;X-T20</li> <li>Leica&nbsp;X2</li> <li>Nikon Coolpix&nbsp;A</li> <li>Nikon <span class="caps">D2X</span></li> <li>Nikon&nbsp;D3000</li> <li>Nikon&nbsp;D3400</li> <li>Nikon&nbsp;D4</li> <li>Nikon&nbsp;D500</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus&nbsp;E-P5</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ200</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span></li> <li>Panasonic <span class="caps">DMC</span>-G7</li> <li>Panasonic <span class="caps">DMC</span>-G70</li> <li>Panasonic <span class="caps">DMC</span>-G8</li> <li>Panasonic <span class="caps">DMC</span>-G80</li> <li>Panasonic <span class="caps">DMC</span>-G81</li> <li>Panasonic <span class="caps">DMC</span>-G85</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax&nbsp;K-70</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-5000</li> <li>Sony <span class="caps">ILCE</span>-6500</li> </ul> <h2>Updated&nbsp;Translations</h2> <ul> <li>Catalan</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hebrew</li> <li>Hungarian</li> <li>Polish</li> <li>Russian</li> <li>Spanish</li> </ul><img src="https://www.darktable.org/2017/12/darktable-2-4-0rc2-released/lede.jpg" class="hidden-lede">houzMon, 18 Dec 2017 10:33:00 +0000tag:www.darktable.org,2017-12-18:2017/12/darktable-2-4-0rc2-released/announcementdarktable releasedarktable 2.4.0rc1 releasedhttps://www.darktable.org/2017/12/darktable-2-4-0rc1-released/<p>we&#8217;re proud to announce the second release candidate for the upcoming 2.4 series of darktable,&nbsp;2.4.0rc1!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc1">https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc1</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.4.0rc1.tar.xz 2b38462584223a0f74f081dc025e1811b524f403d919734a1b8c15f7c87858ea darktable-2.4.0rc1.tar.xz $ sha256sum darktable-2.4.0rc1.dmg ??? darktable-2.4.0rc1.dmg $ sha256sum darktable-2.4.0rc1.exe d576071f7052d61acf35d05184d5e12c2bdedcb1dce0159668022c2e46c6467d darktable-2.4.0rc1.exe </pre></div> <h4>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, <em>please</em> read <a href="https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri">this post</a> on how/what raw samples you can contribute to ensure that we have the <em>full</em> raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</h4> <h2>changes since&nbsp;rc0</h2> <ul> <li>noise profile for Nikon&nbsp;D4</li> <li>Phase One <span class="caps">IQ140</span>&nbsp;support</li> <li><span class="caps">OSX</span> packaging&nbsp;fixes</li> <li>Lightroom 7 import&nbsp;fixes</li> <li>Some fixes for sliders and comboboxen and grabbing the keyboard&nbsp;focus</li> <li>No longer use colored sliders in the white balance module – they confused&nbsp;people</li> <li>Update Catalan&nbsp;translation</li> <li>Update Hungarian&nbsp;translation</li> <li>Fix OpenCL on <span class="caps">OSX</span></li> <li>Bail out of darktable-cli when the <span class="caps">XMP</span> file is not&nbsp;readable</li> <li>Fix timezone selection for geotagging on&nbsp;Windows</li> <li>Canon <span class="caps">EOS</span> M100&nbsp;supported</li> <li>Show ratings on zoomable lighttable without a&nbsp;delay</li> <li>Rely on <span class="caps">CUPS</span> color management when printing without configuring any color profile in&nbsp;darktable</li> </ul> <p>and the changelog as compared to 2.2.0 can be found below. Some of the fixes might have been backported to the stable 2.2.x series&nbsp;already.</p> <ul> <li>The maintainership of the RawSpeed library was transferred to the darktable project. The work on code cleanup, hardening, modernization, simplification and testing is&nbsp;ongoing.</li> <li>Well over 2 thousand commits to darktable+rawspeed since&nbsp;2.2.0</li> <li>244 pull requests&nbsp;handled</li> <li>320+ issues&nbsp;closed</li> <li>Updated user manual is coming&nbsp;soon™</li> </ul> <h2>Hell Froze&nbsp;Over</h2> <ul> <li>As you might have read on our <a href="https://www.darktable.org/2017/08/darktable-for-windows/">news post</a> we finally ported darktable to Windows and intend to support it in the future. At the moment it&#8217;s still lacking a few features (for example there is not printing support), has a few limitations (tethering requires special drivers to be installed) and comes with its own set of bugs. But overall we are confident that it&#8217;s quite usable already and hope you will enjoy it. A very special thanks goes to Peter Budai who finally convinced us to agree to the port and who did most of the&nbsp;work.</li> </ul> <h2>The Big&nbsp;Ones</h2> <ul> <li>A new module for haze&nbsp;removal</li> <li>The local contrast module can now be pushed much further, it also got a new local laplacian&nbsp;mode</li> <li>Add undo support for masks and more intelligent grouping of undo&nbsp;steps</li> <li>Blending now allows to display individual channels using false&nbsp;colors</li> <li>darktable now supports loading Fujifilm compressed&nbsp;RAFs</li> <li>darktable now supports loading floating point <span class="caps">HDR</span> DNGs as written by <span class="caps">HDRMERGE</span></li> <li>We also added channel specific blend modes for Lab and <span class="caps">RGB</span> color&nbsp;spaces</li> <li>The base curve module allows for more control of the exposure fusion feature using the newly added bias&nbsp;slider</li> <li>The tonecurve module now supports auto colour adjustment in <span class="caps">RGB</span></li> <li>Add absolute color input as an option to the color look up table&nbsp;module</li> <li>A new X-Trans demosaicing algorithm, Frequency Domain Chroma, was&nbsp;implemented.</li> <li>You can now choose from pre-defined scheduling profiles for&nbsp;OpenCL</li> <li>Speaking of OpenCL, darktable now allows to force-use OpenCL for a specific&nbsp;pixelpipe</li> <li>Xmp sidecar files are no longer written to disk when the content didn&#8217;t actually change. That mostly helps with network storage and backup systems that use files&#8217; time&nbsp;stamps</li> </ul> <h2>New Features And&nbsp;Changes</h2> <ul> <li>Show a dialog window that tells when locking the database/library&nbsp;failed</li> <li>Don&#8217;t shade the whole region on the map when searching for a location. Instead just draw a border around&nbsp;it.</li> <li>Also in map mode: Clear the search list and map indicators when resetting the search&nbsp;module.</li> <li>With OsmGPSMap newer than version 1.1.0 (i.e., anything released after that OsmGPSMap version) the map will show copyright&nbsp;info.</li> <li>Running jobs with a progressbar (mostly import and export) will show that progress bar ontop the window entry in your task bar – if the system supports it. It should work on <span class="caps">GNOME</span>, <span class="caps">KDE</span> and Windows at&nbsp;least.</li> <li>Add bash like string replacement for variables (export, watermark, session&nbsp;settings).</li> <li>Add a preferences option to ask before removing empty&nbsp;dirs</li> <li>The &#8220;colorbalance&#8221; module got a lot faster, thanks to <span class="caps">SSE</span> optimized&nbsp;code</li> <li>Make gradient sliders a little more&nbsp;colorful</li> <li>Make <span class="caps">PNG</span> compression level used for exporting&nbsp;configurable</li> <li>On <span class="caps">OSX</span>, load single images from command line or via drag&amp;drop in darkroom&nbsp;mode</li> <li>Add an option to omit the intermediate tag hierarchy in exported files and only add the last&nbsp;level</li> <li>In the watermark module, sort the list of <span class="caps">SVG</span> files and omit the file&nbsp;extension</li> <li>Support <span class="caps">XYZ</span> as a proofing&nbsp;profile</li> <li>Local contrast now got a new slider to set the midtone&nbsp;range</li> <li>darktable got two new helper scripts (those are not installed by default, grab them from the sources): One to purge thumbnails that no longer have an associated image in the database, and a second script that uses inotify to watch a folder for new files to open them in a running darktable&nbsp;instance.</li> <li>In the curve editors of base curve and tone curve you can now delete nodes with a right click and see coordinates of nodes while editing. Note that you can use keyboard modifiers ctrl and shift to change the precision of your&nbsp;changes</li> <li>Creating a new instance of a module can now be done with a quick click of the middle mouse button on the multi-instance&nbsp;icon</li> <li>New darktable installations on computers with more than 8 Gb of memory will now by default use half of that per&nbsp;module</li> <li>Several background colors and the brush color are now configurable in the <span class="caps">CSS</span></li> <li>Some new cameras can bump the <span class="caps">ISO</span> level to insane highs. We try to follow as good as we can by no longer limiting it to 51200 in the <span class="caps">GUI</span></li> <li>Base curve and the highlights module now support multiple instances and use blending and&nbsp;masks</li> <li>Having the <code>1</code> key toggle between 1 and 0 stars wasn&#8217;t very popular with many people. You can disable that extra feature and have it behave like the other rating shortcuts&nbsp;now</li> <li>You can decide if you want to be asked before resetting the history stacks of images from the&nbsp;lighttable</li> <li>The grain module was slightly changed to have a more pleasing, photographic-paper like&nbsp;appearance</li> <li>Using the color look up table module you can now convert your images to monochrome, honoring the Helmholtz-Kohlrausch&nbsp;effect</li> <li>Some more small improvements were&nbsp;made</li> <li>Support basic import of Lightroom 7&nbsp;settings</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix the problem with rating images by accident when moving the mouse while typing an image size in the export&nbsp;module</li> <li>Fix several oddities in folder and tag mode of the collect&nbsp;module.</li> <li>Print mode&#8217;s color profile settings no longer interact with the export&nbsp;module</li> <li>Update the style lists when importing a&nbsp;style</li> <li>Fix some bugs with multiple module instances used in a&nbsp;style</li> <li>On <span class="caps">OSX</span> only the main window should be fullscreen, not the&nbsp;popups</li> <li>Some speedups with <span class="caps">VERY</span> big libraries or having A <span class="caps">LOT</span> <span class="caps">OF</span>&nbsp;tags</li> <li>Significantly speed up tagging many&nbsp;images</li> <li>Fix searching locations using&nbsp;OpenStreetMap</li> <li>Fix partial copies of large files in &#8220;import from&nbsp;camera&#8221;</li> <li>Fix a crash in the import dialog when using Lua to add widgets&nbsp;there</li> <li>Fix some false-positive warnings about another running darktable instance and it having locked the&nbsp;databases</li> <li>No longer switch to the favourite modules group when duplicating one of its&nbsp;modules</li> <li>Fix loading of <span class="caps">XYZ</span>&nbsp;files</li> <li>Fix Lab export when the profile was set from the&nbsp;lighttable</li> <li>Create tmp snapshot files with mode 0600 to stop other people looking at&nbsp;them</li> <li>Fix several bugs with Wayland. However, there are still issues, so darktable will prefer&nbsp;XWayland</li> <li>Google deprecated the Picasa Web <span class="caps">API</span> so it&#8217;s no longer possible to create G+&nbsp;albums</li> <li>Fix the default for sliders with target not being &#8220;red&#8221; in the channel&nbsp;mixer</li> <li>Fix the removing of&nbsp;directories</li> <li>Make the escape key cancel history&nbsp;dialogs</li> <li>Block keyboard accels when editing camera&nbsp;controls</li> <li>Properly delete <span class="caps">XMP</span>&nbsp;sidecars</li> <li>Make sure that the rating set in darktable is used for the exported file, not something set inside the raw&nbsp;file</li> <li>Don&#8217;t re-write all <span class="caps">XMP</span> files when detaching a&nbsp;tag</li> <li>Sync XMPs when a tag is removed from the&nbsp;database</li> <li>Sync XMPs after a tag is attached/detached via the Lua <span class="caps">API</span></li> <li>Bail out of darktable-cli when the <span class="caps">XMP</span> file is not&nbsp;readable</li> <li>Show ratings on zoomable lighttable without a&nbsp;delay</li> <li>Rely on <span class="caps">CUPS</span> color management when printing without configuring any color profile in&nbsp;darktable</li> <li>Many more bugs got&nbsp;fixed</li> </ul> <h2>Lua</h2> <ul> <li>darktable now uses Lua 5.3. The bundled copy got updated&nbsp;accordingly</li> <li>Add dt.print_log. It&#8217;s like print_error but without the <span class="caps">ERROR</span>&nbsp;prefix</li> <li>Reorder callback parameters for intermediate export image: add the actual image to the parameters of the&nbsp;event</li> <li>Call lua post-import-image event&nbsp;synchronously</li> <li>Add darktable.configuration.running_os to detect the <span class="caps">OS</span> darktable is running&nbsp;on</li> <li>New widget type: section_label, adds a label which looks like a section&nbsp;change</li> </ul> <h2>Changed&nbsp;Dependencies</h2> <ul> <li>CMake 3.1 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.9+/clang-3.4+, and gcc-5.0+ is <em>highly</em>&nbsp;recommended.</li> <li><span class="caps">ZLIB</span> is now required for the <span class="caps">DNG</span> Deflate compressed raw&nbsp;support.</li> <li>darktable now uses Lua&nbsp;5.3</li> </ul> <h2>Camera support, compared to&nbsp;2.2.0</h2> <h4>Warning: support for Nikon <span class="caps">NEF</span> &#8216;lossy after split&#8217; raws was unintentionally broken due to the lack of such samples. Please see <a href="https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri">this post</a> for more details. If you have affected raws, please contribute&nbsp;samples!</h4> <h3>Base&nbsp;Support</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9</li> <li>Canon <span class="caps">EOS</span> Rebel <span class="caps">SL2</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span> (sRaw1,&nbsp;sRaw2)</li> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;800D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T7i</li> <li>Canon <span class="caps">EOS</span>&nbsp;M100</li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon <span class="caps">EOS</span>&nbsp;M6</li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Canon PowerShot <span class="caps">SX40</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm <span class="caps">GFX</span> 50S&nbsp;(compressed)</li> <li>Fujifilm&nbsp;X-A3</li> <li>Fujifilm X-<span class="caps">E2S</span></li> <li>Fujifilm X-E3&nbsp;(compressed)</li> <li>Fujifilm X-Pro2&nbsp;(compressed)</li> <li>Fujifilm X-T2&nbsp;(compressed)</li> <li>Fujifilm X-T20&nbsp;(compressed)</li> <li>Fujifilm <span class="caps">X100F</span>&nbsp;(compressed)</li> <li><span class="caps">GITUP</span> <span class="caps">GIT2P</span> (chdk-a,&nbsp;chdk-b)</li> <li>Kodak EasyShare&nbsp;Z980</li> <li><span class="caps">LG</span> D855&nbsp;(dng)</li> <li><span class="caps">LG</span> H815&nbsp;(dng)</li> <li><span class="caps">LG</span> Nexus 5X&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">US996</span>&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">VS995</span>&nbsp;(dng)</li> <li>Leica D-<span class="caps">LUX</span> (Typ 109) (4:3, 3:2, 16:9,&nbsp;1:1)</li> <li>Leica X2&nbsp;(dng)</li> <li>Nikon <span class="caps">COOLPIX</span> B700&nbsp;(12bit-uncompressed)</li> <li>Nikon D500 (14bit-uncompressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5600 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D7500 (12bit-compressed,&nbsp;14bit-compressed)</li> <li>Nikon D850 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon <span class="caps">LS</span>-5000&nbsp;(dng)</li> <li>Nokia Lumia 1020&nbsp;(dng)</li> <li>Olympus E-M10 Mark <span class="caps">III</span></li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus <span class="caps">TG</span>-5</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ82</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">GH5</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ91</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ92</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ93</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">TZ90</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">ZS70</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ330</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> (16:9, 3:2,&nbsp;1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ61</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS40</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ81</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS60</span>&nbsp;(4:3)</li> <li>Pentax K-5&nbsp;(dng)</li> <li>Pentax K-r&nbsp;(dng)</li> <li>Pentax <span class="caps">K10D</span>&nbsp;(dng)</li> <li>Phase One <span class="caps">IQ140</span></li> <li>Samsung <span class="caps">G920F</span></li> <li>Samsung <span class="caps">G935F</span></li> <li>Samsung <span class="caps">GX10</span></li> <li>Sony <span class="caps">ILCE</span>-6500</li> <li>Sony <span class="caps">ILCE</span>-9</li> </ul> <h3>White Balance&nbsp;Presets</h3> <ul> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-T20</li> <li>Fujifilm <span class="caps">X100F</span></li> <li>Nikon 1 <span class="caps">AW1</span></li> <li>Nikon Coolpix&nbsp;A</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax K-3 <span class="caps">II</span></li> </ul> <h3>Noise&nbsp;Profiles</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-M1</li> <li>Fujifilm&nbsp;X-Pro1</li> <li>Fujifilm&nbsp;X-T20</li> <li>Leica&nbsp;X2</li> <li>Nikon Coolpix&nbsp;A</li> <li>Nikon <span class="caps">D2X</span></li> <li>Nikon&nbsp;D3000</li> <li>Nikon&nbsp;D3400</li> <li>Nikon&nbsp;D4</li> <li>Nikon&nbsp;D500</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus&nbsp;E-P5</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ200</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span></li> <li>Panasonic <span class="caps">DMC</span>-G7</li> <li>Panasonic <span class="caps">DMC</span>-G70</li> <li>Panasonic <span class="caps">DMC</span>-G8</li> <li>Panasonic <span class="caps">DMC</span>-G80</li> <li>Panasonic <span class="caps">DMC</span>-G81</li> <li>Panasonic <span class="caps">DMC</span>-G85</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax&nbsp;K-70</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-5000</li> <li>Sony <span class="caps">ILCE</span>-6500</li> </ul> <h2>Updated&nbsp;Translations</h2> <ul> <li>Catalan</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hebrew</li> <li>Hungarian</li> <li>Russian</li> <li>Spanish</li> </ul><img src="https://www.darktable.org/2017/12/darktable-2-4-0rc1-released/snow_midget.jpg" class="hidden-lede">houzTue, 12 Dec 2017 09:42:00 +0000tag:www.darktable.org,2017-12-12:2017/12/darktable-2-4-0rc1-released/announcementdarktable releasedarktable 2.4.0rc0 releasedhttps://www.darktable.org/2017/12/darktable-2-4-0rc0-released/<p>we&#8217;re proud to announce the first release candidate for the upcoming 2.4 series of darktable,&nbsp;2.4.0rc0!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc0">https://github.com/darktable-org/darktable/releases/tag/release-2.4.0rc0</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.4.0rc0.tar.xz 66795f96dfd46b921a006836eb062f40cab1e93d018f61ccb7e650fb01a0016d darktable-2.4.0rc0.tar.xz $ sha256sum darktable-2.4.0rc0.dmg 23894c0ec808c8420719646ee289aba68fc15761ce812358ba3456691ad5849c darktable-2.4.0rc0.dmg $ sha256sum darktable-2.4.0rc0.exe ed560de786340cbdd94e446615cec8eef52fbbeb3ac81f7d10edfeee1e5b74ee darktable-2.4.0rc0.exe </pre></div> <h4>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, <em>please</em> read <a href="https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri">this post</a> on how/what raw samples you can contribute to ensure that we have the <em>full</em> raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</h4> <p>and the changelog as compared to 2.2.0 can be found below. Some of the fixes might have been backported to the stable 2.2.x series&nbsp;already.</p> <ul> <li>The maintainership of the RawSpeed library was transferred to the darktable project. The work on code cleanup, hardening, modernization, simplification and testing is&nbsp;ongoing.</li> <li>Well over 2 thousand commits to darktable+rawspeed since&nbsp;2.2.0</li> <li>244 pull requests&nbsp;handled</li> <li>320+ issues&nbsp;closed</li> <li>Updated user manual is coming&nbsp;soon™</li> </ul> <h2>Hell Froze&nbsp;Over</h2> <ul> <li>As you might have read on our <a href="https://www.darktable.org/2017/08/darktable-for-windows/">news post</a> we finally ported darktable to Windows and intend to support it in the future. At the moment it&#8217;s still lacking a few features (for example there is not printing support), has a few limitations (tethering requires special drivers to be installed) and comes with its own set of bugs. But overall we are confident that it&#8217;s quite usable already and hope you will enjoy it. A very special thanks goes to Peter Budai who finally convinced us to agree to the port and who did most of the&nbsp;work.</li> </ul> <h2>The Big&nbsp;Ones</h2> <ul> <li>A new module for haze&nbsp;removal</li> <li>The local contrast module can now be pushed much further, it also got a new local laplacian&nbsp;mode</li> <li>Add undo support for masks and more intelligent grouping of undo&nbsp;steps</li> <li>Blending now allows to display individual channels using false&nbsp;colors</li> <li>darktable now supports loading Fujifilm compressed&nbsp;RAFs</li> <li>darktable now supports loading floating point <span class="caps">HDR</span> DNGs as written by <span class="caps">HDRMERGE</span></li> <li>We also added channel specific blend modes for Lab and <span class="caps">RGB</span> color&nbsp;spaces</li> <li>The base curve module allows for more control of the exposure fusion feature using the newly added bias&nbsp;slider</li> <li>The tonecurve module now supports auto colour adjustment in <span class="caps">RGB</span></li> <li>Add absolute color input as an option to the color look up table&nbsp;module</li> <li>A new X-Trans demosaicing algorithm, Frequency Domain Chroma, was&nbsp;implemented.</li> <li>You can now choose from pre-defined scheduling profiles for&nbsp;OpenCL</li> <li>Speaking of OpenCL, darktable now allows to force-use OpenCL for a specific&nbsp;pixelpipe</li> <li>Xmp sidecar files are no longer written to disk when the content didn&#8217;t actually change. That mostly helps with network storage and backup systems that use files&#8217; time&nbsp;stamps</li> </ul> <h2>New Features And&nbsp;Changes</h2> <ul> <li>Show a dialog window that tells when locking the database/library&nbsp;failed</li> <li>Don&#8217;t shade the whole region on the map when searching for a location. Instead just draw a border around&nbsp;it.</li> <li>Also in map mode: Clear the search list and map indicators when resetting the search&nbsp;module.</li> <li>With OsmGPSMap newer than version 1.1.0 (i.e., anything released after that OsmGPSMap version) the map will show copyright&nbsp;info.</li> <li>Running jobs with a progressbar (mostly import and export) will show that progress bar ontop the window entry in your task bar – if the system supports it. It should work on <span class="caps">GNOME</span>, <span class="caps">KDE</span> and Windows at&nbsp;least.</li> <li>Add bash like string replacement for variables (export, watermark, session&nbsp;settings).</li> <li>Add a preferences option to ask before removing empty&nbsp;dirs</li> <li>The &#8220;colorbalance&#8221; module got a lot faster, thanks to <span class="caps">SSE</span> optimized&nbsp;code</li> <li>Make gradient sliders a little more colorful and use them in the white balance&nbsp;module</li> <li>Make <span class="caps">PNG</span> compression level used for exporting&nbsp;configurable</li> <li>On <span class="caps">OSX</span>, load single images from command line or via drag&amp;drop in darkroom&nbsp;mode</li> <li>Add an option to omit the intermediate tag hierarchy in exported files and only add the last&nbsp;level</li> <li>In the watermark module, sort the list of <span class="caps">SVG</span> files and omit the file&nbsp;extension</li> <li>Support <span class="caps">XYZ</span> as a proofing&nbsp;profile</li> <li>Local contrast now got a new slider to set the midtone&nbsp;range</li> <li>darktable got two new helper scripts (those are not installed by default, grab them from the sources): One to purge thumbnails that no longer have an associated image in the database, and a second script that uses inotify to watch a folder for new files to open them in a running darktable&nbsp;instance.</li> <li>In the curve editors of base curve and tone curve you can now delete nodes with a right click and see coordinates of nodes while editing. Note that you can use keyboard modifiers ctrl and shift to change the precision of your&nbsp;changes</li> <li>Creating a new instance of a module can now be done with a quick click of the middle mouse button on the multi-instance&nbsp;icon</li> <li>New darktable installations on computers with more than 8 Gb of memory will now by default use half of that per&nbsp;module</li> <li>Several background colors and the brush color are now configurable in the <span class="caps">CSS</span></li> <li>Some new cameras can bump the <span class="caps">ISO</span> level to insane highs. We try to follow as good as we can by no longer limiting it to 51200 in the <span class="caps">GUI</span></li> <li>Base curve and the highlights module now support multiple instances and use blending and&nbsp;masks</li> <li>Having the <code>1</code> key toggle between 1 and 0 stars wasn&#8217;t very popular with many people. You can disable that extra feature and have it behave like the other rating shortcuts&nbsp;now</li> <li>You can decide if you want to be asked before resetting the history stacks of images from the&nbsp;lighttable</li> <li>The grain module was slightly changed to have a more pleasing, photographic-paper like&nbsp;appearance</li> <li>Using the color look up table module you can now convert your images to monochrome, honoring the Helmholtz-Kohlrausch&nbsp;effect</li> <li>Some more small improvements were&nbsp;made</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix the problem with rating images by accident when moving the mouse while typing an image size in the export&nbsp;module</li> <li>Fix several oddities in folder and tag mode of the collect&nbsp;module.</li> <li>Print mode&#8217;s color profile settings no longer interact with the export&nbsp;module</li> <li>Update the style lists when importing a&nbsp;style</li> <li>Fix some bugs with multiple module instances used in a&nbsp;style</li> <li>On <span class="caps">OSX</span> only the main window should be fullscreen, not the&nbsp;popups</li> <li>Some speedups with <span class="caps">VERY</span> big libraries or having A <span class="caps">LOT</span> <span class="caps">OF</span>&nbsp;tags</li> <li>Significantly speed up tagging many&nbsp;images</li> <li>Fix searching locations using&nbsp;OpenStreetMap</li> <li>Fix partial copies of large files in &#8220;import from&nbsp;camera&#8221;</li> <li>Fix a crash in the import dialog when using Lua to add widgets&nbsp;there</li> <li>Fix some false-positive warnings about another running darktable instance and it having locked the&nbsp;databases</li> <li>No longer switch to the favourite modules group when duplicating one of its&nbsp;modules</li> <li>Fix loading of <span class="caps">XYZ</span>&nbsp;files</li> <li>Fix Lab export when the profile was set from the&nbsp;lighttable</li> <li>Create tmp snapshot files with mode 0600 to stop other people looking at&nbsp;them</li> <li>Fix several bugs with Wayland. However, there are still issues, so darktable will prefer&nbsp;XWayland</li> <li>Google deprecated the Picasa Web <span class="caps">API</span> so it&#8217;s no longer possible to create G+&nbsp;albums</li> <li>Fix the default for sliders with target not being &#8220;red&#8221; in the channel&nbsp;mixer</li> <li>Fix the removing of&nbsp;directories</li> <li>Make the escape key cancel history&nbsp;dialogs</li> <li>Block keyboard accels when editing camera&nbsp;controls</li> <li>Properly delete <span class="caps">XMP</span>&nbsp;sidecars</li> <li>Make sure that the rating set in darktable is used for the exported file, not something set inside the raw&nbsp;file</li> <li>Don&#8217;t re-write all <span class="caps">XMP</span> files when detaching a&nbsp;tag</li> <li>Sync XMPs when a tag is removed from the&nbsp;database</li> <li>Sync XMPs after a tag is attached/detached via the Lua <span class="caps">API</span></li> <li>Many more bugs got&nbsp;fixed</li> </ul> <h2>Lua</h2> <ul> <li>darktable now uses Lua 5.3. The bundled copy got updated&nbsp;accordingly</li> <li>Add dt.print_log. It&#8217;s like print_error but without the <span class="caps">ERROR</span>&nbsp;prefix</li> <li>Reorder callback parameters for intermediate export image: add the actual image to the parameters of the&nbsp;event</li> <li>Call lua post-import-image event&nbsp;synchronously</li> <li>Add darktable.configuration.running_os to detect the <span class="caps">OS</span> darktable is running&nbsp;on</li> <li>New widget type: section_label, adds a label which looks like a section&nbsp;change</li> </ul> <h2>Changed&nbsp;Dependencies</h2> <ul> <li>CMake 3.1 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.9+/clang-3.4+, and gcc-5.0+ is <em>highly</em>&nbsp;recommended.</li> <li><span class="caps">ZLIB</span> is now required for the <span class="caps">DNG</span> Deflate compressed raw&nbsp;support.</li> <li>darktable now uses Lua&nbsp;5.3</li> </ul> <h2>Camera support, compared to&nbsp;2.2.0</h2> <h4>Warning: support for Nikon <span class="caps">NEF</span> &#8216;lossy after split&#8217; raws was unintentionally broken due to the lack of such samples. Please see <a href="https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri">this post</a> for more details. If you have affected raws, please contribute&nbsp;samples!</h4> <h3>Base&nbsp;Support</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9</li> <li>Canon <span class="caps">EOS</span> Rebel <span class="caps">SL2</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span> (sRaw1,&nbsp;sRaw2)</li> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;800D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X9i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T7i</li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon <span class="caps">EOS</span>&nbsp;M6</li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Canon PowerShot <span class="caps">SX40</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm <span class="caps">GFX</span> 50S&nbsp;(compressed)</li> <li>Fujifilm&nbsp;X-A3</li> <li>Fujifilm X-<span class="caps">E2S</span></li> <li>Fujifilm X-E3&nbsp;(compressed)</li> <li>Fujifilm X-Pro2&nbsp;(compressed)</li> <li>Fujifilm X-T2&nbsp;(compressed)</li> <li>Fujifilm X-T20&nbsp;(compressed)</li> <li>Fujifilm <span class="caps">X100F</span>&nbsp;(compressed)</li> <li><span class="caps">GITUP</span> <span class="caps">GIT2P</span> (chdk-a,&nbsp;chdk-b)</li> <li>Kodak EasyShare&nbsp;Z980</li> <li><span class="caps">LG</span> D855&nbsp;(dng)</li> <li><span class="caps">LG</span> H815&nbsp;(dng)</li> <li><span class="caps">LG</span> Nexus 5X&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">US996</span>&nbsp;(dng)</li> <li><span class="caps">LG</span> <span class="caps">VS995</span>&nbsp;(dng)</li> <li>Leica D-<span class="caps">LUX</span> (Typ 109) (4:3, 3:2, 16:9,&nbsp;1:1)</li> <li>Leica X2&nbsp;(dng)</li> <li>Nikon <span class="caps">COOLPIX</span> B700&nbsp;(12bit-uncompressed)</li> <li>Nikon D500 (14bit-uncompressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5600 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D7500 (12bit-compressed,&nbsp;14bit-compressed)</li> <li>Nikon D850 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon <span class="caps">LS</span>-5000&nbsp;(dng)</li> <li>Nokia Lumia 1020&nbsp;(dng)</li> <li>Olympus E-M10 Mark <span class="caps">III</span></li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus <span class="caps">TG</span>-5</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ82</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">GH5</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ91</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ92</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ93</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">TZ90</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">ZS70</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ330</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> (16:9, 3:2,&nbsp;1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ61</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS40</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ81</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS60</span>&nbsp;(4:3)</li> <li>Pentax K-5&nbsp;(dng)</li> <li>Pentax K-r&nbsp;(dng)</li> <li>Pentax <span class="caps">K10D</span>&nbsp;(dng)</li> <li>Samsung <span class="caps">G920F</span></li> <li>Samsung <span class="caps">G935F</span></li> <li>Samsung <span class="caps">GX10</span></li> <li>Sony <span class="caps">ILCE</span>-6500</li> <li>Sony <span class="caps">ILCE</span>-9</li> </ul> <h3>White Balance&nbsp;Presets</h3> <ul> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-T20</li> <li>Fujifilm <span class="caps">X100F</span></li> <li>Nikon 1 <span class="caps">AW1</span></li> <li>Nikon Coolpix&nbsp;A</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax K-3 <span class="caps">II</span></li> </ul> <h3>Noise&nbsp;Profiles</h3> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> 6D Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-M1</li> <li>Fujifilm&nbsp;X-Pro1</li> <li>Fujifilm&nbsp;X-T20</li> <li>Leica&nbsp;X2</li> <li>Nikon Coolpix&nbsp;A</li> <li>Nikon <span class="caps">D2X</span></li> <li>Nikon&nbsp;D3000</li> <li>Nikon&nbsp;D3400</li> <li>Nikon&nbsp;D500</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Olympus&nbsp;E-P5</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ200</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span></li> <li>Panasonic <span class="caps">DMC</span>-G7</li> <li>Panasonic <span class="caps">DMC</span>-G70</li> <li>Panasonic <span class="caps">DMC</span>-G8</li> <li>Panasonic <span class="caps">DMC</span>-G80</li> <li>Panasonic <span class="caps">DMC</span>-G81</li> <li>Panasonic <span class="caps">DMC</span>-G85</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span></li> <li>Pentax&nbsp;K-70</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-5000</li> <li>Sony <span class="caps">ILCE</span>-6500</li> </ul> <h2>Updated&nbsp;Translations</h2> <ul> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hebrew</li> <li>Russian</li> <li>Spanish</li> </ul><img src="https://www.darktable.org/2017/12/darktable-2-4-0rc0-released/tit_lede.jpg" class="hidden-lede">houzSun, 03 Dec 2017 15:23:00 +0000tag:www.darktable.org,2017-12-03:2017/12/darktable-2-4-0rc0-released/announcementdarktable releaselocal laplacian pyramidshttps://www.darktable.org/2017/11/local-laplacian-pyramids/<h1>improving contrast with the local laplacian&nbsp;filter</h1> <p>sometimes difficult lighting situations arise which, when taking photographs, result in unappealing pictures. for instance very uniform lighting on a cloudy day may give dull results, while very contrasty illumination (such as back lit) may require to compress the contrast to embrace both highlights and shadows in the limited dynamic range of the output&nbsp;device.</p> <p>refer to the following two shots as&nbsp;examples:</p> <ul> <li>input + high contrast&nbsp;b/w</li> <li>hdr +&nbsp;compressed</li> </ul> <p>many options to achieve this exist in literature and many of them are implemented in darktable&nbsp;already.</p> <p>this post is about yet another approach to this which turned out to be extremely versatile, almost artifact-free, and reasonably fast to compute: the local laplacian&nbsp;pyramid.</p> <p>repeat figure with curves and then it&#8217;s pretty much exposure fusion with many different images (one per gray&nbsp;level)</p> <h2>local contrast with the local laplacian&nbsp;pyramid</h2> <p><a href="http://persci.mit.edu/pub_pdfs/pyramid83.pdf">vanilla laplacian pyramids</a> [0] are known to be a good tool to blend over between two images. for their applicability to local contrast, not so much. perhaps surprisingly, following up on exposure fusion (we <a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/">blogged about that for darktable before</a> ), a clever way to modify local contrast based on laplacian pyramids <a href="https://people.csail.mit.edu/sparis/publi/2011/siggraph/">has been devised</a> [1]: it works by pretty much creating a separate laplacian pyramid for every pixel in the image, and then selecting coefficients from these these based on certain&nbsp;criteria.</p> <p>luckily, <a href="http://www.di.ens.fr/~aubry/llf.html">this can be reduced to processing the image only a small, fixed number of times</a> [2]. the procedure is then&nbsp;basically:</p> <ul> <li>process the image n times, mapping it through a curve (see below for&nbsp;examples)</li> <li>create the n laplacian pyramids that go with the&nbsp;images</li> <li>merge into a final laplacian&nbsp;pyramid</li> <li>collapse this output pyramid to create the output&nbsp;image.</li> </ul> <p>this is nicely illustrated in this video exported from&nbsp;halide:</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/t4mbrKYRmvs?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <p>also, as it turns out, the gpu is really good at processing laplacian pyramids. the opencl port of this turned out to be very&nbsp;useful.</p> <h2>the mapping&nbsp;function</h2> <p>why can we get away with this small fixed number n of processed pyramids? [2] gives the explanation in sec.&nbsp;3:</p> <p><em>If r is&nbsp;band-limited,</em></p> <p>(r is the family of curves which is applied to the input&nbsp;image).</p> <p>now if you look at the left image (which is taken from fig. 6 in [1]), it has clear kinks where the center part joints the straight lines. not band limited at all. don&#8217;t use this curve at home. it will produce random aliasing when used with the fast local laplacian&nbsp;code.</p> <p><span style="display: table-row;"> <span style="display: table-cell; max-width: 50%; position: relative"><span><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/fig6.png"><img alt="fig 6" src="fig6_thumb.png" /></a></span></span> &nbsp; <span style="display: table-cell; max-width: 50%; position: relative"><img alt="clarity" src="https://www.darktable.org/2017/11/local-laplacian-pyramids/curve_clarity.svg" /></span> </span></p> <p>darktable uses what is shown on the right instead: the contrast-s curve in the center part is modelled by a derivative of gaussian (with infinite support), which is added to the straight lines on either side, which are blended over using a quadratic bezier curve. you can <a href="https://github.com/darktable-org/darktable/blob/master/src/common/locallaplacian.c#L289">look up the precise code</a> if you&#8217;re&nbsp;interested.</p> <p>now changing the contrast-s curve in the middle changes local contrast, that&#8217;s great. looking at the sides of this curve, we would immediately want to use it for shadow lifting and highlight compression too. in fact that&#8217;s possible (see following section with images and accompanying curves). unfortunately some of the proposed optimisations in the original papers can&#8217;t be applied any more. for the shadow/highlight use case, the pyramid needs to be constructed all the way all the time, we can&#8217;t stop after three levels (or else the shadow lifting would depend on the scale of the&nbsp;image).</p> <p>this means darktable will always build the full pyramids, making this a little slower, but yielding best&nbsp;results.</p> <h2>the darktable&nbsp;ui</h2> <p>you can find our implementation of this filter in the <code>local contrast</code> module, when switched to local laplacian&nbsp;mode:</p> <p><span><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/gui.png"><img alt="ui" src="gui_thumb.png" /></a></span></p> <p>it allows you to change detail (or clarity or local contrast), highlight contrast, and shadow contrast separately. the last slider governs how wide the central region of the curve is, i.e. what is classified as shadow vs.&nbsp;mid-tone.</p> <p>in the following, we&#8217;ll go through these contrast sliders, showing a couple of corresponding conversion curves and the resulting effect on the output&nbsp;image.</p> <p>drag the separator in the middle to compare&nbsp;before/after!</p> <h3>increased local&nbsp;contrast:</h3> <p><span style="display: table-row;"> <span style="display: table-cell"><img alt="ident" src="https://www.darktable.org/2017/11/local-laplacian-pyramids/curve_ident.svg" /></span> &nbsp; <span style="display: table-cell"><img alt="clarity" src="curve_clarity.svg" /></span> </span></p> <p> <div> <div class="cato" id="id0001" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_01_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_01.jpg">clarity</a></p> </div> </div> <script type="text/javascript">createSlider("id0001");</script> </div> </p> <h3>pulled highlights&nbsp;down:</h3> <p>yes, the curve changes the bottom part. which you would think belongs to the shadows. turns out it&nbsp;doesn&#8217;t.</p> <p><span style="display: table-row;"> <span style="display: table-cell"><img alt="ident" src="curve_ident.svg" /></span> &nbsp; <span style="display: table-cell"><img alt="highlights" src="https://www.darktable.org/2017/11/local-laplacian-pyramids/curve_highlights.svg" /></span> </span></p> <p> <div> <div class="cato" id="id0002" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_02_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_02.jpg">highlights&nbsp;compressed</a></p> </div> </div> <script type="text/javascript">createSlider("id0002");</script> </div> </p> <h3>pushed shadows&nbsp;up:</h3> <p><span style="display: table-row;"> <span style="display: table-cell"><img alt="ident" src="curve_ident.svg" /></span> &nbsp; <span style="display: table-cell"><img alt="shadows" src="https://www.darktable.org/2017/11/local-laplacian-pyramids/curve_shadows.svg" /></span> </span></p> <p> <div> <div class="cato" id="id0003" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_03_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_03.jpg">shadows&nbsp;lifted</a></p> </div> </div> <script type="text/javascript">createSlider("id0003");</script> </div> </p> <h3>inverse of the&nbsp;above</h3> <p>and the inverse is also possible, top to bottom, left to right: original, removed details, pushed highlights out even more, pulled shadows&nbsp;deeper.</p> <p> <div> <div class="cato" id="id0004" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_06_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_06.jpg">details&nbsp;removed</a></p> </div> </div> <script type="text/javascript">createSlider("id0004");</script> </div> </p> <p> <div> <div class="cato" id="id0005" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_04_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_04.jpg">highlights&nbsp;pushed</a></p> </div> </div> <script type="text/javascript">createSlider("id0005");</script> </div> </p> <p> <div> <div class="cato" id="id0006" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/flower_05_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/flower_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/flower_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/flower_05.jpg">shadows&nbsp;deepened</a></p> </div> </div> <script type="text/javascript">createSlider("id0006");</script> </div> </p> <h2>application to hdr&nbsp;compression</h2> <p>in the following there are some comparison images from the previous post on exposure fusion. these have been processed again with a different&nbsp;approach:</p> <ul> <li>to compress the dynamic range, a very flat base curve has been used which maxes out at 0.5 for input values of&nbsp;1.0.</li> <li>as contrast-s curve, the tone curve module has been used, in rgb mode for automatic colour saturation&nbsp;compensation.</li> <li>the curve was created to match an out of camera raw+jpg pair using <code>darktable-chart</code> which also created a clut for the colour lookup table&nbsp;module.</li> </ul> <p>this approach will leave the image flat and dull (due to the flat base curve). to add back additional detail, we use the local laplacian module. this turns out to work a lot better together with a contrast-s tone curve than with a contrast-s base curve, since the base curve comes before the local contrast module in the pipeline, while the tone curve comes after. this way, the local contrast module receives more linear&nbsp;input.</p> <p>in fact, sometimes a contrast-s curve is not necessary at all for hdr input. exposure fusion shows some nicer behaviour with respect to colour saturation at times, but sometimes produces halo like artifacts. i find it easier to create good results with the local laplacian when aiming for a low key look (see the definition in the darker clouds in the left of the first image). really up to you and any given input images which method works&nbsp;better.</p> <p>example history stacks are in the example comparison images seen below: <a href="images/img_0002.jpg">0</a> <a href="images/img_0004.jpg">1</a> <a href="images/img_0006.jpg">2</a>.</p> <p> <div> <div class="cato" id="id0007" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/img_0002_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/img_0001_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/img_0001_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0001.jpg">exposure&nbsp;fusion</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0002.jpg">local&nbsp;laplacian</a></p> </div> </div> <script type="text/javascript">createSlider("id0007");</script> </div> </p> <p> <div> <div class="cato" id="id0008" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/img_0004_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/img_0003_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/img_0003_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0003.jpg">exposure&nbsp;fusion</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0004.jpg">local&nbsp;laplacian</a></p> </div> </div> <script type="text/javascript">createSlider("id0008");</script> </div> </p> <p> <div> <div class="cato" id="id0009" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/img_0006_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/img_0005_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/img_0005_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0005.jpg">exposure&nbsp;fusion</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/img_0006.jpg">local&nbsp;laplacian</a></p> </div> </div> <script type="text/javascript">createSlider("id0009");</script> </div> </p> <h2>application to high contrast&nbsp;monochrome</h2> <p> <div> <div class="cato" id="id0010" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/bw_0001_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/bw_0002_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/bw_0002_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/bw_0002.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/bw_0001.jpg">local&nbsp;laplacian</a></p> </div> </div> <script type="text/javascript">createSlider("id0010");</script> </div> </p> <p> <div> <div class="cato" id="id0011" ondragstart="return false"> <div draggable="false" style="background-image:url(&quot;images/bw_0003_thumb.jpg&quot;)"></div> <div draggable="false" style="background-image:url(&quot;images/bw_0004_thumb.jpg&quot;)"></div> <div class="cato_divider"></div> <img draggable="false" src="images/bw_0004_thumb.jpg" /><div> <p><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/bw_0004.jpg">original</a></p> </div> <div> <p class="cato_right"><a href="https://www.darktable.org/2017/11/local-laplacian-pyramids/images/bw_0003.jpg">local&nbsp;laplacian</a></p> </div> </div> <script type="text/javascript">createSlider("id0011");</script> </div> </p> <h2>a note on&nbsp;noise</h2> <p>when increasing contrast, you want to make sure the input isn&#8217;t noisy, or else that noise would be accentuated even more. but even when not increasing contrast, the local laplacian filter will show structured artifacts for noisy input. i find this mostly goes away when enabling at least chroma denoising for instance in the profiled denoising&nbsp;module.</p> <h2>literature</h2> <ul> <li>[0] <a href="http://persci.mit.edu/pub_pdfs/pyramid83.pdf">laplacian pyramids classic&nbsp;paper</a></li> <li>[1] <a href="https://people.csail.mit.edu/sparis/publi/2011/siggraph/">local laplacian pyramids project&nbsp;page</a></li> <li>[2] <a href="http://www.di.ens.fr/~aubry/llf.html">fast local laplacian&nbsp;filters</a></li> </ul><img src="https://www.darktable.org/2017/11/local-laplacian-pyramids/header.jpg" class="hidden-lede">joTue, 21 Nov 2017 20:21:45 +0000tag:www.darktable.org,2017-11-21:2017/11/local-laplacian-pyramids/blogdevelopmentfurther readingupcoming featuredarktable for Windowshttps://www.darktable.org/2017/08/darktable-for-windows/<p>A long time ago there was <a href="https://www.darktable.org/2011/07/that-other-os/">a post</a> about why we don&#8217;t have a Windows port. While I still stand by what I wrote six years ago, the times they are&nbsp;a-changin&#8217;.</p> <p>Then two years ago there was yet <a href="https://www.darktable.org/2015/07/why-dont-you-provide-a-windows-build/">another post</a> regarding Windows. The gist of it was that the real blocker for a Windows release isn&#8217;t so much a technical one but the lack of a person (or several) dedicated to maintaining it. Not just for the moment until all the patches got merged but for the foreseeable&nbsp;future.</p> <p>Then Peter Budai came along. Like some people before he managed to compile darktable on Windows and offered us the patches he had to do, but other than what we had seen before he stuck around, helped fix bugs and was open to suggestions how to solve things in a better way. Eventually we became confident that the lack of Windows maintainership might be&nbsp;solved.</p> <p>To cut a long story short, we are extremely pleased&nbsp;– albeit wary&nbsp;– to announce a very first official pre-alpha development snapshot for 64 bit Windows. We know it&#8217;s still buggy, but as a sign of goodwill and request for help in testing it we would like to ask you to give it a try. Please report useful bugs in our <a href="https://redmine.darktable.org/projects/darktable/issues/new">bug tracker</a>.</p> <p>You can find the link to the binary on the <a href="https://discuss.pixls.us/t/darktable-for-windows/4966">pixls.us forum</a> (a great place btw., you should check it&nbsp;out).</p><img src="https://www.darktable.org/2017/08/darktable-for-windows/horse_in_stable_wide.jpg" class="hidden-lede">houzWed, 30 Aug 2017 18:11:00 +0000tag:www.darktable.org,2017-08-30:2017/08/darktable-for-windows/announcementdarktable releasedarktable 2.2.5 releasedhttps://www.darktable.org/2017/06/darktable-2-2-5-released/<p>we&#8217;re proud to announce the fifth bugfix release for the 2.2 series of darktable,&nbsp;2.2.5!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.5">https://github.com/darktable-org/darktable/releases/tag/release-2.2.5</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.2.5.tar.xz e303a42b33f78eb1f48d3b36d1df46f30873df4c5a7b49605314f61c49fbf281 darktable-2.2.5.tar.xz $ sha256sum darktable-2.2.5.dmg f6e8601fca9a08d988dc939484d03e137c16dface48351ef523b5e0bbbaecf18 darktable-2.2.5.dmg </pre></div> <p>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please help us by visiting <a href="https://raw.pixls.us/">https://raw.pixls.us/</a> and making sure that we have the full raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</p> <p>and the changelog as compared to 2.2.4 can be found&nbsp;below.</p> <h2>New&nbsp;features:</h2> <ul> <li>When appending <span class="caps">EXIF</span> data to an exported image, do not fail if reading of <span class="caps">EXIF</span> from the original file&nbsp;fails</li> <li>Support <span class="caps">XYZ</span> as proofing&nbsp;profile</li> <li>Clear DerivedFrom from <span class="caps">XMP</span> before writing&nbsp;it</li> <li>bauhaus: when using soft bounds, keep slider step&nbsp;constant</li> </ul> <h2>Bugfixes:</h2> <ul> <li>Some <span class="caps">GCC7</span> build&nbsp;fixes</li> <li>cmstest: fix crash when missing XRandR&nbsp;extension.</li> <li>Fix crash in Lua libs when collapsing&nbsp;libs</li> <li>Mac packaging: some&nbsp;fixes</li> <li>RawSpeed: TiffIFD: avoid&nbsp;double-free</li> <li>Fix a few alloc-dealloc&nbsp;mismatches</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;77D</li> <li>Canon <span class="caps">EOS</span>&nbsp;9000D</li> <li>Nikon D500 (14bit-uncompressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5600 (12bit-compressed, 12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">FZ82</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DC</span>-<span class="caps">GH5</span>&nbsp;(4:3)</li> </ul> <h2>White Balance&nbsp;Presets:</h2> <ul> <li>Pentax K-3 <span class="caps">II</span></li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Nikon&nbsp;D500</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX100</span></li> <li>Pentax&nbsp;K-70</li> <li>Sony <span class="caps">ILCE</span>-5000</li> </ul><img src="https://www.darktable.org/2017/06/darktable-2-2-5-released/train_station_wide.jpg" class="hidden-lede">houzFri, 02 Jun 2017 06:55:00 +0000tag:www.darktable.org,2017-06-02:2017/06/darktable-2-2-5-released/announcementdarktable releaseComments be gonehttps://www.darktable.org/2017/04/comments-be-gone/<p>We are sorry to inform you that we had to disable comments on this website. Currently there are more than 21 thousand messages in the spam queue plus another 2.6 thousand in the review queue. There is no way we can handle those. If you want to get in touch with us then head over to the <a href="https://www.darktable.org/contact/">contact page</a> and find what suits you best&nbsp;– mailing lists, <span class="caps">IRC</span>, bug tracker, … We hope to be able to get some alternative up and running, but that might take some time as it&#8217;s not really a high priority for&nbsp;us.</p>houzThu, 06 Apr 2017 19:33:32 +0000tag:www.darktable.org,2017-04-06:2017/04/comments-be-gone/announcementinfrastructurewebsitedarktable 2.2.4 releasedhttps://www.darktable.org/2017/04/darktable-2-2-4-released/<p>we&#8217;re proud to announce the fourth bugfix release for the 2.2 series of darktable,&nbsp;2.2.4!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.4">https://github.com/darktable-org/darktable/releases/tag/release-2.2.4</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.2.4.tar.xz bd5445d6b81fc3288fb07362870e24bb0b5378cacad2c6e6602e32de676bf9d8 darktable-2.2.4.tar.xz $ sha256sum darktable-2.2.4.6.dmg b7e4aeaa4b275083fa98b2a20e77ceb3ee48af3f7cc48a89f41a035d699bd71c darktable-2.2.4.6.dmg </pre></div> <p>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please help us by visiting <a href="https://raw.pixls.us/">https://raw.pixls.us/</a> and making sure that we have the full raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</p> <p>and the changelog as compared to 2.2.3 can be found&nbsp;below.</p> <h2>New&nbsp;features:</h2> <ul> <li>Better brush trace handing of opacity to get better&nbsp;control.</li> <li>tools: Add script to purge stale&nbsp;thumbnails</li> <li>tools: A script to watch a folder for new&nbsp;images</li> </ul> <h2>Bugfixes:</h2> <ul> <li><span class="caps">DNG</span>: fix camera name demangling. It used to report some wrong name for some&nbsp;cameras.</li> <li>When using wayland, prefer XWayland, because native Wayland support is not fully functional&nbsp;yet</li> <li><span class="caps">EXIF</span>: properly handle image orientation &#8216;2&#8217; and &#8216;4&#8217; (swap&nbsp;them)</li> <li>OpenCL: a few fixes in profiled denoise, demosaic and&nbsp;colormapping</li> <li>tiling: do not process uselessly small end&nbsp;tiles</li> <li>masks: avoid assertion failure in early phase of path&nbsp;generation,</li> <li>masks: reduce risk of unwanted self-finalization of small path&nbsp;shapes</li> <li>Fix rare issue when expanding $() variables in import/export&nbsp;string</li> <li>Camera import: fix ignore_jpg setting not having an&nbsp;effect</li> <li>Picasa web exporter: unbreak after upstream <span class="caps">API</span>&nbsp;change</li> <li>collection: fix query string for folders ( &#8216;a&#8217; should match &#8216;a/b&#8217; and &#8216;a/c&#8217;, but not &#8216;ac/&#8217;&nbsp;)</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Fujifilm X-T20 (only uncompressed raw, at the&nbsp;moment)</li> <li>Fujifilm <span class="caps">X100F</span> (only uncompressed raw, at the&nbsp;moment)</li> <li>Nikon <span class="caps">COOLPIX</span> B700&nbsp;(12bit-uncompressed)</li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ61</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS40</span> (4:3, 3:2, 1:1,&nbsp;16:9)</li> <li>Sony <span class="caps">ILCE</span>-6500</li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Olympus&nbsp;E-M1MarkII</li> <li>Lge Nexus&nbsp;5X</li> </ul><img src="https://www.darktable.org/2017/04/darktable-2-2-4-released/thistels_wide.jpg" class="hidden-lede">houzThu, 06 Apr 2017 18:33:08 +0000tag:www.darktable.org,2017-04-06:2017/04/darktable-2-2-4-released/announcementdarktable releasedarktable 2.2.3 releasedhttps://www.darktable.org/2017/02/darktable-2-2-3-released/<p>we&#8217;re proud to announce the third bugfix release for the 2.2 series of darktable,&nbsp;2.2.3!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.3">https://github.com/darktable-org/darktable/releases/tag/release-2.2.3</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.2.3.tar.xz 1b33859585bf283577680c61e3c0ea4e48214371453b9c17a86664d2fbda48a0 darktable-2.2.3.tar.xz $ sha256sum darktable-2.2.3.dmg 1ebe9a9905b895556ce15d556e49e3504957106fe28f652ce5efcb274dadd41c darktable-2.2.3.dmg </pre></div> <p><strong>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please help us by visiting <a href="https://raw.pixls.us/">https://raw.pixls.us/</a> and making sure that we have the full raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</strong></p> <p>and the changelog as compared to 2.2.2 can be found&nbsp;below.</p> <h2>Bugfixes:</h2> <ul> <li>Fix fatal crash when generating preview for medium megapixel count (~<span class="caps">16MP</span>) Bayer&nbsp;images</li> <li>Properly subtract black levels: respect the even/odd -ness of the raw crop origin&nbsp;point</li> <li>Collection module: fix a few <span class="caps">UI</span>&nbsp;quirks</li> </ul><img src="https://www.darktable.org/2017/02/darktable-2-2-3-released/turtle_wide.jpeg" class="hidden-lede">houzWed, 01 Feb 2017 10:44:59 +0000tag:www.darktable.org,2017-02-01:2017/02/darktable-2-2-3-released/announcementdarktable releasedarktable 2.2.2 releasedhttps://www.darktable.org/2017/01/darktable-2-2-2-released/<p>we&#8217;re proud to announce the second bugfix release for the 2.2 series of darktable,&nbsp;2.2.2!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.2">https://github.com/darktable-org/darktable/releases/tag/release-2.2.2</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>766d7d734e7bd5a33f6a6932a43b15cc88435c64ad9a0b20410ba5b4706941c2 darktable-2.2.2.tar.xz 52fd0e9a8bb74c82abdc9a88d4c369ef181ef7fe2b946723c5706d7278ff2dfb darktable-2.2.2.dmg </pre></div> <p><strong>Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please help us by visiting <a href="https://raw.pixls.us/">https://raw.pixls.us/</a> and making sure that we have the full raw sample set for your camera under <span class="caps">CC0</span>&nbsp;license!</strong></p> <p>and the changelog as compared to 2.2.1 can be found&nbsp;below.</p> <h2>New&nbsp;features:</h2> <ul> <li>color look up table module: include preset for helmholtz/kohlrausch&nbsp;monochrome</li> <li>Lens module: re-enable&nbsp;tiling</li> <li>Darkroom: fix some artefacts in the preview image (not the main&nbsp;view!)</li> <li><span class="caps">DNG</span> decoder: support reading one more white balance encoding&nbsp;method</li> <li>Mac: display an error when too old <span class="caps">OS</span> version is&nbsp;detected</li> <li>Some documentation and tooltips&nbsp;updates</li> </ul> <h2>Bugfixes:</h2> <ul> <li>Main view no longer grabs focus when mouse enters it. Prevents accidental catastrophic image rating&nbsp;loss.</li> <li><span class="caps">OSX</span>: fix bauhaus slider popup keyboard&nbsp;input</li> <li>Don&#8217;t write all <span class="caps">XMP</span> when detaching&nbsp;tag</li> <li><span class="caps">OSX</span>: don&#8217;t do <span class="caps">PPD</span> autodetection, gtk did their thing&nbsp;again.</li> <li>Don&#8217;t show database lock popup when <span class="caps">DBUS</span> is used to start&nbsp;darktable</li> <li>Actually delete duplicate&#8217;s <span class="caps">XMP</span> when deleting duplicated&nbsp;image</li> <li>Ignore <span class="caps">UTF</span>-8 <span class="caps">BOM</span> in <span class="caps">GPX</span>&nbsp;files</li> <li>Fix import of <span class="caps">LR</span> custom&nbsp;tone-curve</li> <li>Overwrite Xmp rating from raw when&nbsp;exporting</li> <li>Some memory leak&nbsp;fixes</li> <li>Lua: sync XMPs after some tag&nbsp;manipulations</li> <li>Explicitly link against math&nbsp;library</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Canon PowerShot <span class="caps">SX40</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm X-<span class="caps">E2S</span></li> <li>Leica D-<span class="caps">LUX</span> (Typ 109) (4:3, 3:2, 16:9,&nbsp;1:1)</li> <li>Leica X2&nbsp;(dng)</li> <li>Nikon <span class="caps">LS</span>-5000&nbsp;(dng)</li> <li>Nokia Lumia 1020&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> (16:9, 3:2,&nbsp;1:1)</li> <li>Pentax K-5&nbsp;(dng)</li> <li>Pentax K-r&nbsp;(dng)</li> <li>Pentax <span class="caps">K10D</span>&nbsp;(dng)</li> <li>Sony <span class="caps">ILCE</span>-6500</li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Fujifilm&nbsp;X-M1</li> <li>Leica&nbsp;X2</li> <li>Nikon Coolpix&nbsp;A</li> <li>Panasonic <span class="caps">DMC</span>-G8</li> <li>Panasonic <span class="caps">DMC</span>-G80</li> <li>Panasonic <span class="caps">DMC</span>-G81</li> <li>Panasonic <span class="caps">DMC</span>-G85</li> </ul><img src="https://www.darktable.org/2017/01/darktable-2-2-2-released/pygmy_chameleon_wide.jpg" class="hidden-lede">houzMon, 30 Jan 2017 09:49:52 +0000tag:www.darktable.org,2017-01-30:2017/01/darktable-2-2-2-released/announcementdarktable releaserawsamples.ch replacementhttps://www.darktable.org/2017/01/rawsamples-ch-replacement/<p><a href="https://rawsamples.ch">Rawsamples.ch</a> is a website with the goal&nbsp;to:</p> <blockquote> <p>…provide <span class="caps">RAW</span>-Files of nearly all available Digitalcameras mainly to software-developers.&nbsp;[sic]</p> </blockquote> <p>It was created by Jakob Rohrbach and had been running since March 2007, having amassed over 360 raw files in that time from various manufacturers and cameras. Unfortunately, back in 2016 the site was hit with an <span class="caps">SQL</span>-injection that ended up corrupting the database for the Joomla install that hosted the site. To compound the pain, there were no database backups …&nbsp;:(</p> <p>Luckily, <a href="https://www.flickr.com/photos/andabata">Kees Guequierre</a> (<a href="https://dtstyle.net/">dtstyle.net</a>) decided to build a site where contributors could upload sample raw files from their cameras for everyone to use&nbsp;– particularly developers. We downloaded the archive of the raw files kept at rawsamples.ch to include with files that we already had. The biggest difference between the files from <a href="https://rawsamples.ch">rawsamples.ch</a> and <a href="https://raw.pixls.us">raw.pixls.us</a> is the licensing. The existing files, and the preference for any new contributions, are licensed as <a href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons Zero&nbsp;– Public Domain</a> (as opposed to <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><span class="caps">CC</span>-<span class="caps">BY</span>-<span class="caps">NC</span>-<span class="caps">SA</span></a>).</p> <p>After some hacking, with input and guidance from darktable developer <a href="https://github.com/LebedevRI">Roman Lebedev</a>, the site was finally&nbsp;ready.</p> <h2>raw.pixls.us</h2> <p>The site is now live at <a href="https://raw.pixls.us">https://raw.pixls.us</a>.</p> <p>You can <a href="https://raw.pixls.us#repo">look at the submitted files</a> and search/sort through all of them (and download the ones you&nbsp;want).</p> <p>In addition to browsing the archive, it would be fantastic if you&#8217;re able to supplement the database by upload sample images. Many of the images from the rawsamples.ch archive are licensed <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"><span class="caps">CC</span>-<span class="caps">BY</span>-<span class="caps">NC</span>-<span class="caps">SA</span></a>, but we&#8217;d rather have the files licensed <a href="https://creativecommons.org/publicdomain/zero/1.0/"><span class="caps">CC0</span></a>. <span class="caps">CC0</span> is preferable to <span class="caps">CC</span>-<span class="caps">BY</span>-<span class="caps">NC</span>-<span class="caps">SA</span> because if the sample raw files are separated from the database, they can safely be redistributed without attribution (attribution is required by <span class="caps">CC</span>-<span class="caps">BY</span>-<span class="caps">NC</span>-<span class="caps">SA</span>). So if you have a camera that is already in the list with the more restrictive Creative Commons license, then please consider uploading a replacement for&nbsp;us!</p> <p><strong>We are looking for shots that&nbsp;are:</strong></p> <ul> <li>Lens mounted on the&nbsp;camera</li> <li>Lens cap&nbsp;off</li> <li>In&nbsp;focus</li> <li>With normal exposure, not underexposed and not&nbsp;overexposed</li> <li>Landscape&nbsp;orientation</li> <li>Licensed under the <a href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons&nbsp;Zero</a></li> </ul> <p><strong>We are <em>not</em> looking&nbsp;for:</strong></p> <ul> <li>Series of images with different <span class="caps">ISO</span>, aperture, shutter, wb, or lighting (Even if it&#8217;s a shot of a color&nbsp;target)</li> <li><span class="caps">DNG</span> files created with Adobe <span class="caps">DNG</span>&nbsp;Converter</li> </ul> <p>Please take a moment and see if you can provide samples to help the&nbsp;developers!</p> <p>This post has been written in collaboration with <a href="https://pixls.us/">pixls.us</a></p><img src="https://www.darktable.org/2017/01/rawsamples-ch-replacement/snowice-andabata.jpg" class="hidden-lede">LebedevRIThu, 12 Jan 2017 17:57:27 +0000tag:www.darktable.org,2017-01-12:2017/01/rawsamples-ch-replacement/announcementblogcommunity'@andabata''@lebedevri''@pixlsus'fossphotographyrawsamplesdarktable 2.2.1 releasedhttps://www.darktable.org/2017/01/darktable-2-2-1-released/<p>we&#8217;re proud to announce the first bugfix release for the 2.2 series of darktable,&nbsp;2.2.1!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.1">https://github.com/darktable-org/darktable/releases/tag/release-2.2.1</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.2.1.tar.xz da843190f08e02df19ccbc02b9d1bef6bd242b81499494c7da2cccdc520e24fc darktable-2.2.1.tar.xz $ sha256sum darktable-2.2.1.3.dmg 9a86ed2cff453dfc0c979e802d5e467bc4974417ca462d6cbea1c3aa693b08de darktable-2.2.1.3.dmg </pre></div> <p>and the changelog as compared to 2.2.0 can be found&nbsp;below.</p> <h2>New&nbsp;features:</h2> <ul> <li>Show a dialog window that tells when locking the database/library&nbsp;failed</li> <li>Ask before deleting history stack from&nbsp;lightable.</li> <li>preferences: make features that are not available (greyed out) more&nbsp;obvious</li> </ul> <h2>Bugfixes:</h2> <ul> <li>Always cleanup undo list before entering darkroom view. Fixes crash when using undo after re-entering&nbsp;darkroom</li> <li>Darkroom: properly delete module instances. Fixes rare crashes after deleting second instance of&nbsp;module.</li> <li>Levels and tonecurve modules now also use 256&nbsp;bins.</li> <li>Rawoverexposed module: fix visualization when a camera custom white balance preset is&nbsp;used</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;M5</li> </ul><img src="https://www.darktable.org/2017/01/darktable-2-2-1-released/owehar.png" class="hidden-lede">houzMon, 02 Jan 2017 16:56:56 +0000tag:www.darktable.org,2017-01-02:2017/01/darktable-2-2-1-released/announcementdarktable releasedarktable 2.2.0 releasedhttps://www.darktable.org/2016/12/darktable-2-2-0-released/<p>we&#8217;re proud to finally announce the new feature release of darktable,&nbsp;2.2.0!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.0">https://github.com/darktable-org/darktable/releases/tag/release-2.2.0</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the sha256 checksum&nbsp;is:</p> <div class="highlight"><pre>3eca193831faae58200bb1cb6ef29e658bce43a81706b54420953a7c33d79377 darktable-2.2.0.tar.xz 75d5f68fec755fefe6ccc82761d379b399f9fba9581c0f4c2173f6c147a0109f darktable-2.2.0.dmg </pre></div> <p>and the changelog as compared to 2.0.0 can be found&nbsp;below.</p> <p>when updating from the currently stable 2.0.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.2 to 2.0.x any&nbsp;more.</p> <ul> <li>Well over 2k commits since&nbsp;2.0.0</li> <li>298 pull requests&nbsp;handled</li> <li>360+ issues&nbsp;closed</li> </ul> <p>Gource visualization of git log from 2.0.0 to right before&nbsp;2.2.0:</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/E2UU5x7sS3g?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <h2>The Big&nbsp;Ones:</h2> <ul> <li>Add new automatic perspective correction module (&#8220;<a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/"><span>A new module for automatic perspective correction</span></a>&#8220;)</li> <li>Liquify tool for all your fancy pixel moving (&#8220;<a href="https://www.darktable.org/2016/04/liquify-liquify/"><span>Liquify, liquify?</span></a>&#8220;)</li> <li>A new image module to use a Color Look Up Table (<span class="caps">CLUT</span>) to change colors in the image (&#8220;<a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/"><span>colour manipulation with the colour checker lut module</span></a>&#8220;)</li> <li>In Highlight reconstruction module, the mode LCh reconstruction was completely rewritten, and is no longer&nbsp;useless!</li> <li>A new tool, darktable-chart, that goes along with the <span class="caps">CLUT</span> module, to create styles for the&nbsp;latter</li> <li>Exposure fusion in the basecurve module to lower the dynamic range of images (&#8220;<a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/"><span>compressing dynamic range with exposure fusion</span></a>&#8220;)</li> <li>Add new raw overexposure indication (&#8220;<a href="https://www.darktable.org/2016/10/raw-overexposed/"><span>Visualizing the raw (sensor) highlight clipping</span></a>&#8220;)</li> <li>Darkroom: the preview (in top-left corner) is now no longer pre-demosaiced (but just downscaled without demosaicing it at the same time), thus the preview, color picker, histogram show the proper results, especially when there is highlight&nbsp;clipping.</li> </ul> <h2>Quite Interesting&nbsp;Changes:</h2> <ul> <li>Split the database into a library containing images and a general one with styles, presets and tags. That allows having access to those when for example running with a :memory:&nbsp;library</li> <li>Support running on platforms other than x86 (64bit little-endian, currently <span class="caps">ARM64</span> only) (&#8220;<a href="https://www.darktable.org/2016/04/running-on-non-x86-platforms/"><span>Running on non-x86 platforms</span></a>&#8220;)</li> <li>darktable is now happy to use smaller stack sizes (no less than 256Kb). That should allow using musl&nbsp;libc</li> <li>Allow darktable-cli to work on&nbsp;directories</li> <li>Allow to import/export tags from Lightroom keyword&nbsp;files</li> <li>Allow using modifier keys to modify the step for sliders and curves. Defaults: Ctrl&nbsp;– x0.1; Shift&nbsp;–&nbsp;x10</li> <li>Allow using the [keyboard] cursor keys to interact with sliders, comboboxes and curves; modifiers apply&nbsp;too</li> <li>Support presets in “more modules” so you can quickly switch between your favorite sets of modules shown in the <span class="caps">GUI</span></li> <li>Add range operator and date compare to the collection&nbsp;module</li> <li>Add basic undo/redo support for the darkroom (masks are not accounted&nbsp;!)</li> <li>Support the Exif date and time when importing photos from&nbsp;camera</li> <li>Input color profile module, when profile is just matrix (and linear curve), is 1/3 faster&nbsp;now.</li> <li>Rudimentary <span class="caps">CYGM</span> and <span class="caps">RGBE</span> color filter array&nbsp;support</li> <li>Nicer web gallery exporter &#8212; now touch&nbsp;friendly!</li> <li>OpenCL implementation of <span class="caps">VNG</span>/<span class="caps">VNG4</span> demosaicing&nbsp;methods</li> <li>OpenCL implementation of Markesteijn demosaicing method for X-Trans&nbsp;sensors</li> <li>Filter-out some useless <span class="caps">EXIF</span> tags when exporting, helps keep <span class="caps">EXIF</span> size under&nbsp;~64Kb</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some partially-working OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don&#8217;t need&nbsp;it.</li> <li>Hotpixels module: make it actually work for&nbsp;X-Trans</li> <li>Cmstest tool should now produce correct output in more cases, especially in multi-monitor&nbsp;setups.</li> <li>Darkroom histogram now uses more bins: use all 8-bit of the output, not just&nbsp;6.</li> </ul> <h2>Some More Changes, Probably Not&nbsp;Complete:</h2> <ul> <li>Drop darktable-viewer tool in favor of slideshow&nbsp;view</li> <li>Remove gnome keyring password backend, use libsecret&nbsp;instead</li> <li>When using libsecret to store passwords then put them into the correct&nbsp;collection</li> <li>Hint via window manager when import/export is&nbsp;done</li> <li>Quick tagging searches anywhere, not just at the start of&nbsp;tags</li> <li>The sidecar <span class="caps">XMP</span> schema for history entries is now more consistent and less error&nbsp;prone</li> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>Give the choice of equidistant and proportional feathering when using elliptical masks&nbsp;(shift+click)</li> <li>Add geolocation to watermark&nbsp;variables</li> <li>Fix some crashes with missing configured <span class="caps">ICC</span>&nbsp;profiles</li> <li>Support greyscale color&nbsp;profiles</li> <li>Lens correction module: switched back to normal Lensfun search mode for lens&nbsp;lookups.</li> <li>Make sure that proper signal handlers are still set after <span class="caps">GM</span>&nbsp;initialization&#8230;</li> <li><span class="caps">OSX</span>: add trash support (thanks to Michael Kefeder for initial&nbsp;patch)</li> <li>Attach Xmp data to <span class="caps">EXR</span>&nbsp;files</li> <li>Several fixes for HighDPI&nbsp;displays</li> <li>Use Pango for text layout, thus supporting <span class="caps">RTL</span>&nbsp;languages</li> <li>Feathering size in some mask shapes can be set with&nbsp;shift+scroll</li> <li>Many bugs got fixed and some memory leaks&nbsp;plugged</li> <li>The usermanual was updated to reflect the changes in the 2.2&nbsp;series</li> <li>Tone curve: mode “automatic in <span class="caps">XYZ</span>” mode for “scale&nbsp;chroma”</li> <li>Some compilation&nbsp;fixes</li> </ul> <h2>Lua specific&nbsp;changes:</h2> <ul> <li> <p>All asynchronous calls have been&nbsp;rewritten</p> <ul> <li>the darktable-specific implementation of yield was&nbsp;removed</li> <li>darktable.control.execute allows to execute some shell commands without blocking&nbsp;Lua</li> <li>darktable.control.read allows to wait for a file to be readable without blocking&nbsp;Lua</li> <li>darktable.control.sleep allows to pause the Lua execution without blocking other Lua&nbsp;threads</li> </ul> </li> <li> <p>darktable.gui.libs.metadata_view.register_info allows to add new field to the metadata widget in the darkroom&nbsp;view</p> </li> <li>The TextView widget can now be created in Lua, allowing input of large chunks of&nbsp;text</li> <li>It is now possible to use a custom widget in the Lua preference window to configure a&nbsp;preference</li> <li>It is now possible to set the precision and step on slider&nbsp;widgets</li> </ul> <h2>Changed&nbsp;Dependencies:</h2> <ul> <li>CMake 3.0 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.7+/clang-3.3+, but better use&nbsp;gcc-5.0+</li> <li>Drop support for <span class="caps">OS</span> X&nbsp;10.6</li> <li>Bump required libexiv2 version up to&nbsp;0.24</li> <li>Bump <span class="caps">GTK</span>+ requirement to gtk-3.14. (because even Debian/stable has&nbsp;it)</li> <li>Bump GLib requirement to&nbsp;glib-2.40.</li> <li>Port to&nbsp;OpenJPEG2</li> <li><span class="caps">SDL</span> is no longer&nbsp;needed.</li> <li>Remove gnome keyring password&nbsp;backend</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Canon PowerShot <span class="caps">SD450</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX130</span> <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX260</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX510</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X70</li> <li>Fujifilm <span class="caps">XQ2</span></li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> (chdk-a,&nbsp;chdk-b)</li> <li>(most nikon cameras here are just fixes, and they were supported before&nbsp;already)</li> <li>Nikon 1 <span class="caps">AW1</span>&nbsp;(12bit-compressed)</li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1 J3&nbsp;(12bit-compressed)</li> <li>Nikon 1 J4&nbsp;(12bit-compressed)</li> <li>Nikon 1 J5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1 S2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1 V2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P340 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix P6000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7100&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon D1&nbsp;(12bit-uncompressed)</li> <li>Nikon D100 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D200 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D2Hs (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D300 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D300S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3100&nbsp;(12bit-compressed)</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon D3300 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D3X</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D4 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D40 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D40X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D4S</span>&nbsp;(14bit-compressed)</li> <li>Nikon D5 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D50&nbsp;(12bit-compressed)</li> <li>Nikon D500 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D5000 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5100 (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5200&nbsp;(14bit-compressed)</li> <li>Nikon D5300 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5500 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D60 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D600 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D610 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70&nbsp;(12bit-compressed)</li> <li>Nikon D700 (12bit-compressed, 12bit-uncompressed,&nbsp;14bit-compressed)</li> <li>Nikon D7000 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70s&nbsp;(12bit-compressed)</li> <li>Nikon D7100 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D80 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D800 (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D800E</span> (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D90 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Df (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon E5400&nbsp;(12bit-uncompressed)</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>OnePlus One&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span> (1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G81&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G85&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX10</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX15</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX9</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span>&nbsp;(3:2)</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Samsung <span class="caps">GX20</span>&nbsp;(dng)</li> <li>Sony <span class="caps">DSC</span>-F828</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M3</span></li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCA</span>-99M2</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <p>We were unable to bring back these 2 cameras, because we have no&nbsp;samples.</p> <p>If anyone reading this owns such a camera, please do consider providing&nbsp;samples.</p> <ul> <li>Nikon&nbsp;E8400</li> <li>Nikon&nbsp;E8800</li> </ul> <h2>White Balance&nbsp;Presets:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Pentax&nbsp;K-S1</li> <li>Pentax&nbsp;K-S2</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;S100</li> <li>Canon PowerShot <span class="caps">SX100</span> <span class="caps">IS</span></li> <li>Canon PowerShot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5</li> <li>Nikon&nbsp;D5500</li> <li>Olympus E-<span class="caps">PL6</span></li> <li>Olympus E-<span class="caps">PM2</span></li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-S2</li> <li>Ricoh <span class="caps">GR</span></li> <li>Sony <span class="caps">DSLR</span>-A900</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> <li>Sony <span class="caps">ILCE</span>-6300</li> <li>Sony <span class="caps">NEX</span>-5</li> <li>Sony <span class="caps">SLT</span>-A37</li> </ul> <h2>New&nbsp;Translations:</h2> <ul> <li>Hebrew</li> <li>Slovenian</li> </ul> <h2>Updated&nbsp;Translations:</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hungarian</li> <li>Italian</li> <li>Polish</li> <li>Russian</li> <li>Slovak</li> <li>Spanish</li> <li>Swedish</li> <li>Ukrainian</li> </ul> <p>We wish you a merry Christmas, happy Hanukkah or just a good time. Enjoy taking photos and developing them with&nbsp;darktable.</p><img src="https://www.darktable.org/2016/12/darktable-2-2-0-released/bee_small.jpg" class="hidden-lede">houzSat, 24 Dec 2016 16:48:13 +0000tag:www.darktable.org,2016-12-24:2016/12/darktable-2-2-0-released/announcementdarktable releasedarktable 2.2.0rc3 releasedhttps://www.darktable.org/2016/12/darktable-2-2-0rc3-released/<p>we&#8217;re proud to announce the fourth release candidate of darktable 2.2.0, with some fixes over the previous release&nbsp;candidate.</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc3">https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc3</a>.</p> <p>as always, please don&#8217;t use the tarball autogenerated by github, but only our .tar.xz with the following&nbsp;sha256sum:</p> <div class="highlight"><pre>f7b9e8f5f56b2a52a4fa51e085b8aefe016ab08daf7b4a6ebf3af3464b1d2c29 darktable-2.2.0~rc3.tar.xz 86293aded568903eba3b225d680ff06bc29ea2ed678de05a0fd568aed93a0587 darktable-2.2.0.rc3.3.g9af0d4fcb.dmg </pre></div> <p>the changelog vs. the stable 2.0.x series is&nbsp;below:</p> <ul> <li>Well over 2k commits since&nbsp;2.0.0</li> </ul> <h2>The Big&nbsp;Ones:</h2> <ul> <li>Add new automatic perspective correction module (&#8220;<a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/"><span>A new module for automatic perspective correction</span></a>&#8220;)</li> <li>Liquify tool for all your fancy pixel moving (&#8220;<a href="https://www.darktable.org/2016/04/liquify-liquify/"><span>Liquify, liquify?</span></a>&#8220;)</li> <li>A new image module to use a Color Look Up Table (<span class="caps">CLUT</span>) to change colors in the image (&#8220;<a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/"><span>colour manipulation with the colour checker lut module</span></a>&#8220;)</li> <li>In Highlight reconstruction module, the mode LCh reconstruction was completely rewritten, and is no longer&nbsp;useless!</li> <li>A new tool, darktable-chart, that goes along with the <span class="caps">CLUT</span> module, to create styles for the&nbsp;latter</li> <li>Exposure fusion in the basecurve module to lower the dynamic range of images (&#8220;<a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/"><span>compressing dynamic range with exposure fusion</span></a>&#8220;)</li> <li>Add new raw overexposure indication (&#8220;<a href="https://www.darktable.org/2016/10/raw-overexposed/"><span>Visualizing the raw (sensor) highlight clipping</span></a>&#8220;)</li> <li>Darkroom: the preview (in top-left corner) is now no longer pre-demosaiced (but just downscaled without demosaicing it at the same time), thus the preview, color picker, histogram show the proper results, especially when there is highlight&nbsp;clipping.</li> </ul> <h2>Quite Interesting&nbsp;Changes:</h2> <ul> <li>Split the database into a library containing images and a general one with styles, presets and tags. That allows having access to those when for example running with a :memory:&nbsp;library</li> <li>Support running on platforms other than x86 (64bit little-endian, currently <span class="caps">ARM64</span> only) (&#8220;<a href="https://www.darktable.org/2016/04/running-on-non-x86-platforms/"><span>Running on non-x86 platforms</span></a>&#8220;)</li> <li>darktable is now happy to use smaller stack sizes (no less than 256Kb). That should allow using musl&nbsp;libc</li> <li>Allow darktable-cli to work on&nbsp;directories</li> <li>Allow to import/export tags from Lightroom keyword&nbsp;files</li> <li>Allow using modifier keys to modify the step for sliders and curves. Defaults: Ctrl&nbsp;– x0.1; Shift&nbsp;–&nbsp;x10</li> <li>Allow using the [keyboard] cursor keys to interact with sliders, comboboxes and curves; modifiers apply&nbsp;too</li> <li>Support presets in &#8220;more modules&#8221; so you can quickly switch between your favorite sets of modules shown in the <span class="caps">GUI</span></li> <li>Add range operator and date compare to the collection&nbsp;module</li> <li>Add basic undo/redo support for the darkroom (masks are not accounted&nbsp;!)</li> <li>Support the Exif date and time when importing photos from&nbsp;camera</li> <li>Input color profile module, when profile is just matrix (and linear curve), is 1/3 faster&nbsp;now.</li> <li>Rudimentary <span class="caps">CYGM</span> and <span class="caps">RGBE</span> color filter array&nbsp;support</li> <li>Nicer web gallery exporter &#8212; now touch&nbsp;friendly!</li> <li>OpenCL implementation of <span class="caps">VNG</span>/<span class="caps">VNG4</span> demosaicing&nbsp;methods</li> <li>OpenCL implementation of Markesteijn demosaicing method for X-Trans&nbsp;sensors</li> <li>Filter-out some useless <span class="caps">EXIF</span> tags when exporting, helps keep <span class="caps">EXIF</span> size under&nbsp;~64Kb</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some partially-working OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don&#8217;t need&nbsp;it.</li> <li>Hotpixels module: make it actually work for&nbsp;X-Trans</li> <li>Cmstest tool should now produce correct output in more cases, especially in multi-monitor&nbsp;setups.</li> <li>Darkroom histogram now uses more bins: use all 8-bit of the output, not just&nbsp;6.</li> </ul> <h2>Some More Changes, Probably Not&nbsp;Complete:</h2> <ul> <li>Drop darktable-viewer tool in favor of slideshow&nbsp;view</li> <li>Remove gnome keyring password backend, use libsecret&nbsp;instead</li> <li>When using libsecret to store passwords then put them into the correct&nbsp;collection</li> <li>Hint via window manager when import/export is&nbsp;done</li> <li>Quick tagging searches anywhere, not just at the start of&nbsp;tags</li> <li>The sidecar <span class="caps">XMP</span> schema for history entries is now more consistent and less error&nbsp;prone</li> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>Give the choice of equidistant and proportional feathering when using elliptical masks&nbsp;(shift+click)</li> <li>Add geolocation to watermark&nbsp;variables</li> <li>Fix some crashes with missing configured <span class="caps">ICC</span>&nbsp;profiles</li> <li>Support greyscale color&nbsp;profiles</li> <li>Make sure that proper signal handlers are still set after <span class="caps">GM</span>&nbsp;initialization&#8230;</li> <li><span class="caps">OSX</span>: add trash support (thanks to Michael Kefeder for initial&nbsp;patch)</li> <li>Attach Xmp data to <span class="caps">EXR</span>&nbsp;files</li> <li>Several fixes for HighDPI&nbsp;displays</li> <li>Use Pango for text layout, thus supporting <span class="caps">RTL</span>&nbsp;languages</li> <li>Feathering size in some mask shapes can be set with&nbsp;shift+scroll</li> <li>Many bugs got fixed and some memory leaks&nbsp;plugged</li> <li>The usermanual was updated to reflect the changes in the 2.2&nbsp;series</li> <li>Tone curve: mode &#8220;automatic in <span class="caps">XYZ</span>&#8221; mode for &#8220;scale&nbsp;chroma&#8221;</li> <li>Some compilation&nbsp;fixes</li> </ul> <h2>Lua specific&nbsp;changes:</h2> <ul> <li>All asynchronous calls have been&nbsp;rewritten</li> <li>The darktable-specific implementation of <code>yield</code> was&nbsp;removed</li> <li><code>darktable.control.execute</code> allows to execute some shell commands without blocking&nbsp;Lua</li> <li><code>darktable.control.read</code> allows to wait for a file to be readable without blocking&nbsp;Lua</li> <li><code>darktable.control.sleep</code> allows to pause the Lua execution without blocking other Lua&nbsp;threads</li> <li><code>darktable.gui.libs.metadata_view.register_info</code> allows to add new field to the metadata widget in the darkroom&nbsp;view</li> <li>The TextView widget can now be created in Lua, allowing input of large chunks of&nbsp;text</li> <li>It is now possible to use a custom widget in the Lua preference window to configure a&nbsp;preference</li> <li>It is now possible to set the precision and step on slider&nbsp;widgets</li> </ul> <h2>Changed&nbsp;Dependencies:</h2> <ul> <li>CMake 3.0 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.7+/clang-3.3+, but better use&nbsp;gcc-5.0+</li> <li>Drop support for <span class="caps">OS</span> X&nbsp;10.6</li> <li>Bump required libexiv2 version up to&nbsp;0.24</li> <li>Bump <span class="caps">GTK</span>+ requirement to gtk-3.14. (because even debian stable has&nbsp;it)</li> <li>Bump GLib requirement to&nbsp;glib-2.40.</li> <li>Port to&nbsp;OpenJPEG2</li> <li><span class="caps">SDL</span> is no longer&nbsp;needed.</li> </ul> <h2>Base&nbsp;Support:</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Canon PowerShot <span class="caps">SD450</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX130</span> <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX260</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX510</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X70</li> <li>Fujifilm <span class="caps">XQ2</span></li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> (chdk-a,&nbsp;chdk-b)</li> <li>(most nikon cameras here are just fixes, and they were supported before&nbsp;already)</li> <li>Nikon 1 <span class="caps">AW1</span>&nbsp;(12bit-compressed)</li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1 J3&nbsp;(12bit-compressed)</li> <li>Nikon 1 J4&nbsp;(12bit-compressed)</li> <li>Nikon 1 J5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1 S2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1 V2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P340 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix P6000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7100&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon D1&nbsp;(12bit-uncompressed)</li> <li>Nikon D100 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D200 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D2Hs (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D300 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D300S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3100&nbsp;(12bit-compressed)</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon D3300 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D3X</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D4 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D40 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D40X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D4S</span>&nbsp;(14bit-compressed)</li> <li>Nikon D5 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D50&nbsp;(12bit-compressed)</li> <li>Nikon D500 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D5000 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5100 (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5200&nbsp;(14bit-compressed)</li> <li>Nikon D5300 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5500 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D60 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D600 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D610 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70&nbsp;(12bit-compressed)</li> <li>Nikon D700 (12bit-compressed, 12bit-uncompressed,&nbsp;14bit-compressed)</li> <li>Nikon D7000 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70s&nbsp;(12bit-compressed)</li> <li>Nikon D7100 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D80 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D800 (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D800E</span> (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D90 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Df (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon E5400&nbsp;(12bit-uncompressed)</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>OnePlus One&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span> (1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G81&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G85&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX10</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX15</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX9</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ100</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ101</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">TZ110</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">ZS110</span>&nbsp;(3:2)</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Samsung <span class="caps">GX20</span>&nbsp;(dng)</li> <li>Sony <span class="caps">DSC</span>-F828</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX100M5</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M3</span></li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCA</span>-99M2</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <p>We were unable to bring back these 2 cameras, because we have no&nbsp;samples.</p> <p>If anyone reading this owns such a camera, please do consider providing&nbsp;samples.</p> <ul> <li>Nikon&nbsp;E8400</li> <li>Nikon&nbsp;E8800</li> </ul> <h2>White Balance&nbsp;Presets:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Pentax&nbsp;K-S1</li> <li>Pentax&nbsp;K-S2</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;S100</li> <li>Canon PowerShot <span class="caps">SX100</span> <span class="caps">IS</span></li> <li>Canon PowerShot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5</li> <li>Nikon&nbsp;D5500</li> <li>Olympus E-<span class="caps">PL6</span></li> <li>Olympus E-<span class="caps">PM2</span></li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-S2</li> <li>Ricoh <span class="caps">GR</span></li> <li>Sony <span class="caps">DSLR</span>-A900</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> <li>Sony <span class="caps">ILCE</span>-6300</li> <li>Sony <span class="caps">NEX</span>-5</li> <li>Sony <span class="caps">SLT</span>-A37</li> </ul> <h2>New&nbsp;Translations:</h2> <ul> <li>Hebrew</li> <li>Slovenian</li> </ul> <h2>Updated&nbsp;Translations:</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hungarian</li> <li>Polish</li> <li>Russian</li> <li>Slovak</li> <li>Spanish</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2016/12/darktable-2-2-0rc3-released/castle5_wide.jpg" class="hidden-lede">houzMon, 12 Dec 2016 10:20:28 +0000tag:www.darktable.org,2016-12-12:2016/12/darktable-2-2-0rc3-released/announcementdarktable releasedarktable 2.2.0rc2 releasedhttps://www.darktable.org/2016/12/darktable-2-2-0rc2-released/<p>we&#8217;re proud to announce the third release candidate of darktable 2.2.0, with some fixes over the previous release&nbsp;candidate.</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc2">https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc2</a>.</p> <p>as always, please don&#8217;t use the tarball autogenerated by github, but only our .tar.xz with the following&nbsp;sha256sum:</p> <div class="highlight"><pre>f3ed739f79858a1ce2b3746bbab11994f5fb38db6e96941d84ba475beab890a6 darktable-2.2.0.rc2.tar.xz 5d91cfd1622fb82e8f59db912e8b784a36b83f4a06d179e906f437104edc96f1 darktable-2.2.0.rc2.39.g684e8af41.dmg </pre></div> <p>the changelog vs. the stable 2.0.x series is&nbsp;below:</p> <ul> <li>Well over 2k commits since&nbsp;2.0.0</li> </ul> <h2>The Big&nbsp;Ones:</h2> <ul> <li>Add new automatic perspective correction module (&#8220;<a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/"><span>A new module for automatic perspective correction</span></a>&#8220;)</li> <li>Liquify tool for all your fancy pixel moving (&#8220;<a href="https://www.darktable.org/2016/04/liquify-liquify/"><span>Liquify, liquify?</span></a>&#8220;)</li> <li>A new image module to use a Color Look Up Table (<span class="caps">CLUT</span>) to change colors in the image (&#8220;<a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/"><span>colour manipulation with the colour checker lut module</span></a>&#8220;)</li> <li>In Highlight reconstruction module, the mode LCh reconstruction was completely rewritten, and is no longer&nbsp;useless!</li> <li>A new tool, darktable-chart, that goes along with the <span class="caps">CLUT</span> module, to create styles for the&nbsp;latter</li> <li>Exposure fusion in the basecurve module to lower the dynamic range of images (&#8220;<a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/"><span>compressing dynamic range with exposure fusion</span></a>&#8220;)</li> <li>Add new raw overexposure indication (&#8220;<a href="https://www.darktable.org/2016/10/raw-overexposed/"><span>Visualizing the raw (sensor) highlight clipping</span></a>&#8220;)</li> <li>Darkroom: the preview (in top-left corner) is now no longer pre-demosaiced (but just downscaled without demosaicing it at the same time), thus the preview, color picker, histogram show the proper results, especially when there is highlight&nbsp;clipping.</li> </ul> <h2>Quite Interesting&nbsp;Changes:</h2> <ul> <li>Split the database into a library containing images and a general one with styles, presets and tags. That allows having access to those when for example running with a :memory:&nbsp;library</li> <li>Support running on platforms other than x86 (64bit little-endian, currently <span class="caps">ARM64</span> only) (&#8220;<a href="https://www.darktable.org/2016/04/running-on-non-x86-platforms/"><span>Running on non-x86 platforms</span></a>&#8220;)</li> <li>darktable is now happy to use smaller stack sizes (no less than 256Kb). That should allow using musl&nbsp;libc</li> <li>Allow darktable-cli to work on&nbsp;directories</li> <li>Allow to import/export tags from Lightroom keyword&nbsp;files</li> <li>Allow using modifier keys to modify the step for sliders and curves. Defaults: Ctrl&nbsp;– x0.1; Shift&nbsp;–&nbsp;x10</li> <li>Allow using the [keyboard] cursor keys to interact with sliders, comboboxes and curves; modifiers apply&nbsp;too</li> <li>Support presets in &#8220;more modules&#8221; so you can quickly switch between your favorite sets of modules shown in the <span class="caps">GUI</span></li> <li>Add range operator and date compare to the collection&nbsp;module</li> <li>Add basic undo/redo support for the darkroom (masks are not accounted&nbsp;!)</li> <li>Support the Exif date and time when importing photos from&nbsp;camera</li> <li>Input color profile module, when profile is just matrix (and linear curve), is 1/3 faster&nbsp;now.</li> <li>Rudimentary <span class="caps">CYGM</span> and <span class="caps">RGBE</span> color filter array&nbsp;support</li> <li>Nicer web gallery exporter &#8212; now touch&nbsp;friendly!</li> <li>OpenCL implementation of <span class="caps">VNG</span>/<span class="caps">VNG4</span> demosaicing&nbsp;methods</li> <li>OpenCL implementation of Markesteijn demosaicing method for X-Trans&nbsp;sensors</li> <li>Filter-out some useless <span class="caps">EXIF</span> tags when exporting, helps keep <span class="caps">EXIF</span> size under&nbsp;~64Kb</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some partially-working OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don&#8217;t need&nbsp;it.</li> <li>Hotpixels module: make it actually work for&nbsp;X-Trans</li> <li>Cmstest tool should now produce correct output in more cases, especially in multi-monitor&nbsp;setups.</li> <li>Darkroom histogram now uses more bins: use all 8-bit of the output, not just&nbsp;6.</li> </ul> <h2>Some More Changes, Probably Not&nbsp;Complete:</h2> <ul> <li>Drop darktable-viewer tool in favor of slideshow&nbsp;view</li> <li>Remove gnome keyring password backend, use libsecret&nbsp;instead</li> <li>When using libsecret to store passwords then put them into the correct&nbsp;collection</li> <li>Hint via window manager when import/export is&nbsp;done</li> <li>Quick tagging searches anywhere, not just at the start of&nbsp;tags</li> <li>The sidecar <span class="caps">XMP</span> schema for history entries is now more consistent and less error&nbsp;prone</li> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>Give the choice of equidistant and proportional feathering when using elliptical masks&nbsp;(shift+click)</li> <li>Add geolocation to watermark&nbsp;variables</li> <li>Fix some crashes with missing configured <span class="caps">ICC</span>&nbsp;profiles</li> <li>Support greyscale color&nbsp;profiles</li> <li>Make sure that proper signal handlers are still set after <span class="caps">GM</span>&nbsp;initialization&#8230;</li> <li><span class="caps">OSX</span>: add trash support (thanks to Michael Kefeder for initial&nbsp;patch)</li> <li>Attach Xmp data to <span class="caps">EXR</span>&nbsp;files</li> <li>Several fixes for HighDPI&nbsp;displays</li> <li>Use Pango for text layout, thus supporting <span class="caps">RTL</span>&nbsp;languages</li> <li>Feathering size in some mask shapes can be set with&nbsp;shift+scroll</li> <li>Many bugs got fixed and some memory leaks&nbsp;plugged</li> <li>The usermanual was updated to reflect the changes in the 2.2&nbsp;series</li> <li>Tone curve: mode &#8220;automatic in <span class="caps">XYZ</span>&#8221; mode for &#8220;scale&nbsp;chroma&#8221;</li> <li>Some compilation&nbsp;fixes</li> </ul> <h2>Lua specific&nbsp;changes:</h2> <ul> <li>All asynchronous calls have been&nbsp;rewritten</li> <li>The darktable-specific implementation of <code>yield</code> was&nbsp;removed</li> <li><code>darktable.control.execute</code> allows to execute some shell commands without blocking&nbsp;Lua</li> <li><code>darktable.control.read</code> allows to wait for a file to be readable without blocking&nbsp;Lua</li> <li><code>darktable.control.sleep</code> allows to pause the Lua execution without blocking other Lua&nbsp;threads</li> <li><code>darktable.gui.libs.metadata_view.register_info</code> allows to add new field to the metadata widget in the darkroom&nbsp;view</li> <li>The TextView widget can now be created in Lua, allowing input of large chunks of&nbsp;text</li> <li>It is now possible to use a custom widget in the Lua preference window to configure a&nbsp;preference</li> <li>It is now possible to set the precision and step on slider&nbsp;widgets</li> </ul> <h2>Changed&nbsp;Dependencies:</h2> <ul> <li>CMake 3.0 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.7+/clang-3.3+, but better use&nbsp;gcc-5.0+</li> <li>Drop support for <span class="caps">OS</span> X&nbsp;10.6</li> <li>Bump required libexiv2 version up to&nbsp;0.24</li> <li>Bump <span class="caps">GTK</span>+ requirement to gtk-3.14. (because even Debian stable has&nbsp;it)</li> <li>Bump GLib requirement to&nbsp;glib-2.40.</li> <li>Port to&nbsp;OpenJPEG2</li> <li><span class="caps">SDL</span> is no longer&nbsp;needed.</li> </ul> <h2>Base&nbsp;Support</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Canon PowerShot <span class="caps">SD450</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX130</span> <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX260</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX510</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X70</li> <li>Fujifilm <span class="caps">XQ2</span></li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> (chdk-a,&nbsp;chdk-b)</li> <li>(most nikon cameras here are just fixes, and they were supported before&nbsp;already)</li> <li>Nikon 1 <span class="caps">AW1</span>&nbsp;(12bit-compressed)</li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1 J3&nbsp;(12bit-compressed)</li> <li>Nikon 1 J4&nbsp;(12bit-compressed)</li> <li>Nikon 1 J5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1 S2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1 V2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P340 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix P6000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7100&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon D1&nbsp;(12bit-uncompressed)</li> <li>Nikon D100 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D200 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D2Hs (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D300 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D300S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3100&nbsp;(12bit-compressed)</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon D3300 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D3X</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D4 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D40 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D40X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D4S</span>&nbsp;(14bit-compressed)</li> <li>Nikon D5 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D50&nbsp;(12bit-compressed)</li> <li>Nikon D500 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D5000 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5100 (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5200&nbsp;(14bit-compressed)</li> <li>Nikon D5300 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5500 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D60 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D600 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D610 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70&nbsp;(12bit-compressed)</li> <li>Nikon D700 (12bit-compressed, 12bit-uncompressed,&nbsp;14bit-compressed)</li> <li>Nikon D7000 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70s&nbsp;(12bit-compressed)</li> <li>Nikon D7100 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D80 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D800 (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D800E</span> (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D90 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Df (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon E5400&nbsp;(12bit-uncompressed)</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>OnePlus One&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span> (1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX10</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX15</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX9</span>&nbsp;(3:2)</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Samsung <span class="caps">GX20</span>&nbsp;(dng)</li> <li>Sony <span class="caps">DSC</span>-F828</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M3</span></li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <p>We were unable to bring back these 3 cameras, because we have no&nbsp;samples.</p> <p>If anyone reading this owns such a camera, please do consider providing&nbsp;samples.</p> <ul> <li>Nikon&nbsp;E8400</li> <li>Nikon&nbsp;E8800</li> </ul> <h2>White Balance&nbsp;Presets:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Pentax&nbsp;K-S1</li> <li>Pentax&nbsp;K-S2</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;S100</li> <li>Canon PowerShot <span class="caps">SX100</span> <span class="caps">IS</span></li> <li>Canon PowerShot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5</li> <li>Nikon&nbsp;D5500</li> <li>Olympus E-<span class="caps">PL6</span></li> <li>Olympus E-<span class="caps">PM2</span></li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-S2</li> <li>Ricoh <span class="caps">GR</span></li> <li>Sony <span class="caps">DSLR</span>-A900</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> <li>Sony <span class="caps">ILCE</span>-6300</li> <li>Sony <span class="caps">NEX</span>-5</li> <li>Sony <span class="caps">SLT</span>-A37</li> </ul> <h2>New&nbsp;Translations:</h2> <ul> <li>Hebrew</li> <li>Slovenian</li> </ul> <h2>Updated&nbsp;Translations:</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hungarian</li> <li>Polish</li> <li>Russian</li> <li>Slovak</li> <li>Spanish</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2016/12/darktable-2-2-0rc2-released/castle4_wide.jpg" class="hidden-lede">houzSun, 04 Dec 2016 20:12:02 +0000tag:www.darktable.org,2016-12-04:2016/12/darktable-2-2-0rc2-released/announcementdarktable releaseString freeze for the upcoming 2.2 serieshttps://www.darktable.org/2016/11/string-freeze-for-the-upcoming-2-2-series/<p>This is a call for all our translators, now is the time to bring your .po file in the master branch up to date. We will not ship any translation that is not relatively complete, the exact threshold is still to be&nbsp;determined.</p> <p>As a quick reminder, these are the steps to update the translation if you are working from git. <code>language_code</code> is not the whole filename of the po file but just the first part of it. For example, when for Italian the language code is <code>it</code> while the filename is <code>it.po</code>. You also have to compile darktable before updating your .po file as some of the translated files are&nbsp;auto-generated.</p> <div class="highlight"><pre>cd /path/to/your/darktable/checkout/ git checkout master git pull ./build.sh cd po/ intltool-update &lt;language_code&gt; &lt;edit language_code.po&gt; </pre></div> <p>If you don&#8217;t have a build environment set up to compile darktable you can also use <a href="/files/darktable_2.2.0.pot">this .pot file</a>.</p><img src="https://www.darktable.org/2016/11/string-freeze-for-the-upcoming-2-2-series/castle3_wide.jpg" class="hidden-lede">houzThu, 24 Nov 2016 11:31:33 +0000tag:www.darktable.org,2016-11-24:2016/11/string-freeze-for-the-upcoming-2-2-series/announcementdarktable 2.2.0rc1 releasedhttps://www.darktable.org/2016/11/darktable-2-2-0rc1-released/<p>we&#8217;re proud to announce the second release candidate of darktable 2.2.0, with some fixes over the previous release candidate. the most important one might be bringing back read support for very old xmp files (~4&nbsp;years).</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc1">https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc1</a>.</p> <p>as always, please don&#8217;t use the tarball autogenerated by github, but only our .tar.xz with the following&nbsp;sha256sum:</p> <div class="highlight"><pre>0612163b0020bc3326909f6d7f7cbd8cfb5cff59b8e0ed1a9e2a2aa17d8f308e darktable-2.2.0~rc1.tar.xz </pre></div> <p>the changelog vs. the stable 2.0.x series is&nbsp;below:</p> <ul> <li>Well over 2k commits since&nbsp;2.0.0</li> </ul> <h2>The Big&nbsp;Ones:</h2> <ul> <li>Add new automatic perspective correction module (&#8220;<a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/"><span>A new module for automatic perspective correction</span></a>&#8220;)</li> <li>Liquify tool for all your fancy pixel moving (&#8220;<a href="https://www.darktable.org/2016/04/liquify-liquify/"><span>Liquify, liquify?</span></a>&#8220;)</li> <li>A new image module to use a Color Look Up Table (<span class="caps">CLUT</span>) to change colors in the image (&#8220;<a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/"><span>colour manipulation with the colour checker lut module</span></a>&#8220;)</li> <li>In Highlight reconstruction module, the mode LCh reconstruction was completely rewritten, and is no longer&nbsp;useless!</li> <li>A new tool, darktable-chart, that goes along with the <span class="caps">CLUT</span> module, to create styles for the&nbsp;latter</li> <li>Exposure fusion in the basecurve module to lower the dynamic range of images (&#8220;<a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/"><span>compressing dynamic range with exposure fusion</span></a>&#8220;)</li> <li>Add new raw overexposure indication (&#8220;<a href="https://www.darktable.org/2016/10/raw-overexposed/"><span>Visualizing the raw (sensor) highlight clipping</span></a>&#8220;)</li> <li>Darkroom: the preview (in top-left corner) is now no longer pre-demosaiced (but just downscaled without demosaicing it at the same time), thus the preview, color picker, histogram show the proper results, especially when there is highlight&nbsp;clipping.</li> </ul> <h2>Quite Interesting&nbsp;Changes:</h2> <ul> <li>Split the database into a library containing images and a general one with styles, presets and tags. That allows having access to those when for example running with a <code>:memory:</code> library</li> <li>Support running on platforms other than x86 (64bit little-endian, currently <span class="caps">ARM64</span> only) (&#8220;<a href="https://www.darktable.org/2016/04/running-on-non-x86-platforms/"><span>Running on non-x86 platforms</span></a>&#8220;)</li> <li>darktable is now happy to use smaller stack sizes (no less than 256Kb). That should allow using musl&nbsp;libc</li> <li>Allow darktable-cli to work on&nbsp;directories</li> <li>Allow to import/export tags from Lightroom keyword&nbsp;files</li> <li>Allow using modifier keys to modify the step for sliders and curves. Defaults: Ctrl&nbsp;– x0.1; Shift&nbsp;–&nbsp;x10</li> <li>Allow using the [keyboard] cursor keys to interact with sliders, comboboxes and curves; modifiers apply&nbsp;too</li> <li>Support presets in &#8220;more modules&#8221; so you can quickly switch between your favorite sets of modules shown in the <span class="caps">GUI</span></li> <li>Add range operator and date compare to the collection&nbsp;module</li> <li>Add basic undo/redo support for the darkroom (masks are not accounted&nbsp;!)</li> <li>Support the Exif date and time when importing photos from&nbsp;camera</li> <li>Input color profile module, when profile is just matrix (and linear curve), is 1/3 faster&nbsp;now.</li> <li>Rudimentary <span class="caps">CYGM</span> and <span class="caps">RGBE</span> color filter array&nbsp;support</li> <li>Nicer web gallery exporter &#8212; now touch&nbsp;friendly!</li> <li>OpenCL implementation of <span class="caps">VNG</span>/<span class="caps">VNG4</span> demosaicing&nbsp;methods</li> <li>OpenCL implementation of Markesteijn demosaicing method for X-Trans&nbsp;sensors</li> <li>Filter-out some useless <span class="caps">EXIF</span> tags when exporting, helps keep <span class="caps">EXIF</span> size under&nbsp;~64Kb</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some partially-working OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don&#8217;t need&nbsp;it.</li> <li>Hotpixels module: make it actually work for&nbsp;X-Trans</li> </ul> <h2>Some More Changes, Probably Not&nbsp;Complete:</h2> <ul> <li>Drop darktable-viewer tool in favor of slideshow&nbsp;view</li> <li>Remove gnome keyring password backend, use libsecret&nbsp;instead</li> <li>When using libsecret to store passwords then put them into the correct&nbsp;collection</li> <li>Hint via window manager when import/export is&nbsp;done</li> <li>Quick tagging searches anywhere, not just at the start of&nbsp;tags</li> <li>The sidecar <span class="caps">XMP</span> schema for history entries is now more consistent and less error&nbsp;prone</li> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>Give the choice of equidistant and proportional feathering when using elliptical masks&nbsp;(shift+click)</li> <li>Add geolocation to watermark&nbsp;variables</li> <li>Fix some crashes with missing configured <span class="caps">ICC</span>&nbsp;profiles</li> <li>Support greyscale color&nbsp;profiles</li> <li><span class="caps">OSX</span>: add trash support (thanks to Michael Kefeder for initial&nbsp;patch)</li> <li>Attach Xmp data to <span class="caps">EXR</span>&nbsp;files</li> <li>Several fixes for HighDPI&nbsp;displays</li> <li>Use Pango for text layout, thus supporting <span class="caps">RTL</span>&nbsp;languages</li> <li>Feathering size in some mask shapes can be set with&nbsp;shift+scroll</li> <li>Many bugs got fixed and some memory leaks&nbsp;plugged</li> <li>The usermanual was updated to reflect the changes in the 2.2&nbsp;series</li> </ul> <h2>Changed&nbsp;Dependencies:</h2> <ul> <li>CMake 3.0 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.7+/clang-3.3+, but better use&nbsp;gcc-5.0+</li> <li>Drop support for <span class="caps">OS</span> X&nbsp;10.6</li> <li>Bump required libexiv2 version up to&nbsp;0.24</li> <li>Bump <span class="caps">GTK</span>+ requirement to gtk-3.14. (because even debian stable has&nbsp;it)</li> <li>Bump GLib requirement to&nbsp;glib-2.40.</li> <li>Port to&nbsp;OpenJPEG2</li> <li><span class="caps">SDL</span> is no longer&nbsp;needed.</li> </ul> <p>A special note to all the darktable Fedora users: Fedora-provided darktable packages are intentionally built with Lua disabled. Thus, Lua scripting will not work. This breaks e.g. darktable-gimp integration. Please bug Fedora. In the mean time you could fix that by self-compiling darktable (pass <code>-DDONT_USE_INTERNAL_LUA=OFF</code> to cmake in order to enable use of bundled&nbsp;Lua5.2.4).</p> <h2>Base&nbsp;Support</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Canon PowerShot <span class="caps">SD450</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX130</span> <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX260</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX510</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X70</li> <li>Fujifilm <span class="caps">XQ2</span></li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> (chdk-a,&nbsp;chdk-b)</li> <li>(most nikon cameras here are just fixes, and they were supported before&nbsp;already)</li> <li>Nikon 1 <span class="caps">AW1</span>&nbsp;(12bit-compressed)</li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1 J3&nbsp;(12bit-compressed)</li> <li>Nikon 1 J4&nbsp;(12bit-compressed)</li> <li>Nikon 1 J5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1 S2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1 V2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P340 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix P6000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7100&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon D1&nbsp;(12bit-uncompressed)</li> <li>Nikon D100 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D200 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D2Hs (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D300 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D300S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3100&nbsp;(12bit-compressed)</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon D3300 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D3X</span> (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D4 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D40 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D40X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D4S</span>&nbsp;(14bit-compressed)</li> <li>Nikon D5 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D50&nbsp;(12bit-compressed)</li> <li>Nikon D500 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D5000 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5100 (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5200&nbsp;(14bit-compressed)</li> <li>Nikon D5300 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5500 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D60 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D600 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D610 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70&nbsp;(12bit-compressed)</li> <li>Nikon D700 (12bit-compressed, 12bit-uncompressed,&nbsp;14bit-compressed)</li> <li>Nikon D7000 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70s&nbsp;(12bit-compressed)</li> <li>Nikon D7100 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D80 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D800 (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D800E</span> (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D90 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Df (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon E5400&nbsp;(12bit-uncompressed)</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>OnePlus One&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span> (1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX10</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX15</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX9</span>&nbsp;(3:2)</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Samsung <span class="caps">GX20</span>&nbsp;(dng)</li> <li>Sony <span class="caps">DSC</span>-F828</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M3</span></li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <p>We were unable to bring back these 3 cameras, because we have no samples. If anyone reading this owns such a camera, please do consider providing&nbsp;samples.</p> <ul> <li>Nikon&nbsp;E8400</li> <li>Nikon&nbsp;E8800</li> <li>Nikon <span class="caps">D3X</span>&nbsp;(12-bit)</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Pentax&nbsp;K-S1</li> <li>Pentax&nbsp;K-S2</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;S100</li> <li>Canon PowerShot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus E-<span class="caps">PL6</span></li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> <li>Pentax&nbsp;K-S2</li> <li>Ricoh <span class="caps">GR</span></li> <li>Sony <span class="caps">DSLR</span>-A900</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> <li>Sony <span class="caps">SLT</span>-A37</li> </ul> <h2>New&nbsp;Translations</h2> <ul> <li>Hebrew</li> <li>Slovenian</li> </ul> <h2>Updated&nbsp;Translations</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hungarian</li> <li>Russian</li> <li>Slovak</li> <li>Spanish</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2016/11/darktable-2-2-0rc1-released/castle2_wide.jpg" class="hidden-lede">houzWed, 23 Nov 2016 15:01:27 +0000tag:www.darktable.org,2016-11-23:2016/11/darktable-2-2-0rc1-released/announcementdarktable releasedarktable 2.2.0rc0 releasedhttps://www.darktable.org/2016/11/darktable-2-2-0rc0-released/<p>we’re proud to announce the first release candidate for the upcoming 2.2 series of darktable,&nbsp;2.2.0rc0!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc0">https://github.com/darktable-org/darktable/releases/tag/release-2.2.0rc0</a>.</p> <p>as always, please don’t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>a084ef367b1a1b189ad11a6300f7e0cadb36354d11bf0368de7048c6a0732229 darktable-2.2.0~rc0.tar.xz </pre></div> <p>and the changelog as compared to 2.0.0 can be found&nbsp;below.</p> <ul> <li>Well over 2 thousand commits since&nbsp;2.0.0</li> </ul> <h2>The Big&nbsp;Ones:</h2> <ul> <li>Add new automatic perspective correction module (&#8220;<a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/"><span>A new module for automatic perspective correction</span></a>&#8220;)</li> <li>Liquify tool for all your fancy pixel moving (&#8220;<a href="https://www.darktable.org/2016/04/liquify-liquify/"><span>Liquify, liquify?</span></a>&#8220;)</li> <li>A new image module to use a Color Look Up Table (<span class="caps">CLUT</span>) to change colors in the image (&#8220;<a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/"><span>colour manipulation with the colour checker lut module</span></a>&#8220;)</li> <li>In Highlight reconstruction module, the mode LCh reconstruction was completedy rewritten, and is no longer&nbsp;useless!</li> <li>A new tool, darktable-chart, that goes along with the <span class="caps">CLUT</span> module, to create styles for the corresponding&nbsp;module</li> <li>Exposure fusion in the basecurve module to lower the dynamic range of images (&#8220;<a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/"><span>compressing dynamic range with exposure fusion</span></a>&#8220;)</li> <li>Add new raw overexposure indication (&#8220;<a href="https://www.darktable.org/2016/10/raw-overexposed/"><span>Visualizing the raw (sensor) highlight clipping</span></a>&#8220;)</li> <li>Darkroom: the preview (in top-left corner) is now no longer pre-demosaiced, thus the preview, color picker, histogram show the proper results when there is highlight&nbsp;clipping.</li> <li>Add undo/redo support for the&nbsp;darkroom</li> </ul> <h2>Quite Interesting&nbsp;Changes:</h2> <ul> <li>Split the database into a library containing images and a general one with styles, presets and tags. That allows having access to those when for example running with a :memory:&nbsp;library</li> <li>Support running on platforms other than x86 (64bit little-endian, currently <span class="caps">ARM64</span> only) (&#8220;<a href="https://www.darktable.org/2016/04/running-on-non-x86-platforms/"><span>Running on non-x86 platforms</span></a>&#8220;)</li> <li>darktable is now happy to use smaller stack sizes. That should allow using musl&nbsp;libc</li> <li>Allow darktable-cli to work on&nbsp;directories</li> <li>Allow to import/export tags from Lightroom keyword&nbsp;files</li> <li>Allow using modifier keys to modify the step for sliders and curves. Defaults: Ctrl&nbsp;– x0.1; Shift&nbsp;–&nbsp;x10</li> <li>Allow using the [keyboard] cursor keys to interact with sliders, comboboxes and curves; modifiers apply&nbsp;too</li> <li>Support presets in “more modules” so you can quickly switch between your favorite sets of modules shown in the <span class="caps">GUI</span></li> <li>Add range operator and date compare to the collection&nbsp;module</li> <li>Support the Exif date and time when importing photos from&nbsp;camera</li> <li>Rudimentary <span class="caps">CYGM</span> and <span class="caps">RGBE</span> color filter array&nbsp;support</li> <li>Preview pipe now does run demosaic module too, and its input is no longer pre-demosaiced, but is just downscaled without demosaicing it at the same&nbsp;time.</li> <li>Nicer web gallery exporter&nbsp;– now touch&nbsp;friendly!</li> <li>OpenCL implementation of <span class="caps">VNG</span>/<span class="caps">VNG4</span> demosaicing&nbsp;methods</li> <li>OpenCL implementation of Markesteijn demosaicing method for X-Trans&nbsp;sensors</li> <li>Filter-out some useless <span class="caps">EXIF</span> tags when exporting, helps keep <span class="caps">EXIF</span> size under&nbsp;~64Kb</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some partially-working OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don’t need&nbsp;it.</li> <li>Hotpixels module: make it actually work for&nbsp;X-Trans</li> </ul> <h2>Some More Changes, Probably Not&nbsp;Complete:</h2> <ul> <li>Drop darktable-viewer tool in favor of slideshow&nbsp;view</li> <li>Remove gnome keyring password backend, use libsecret&nbsp;instead</li> <li>When using libsecret to store passwords then put them into the correct&nbsp;collection</li> <li>Hint via window manager when import/export is&nbsp;done</li> <li>Quick tagging searches anywhere, not just at the start of&nbsp;tags</li> <li>The sidecar Xmp schema for history entries is now more consistent and less error&nbsp;prone</li> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>Give the choice of equidistant and proportional feathering when using elliptical&nbsp;masks</li> <li>Add geolocation to watermark&nbsp;variables</li> <li>Fix some crashes with missing configured <span class="caps">ICC</span>&nbsp;profiles</li> <li>Support greyscale color&nbsp;profiles</li> <li><span class="caps">OSX</span>: add trash support (thanks to Michael Kefeder for initial&nbsp;patch)</li> <li>Attach Xmp data to <span class="caps">EXR</span>&nbsp;files</li> <li>Several fixes for HighDPI&nbsp;displays</li> <li>Use Pango for text layout, thus supporting <span class="caps">RTL</span>&nbsp;languages</li> <li>Many bugs got fixed and some memory leaks&nbsp;plugged</li> <li>The usermanual was updated to reflect the changes in the 2.2&nbsp;series</li> </ul> <h2>Changed&nbsp;Dependencies:</h2> <ul> <li>CMake 3.0 is now&nbsp;required.</li> <li>In order to compile darktable you now need at least gcc-4.7+/clang-3.3+, but better use&nbsp;gcc-5.0+</li> <li>Drop support for <span class="caps">OS</span> X&nbsp;10.6</li> <li>Bump required libexiv2 version up to&nbsp;0.24</li> <li>Bump <span class="caps">GTK</span>+ requirement to gtk-3.14. (because even Debian/stable has&nbsp;it)</li> <li>Bump GLib requirement to&nbsp;glib-2.40.</li> <li>Port to&nbsp;OpenJPEG2</li> <li><span class="caps">SDL</span> is no longer&nbsp;needed.</li> </ul> <p>A special note to all the darktable Fedora users: Fedora-provided darktable packages are intentionally built with Lua disabled. Thus, Lua scripting will not work. This breaks e.g. darktable-gimp integration. Please bug Fedora. In the mean time you could fix that by self-compiling darktable (pass <code>-DDONT_USE_INTERNAL_LUA=OFF</code> to cmake in order to enable use of bundled&nbsp;Lua5.2.4).</p> <h2>Base&nbsp;Support</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Canon PowerShot <span class="caps">SD450</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX130</span> <span class="caps">IS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX260</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Canon PowerShot <span class="caps">SX510</span> <span class="caps">HS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm&nbsp;X70</li> <li>Fujifilm <span class="caps">XQ2</span></li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> (chdk-a,&nbsp;chdk-b)</li> <li>(most nikon cameras here are just fixes, and they were supported before&nbsp;already)</li> <li>Nikon 1 <span class="caps">AW1</span>&nbsp;(12bit-compressed)</li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1 J3&nbsp;(12bit-compressed)</li> <li>Nikon 1 J4&nbsp;(12bit-compressed)</li> <li>Nikon 1 J5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1 S2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1 V2&nbsp;(12bit-compressed)</li> <li>Nikon 1 V3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P340 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Coolpix P6000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7000&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7100&nbsp;(12bit-uncompressed)</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon D1&nbsp;(12bit-uncompressed)</li> <li>Nikon D100 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D1X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D200 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2H</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D2Hs (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D2X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D300 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D300S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3100&nbsp;(12bit-compressed)</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon D3300 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D3X</span> (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D4 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D40 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D40X</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D4S</span>&nbsp;(14bit-compressed)</li> <li>Nikon D5 (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D50&nbsp;(12bit-compressed)</li> <li>Nikon D500 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D5000 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5100 (14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5200&nbsp;(14bit-compressed)</li> <li>Nikon D5300 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D5500 (12bit-uncompressed, 14bit-compressed,&nbsp;14bit-uncompressed)</li> <li>Nikon D60 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D600 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D610 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70&nbsp;(12bit-compressed)</li> <li>Nikon D700 (12bit-compressed, 12bit-uncompressed,&nbsp;14bit-compressed)</li> <li>Nikon D7000 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D70s&nbsp;(12bit-compressed)</li> <li>Nikon D7100 (14bit-compressed,&nbsp;12bit-compressed)</li> <li>Nikon D80 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D800 (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon <span class="caps">D800E</span> (14bit-compressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D90 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon Df (14bit-compressed, 14bit-uncompressed, 12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon E5400&nbsp;(12bit-uncompressed)</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>OnePlus One&nbsp;(dng)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span> (1:1,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> <li>Pentax&nbsp;K-1</li> <li>Pentax&nbsp;K-70</li> <li>Samsung <span class="caps">GX20</span>&nbsp;(dng)</li> <li>Sony <span class="caps">DSC</span>-F828</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M3</span></li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">IV</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Pentax&nbsp;K-70</li> <li>Pentax&nbsp;K-S1</li> <li>Pentax&nbsp;K-S2</li> <li>Sony <span class="caps">ILCA</span>-68</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;S100</li> <li>Canon PowerShot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Fujifilm&nbsp;X-T2</li> <li>Fujifilm <span class="caps">X100T</span></li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Nikon 1&nbsp;V3</li> <li>Nikon&nbsp;D5500</li> <li>Olympus E-<span class="caps">PL6</span></li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> <li>Pentax&nbsp;K-S2</li> <li>Ricoh <span class="caps">GR</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> <li>Sony <span class="caps">SLT</span>-A37</li> </ul> <h2>New&nbsp;Translations</h2> <ul> <li>Hebrew</li> <li>Slovenian</li> </ul> <h2>Updated&nbsp;Translations</h2> <ul> <li>Catalan</li> <li>Czech</li> <li>Danish</li> <li>Dutch</li> <li>French</li> <li>German</li> <li>Hungarian</li> <li>Russian</li> <li>Slovak</li> <li>Spanish</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2016/11/darktable-2-2-0rc0-released/castle_wide.jpg" class="hidden-lede">houzSun, 06 Nov 2016 13:17:04 +0000tag:www.darktable.org,2016-11-06:2016/11/darktable-2-2-0rc0-released/announcementdarktable releasedarktable 2.0.7 releasedhttps://www.darktable.org/2016/10/darktable-2-0-7-released/<p>we&#8217;re proud to announce the seventh bugfix release for the 2.0 series of darktable,&nbsp;2.0.7!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.7">https://github.com/darktable-org/darktable/releases/tag/release-2.0.7</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>a9226157404538183549079e3b8707c910fedbb669bd018106bdf584b88a1dab darktable-2.0.7.tar.xz 0b341f3f753ae0715799e422f84d8de8854d8b9956dc9ce5da6d5405586d1392 darktable-2.0.7.dmg </pre></div> <p>and the changelog as compared to 2.0.6 can be found&nbsp;below.</p> <h2>New&nbsp;Features</h2> <ul> <li>Filter-out some <span class="caps">EXIF</span> tags when exporting. Helps keep metadata size below max limit of&nbsp;~64Kb</li> <li>Support the new Canon <span class="caps">EOS</span> 80D {m,s}<span class="caps">RAW</span>&nbsp;format</li> <li>Always show rendering intent selector in lighttable&nbsp;view</li> <li>Clear elevation when clearing geo data in map&nbsp;view</li> <li>Temperature module, invert module: add <span class="caps">SSE</span> vectorization for&nbsp;X-Trans</li> <li>Temperature module: add keyboard shortcuts for&nbsp;presets</li> </ul> <h2>Bugfixes</h2> <ul> <li>Rawspeed: fixes for building with libjpeg (as opposed to&nbsp;libjpeg-turbo)</li> <li>OpenCL: always use blocking memory transfer&nbsp;hostdevice</li> <li>OpenCL: remove bogus <code>static</code> keyword in&nbsp;extended.cl</li> <li>Fix crash with missing configured display&nbsp;profile</li> <li>Histogram: always show aperture with one digit after&nbsp;dot</li> <li>Show if OpenEXR is supported in <code>--version</code></li> <li>Rawspeed: use a non-deprecated way of getting <span class="caps">OSX</span>&nbsp;version</li> <li>Don&#8217;t show bogus message about local copy when trying to delete physically deleted&nbsp;image</li> </ul> <h2>Base Support (newly added or small&nbsp;fixes)</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;100D</li> <li>Canon <span class="caps">EOS</span>&nbsp;300D</li> <li>Canon <span class="caps">EOS</span>&nbsp;6D</li> <li>Canon <span class="caps">EOS</span>&nbsp;700D</li> <li>Canon <span class="caps">EOS</span> 80D (sRaw1,&nbsp;sRaw2)</li> <li>Canon PowerShot A720 <span class="caps">IS</span>&nbsp;(dng)</li> <li>Fujifilm FinePix <span class="caps">S100FS</span></li> <li>Nikon D3400&nbsp;(12bit-compressed)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ300</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G8&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-G80&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX80</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX85</span>&nbsp;(4:3)</li> <li>Pentax&nbsp;K-70</li> </ul> <h2>Base Support (fixes, was broken in 2.0.6, apologies for&nbsp;inconvenience)</h2> <ul> <li>Nikon 1 <span class="caps">AW1</span></li> <li>Nikon 1 J1&nbsp;(12bit-compressed)</li> <li>Nikon 1 J2&nbsp;(12bit-compressed)</li> <li>Nikon 1&nbsp;J3</li> <li>Nikon 1&nbsp;J4</li> <li>Nikon 1 S1&nbsp;(12bit-compressed)</li> <li>Nikon 1&nbsp;S2</li> <li>Nikon 1 V1&nbsp;(12bit-compressed)</li> <li>Nikon 1&nbsp;V2</li> <li>Nikon Coolpix A&nbsp;(14bit-compressed)</li> <li>Nikon Coolpix P330&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix&nbsp;P6000</li> <li>Nikon Coolpix&nbsp;P7000</li> <li>Nikon Coolpix&nbsp;P7100</li> <li>Nikon Coolpix P7700&nbsp;(12bit-compressed)</li> <li>Nikon Coolpix P7800&nbsp;(12bit-compressed)</li> <li>Nikon&nbsp;D1</li> <li>Nikon D3 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D3000&nbsp;(12bit-compressed)</li> <li>Nikon&nbsp;D3100</li> <li>Nikon D3200&nbsp;(12bit-compressed)</li> <li>Nikon <span class="caps">D3S</span> (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D4 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon D5 (12bit-compressed,&nbsp;12bit-uncompressed)</li> <li>Nikon&nbsp;D50</li> <li>Nikon&nbsp;D5100</li> <li>Nikon&nbsp;D5200</li> <li>Nikon D600&nbsp;(12bit-compressed)</li> <li>Nikon D610&nbsp;(12bit-compressed)</li> <li>Nikon&nbsp;D70</li> <li>Nikon&nbsp;D7000</li> <li>Nikon&nbsp;D70s</li> <li>Nikon D7100&nbsp;(12bit-compressed)</li> <li>Nikon&nbsp;E5400</li> <li>Nikon E5700&nbsp;(12bit-uncompressed)</li> </ul> <p>We were unable to bring back these 4 cameras, because we have no samples. If anyone reading this owns such a camera, please do consider providing&nbsp;samples.</p> <ul> <li>Nikon&nbsp;E8400</li> <li>Nikon&nbsp;E8800</li> <li>Nikon <span class="caps">D3X</span>&nbsp;(12-bit)</li> <li>Nikon Df&nbsp;(12-bit)</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Pentax&nbsp;K-70</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10</span></li> </ul> <h2>Translations&nbsp;Updates</h2> <ul> <li>Catalan</li> <li>German</li> </ul><img src="https://www.darktable.org/2016/10/darktable-2-0-7-released/river_wide.jpg" class="hidden-lede">houzTue, 25 Oct 2016 10:45:02 +0000tag:www.darktable.org,2016-10-25:2016/10/darktable-2-0-7-released/announcementdarktable releaseVisualizing the raw (sensor) highlight clippinghttps://www.darktable.org/2016/10/raw-overexposed/<p>Have you ever over-exposed your images? Have you ever noticed that your images look flat and dull after you apply negative exposure compensation? Even though the over/underexposed warning says there is no overexposure? Have you ever wondered what is going on? Read&nbsp;on.</p> <!-- more --> <h2>the&nbsp;problem</h2> <p>First, why would you want to know which pixels are <strong>overexposed</strong>,&nbsp;clipped?</p> <p>Consider this&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-0.jpeg"><img alt="rawoverexposed-0" src="rawoverexposed-0_thumb.jpeg" /></a></span></p> <p>… Why is the sky so white? Why is the image so flat and&nbsp;dull?</p> <p>Let&#8217;s enable <a href="/usermanual/en/darkroom_bottom_panel.html#overexposed"><code>overexposure indicator</code></a>&nbsp;&#8230;</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-0.5.jpeg"><img alt="rawoverexposed-0.5" src="rawoverexposed-0.5_thumb.jpeg" /></a></span></p> <p>Nope, it does not indicate any part of the image to be&nbsp;overexposed.</p> <p>Now, let&#8217;s see what happens if we disable the <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a>&nbsp;module</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-1.jpeg"><img alt="rawoverexposed-1" src="rawoverexposed-1_thumb.jpeg" /></a></span></p> <p>Eww, the sky is&nbsp;pink!</p> <p>An experienced person knows that it means the image was taken <a href="https://en.wikipedia.org/wiki/Exposure_(photography)#Overexposure_and_underexposure">overexposed</a>, and it is so dull and flat because a negative <strong>exposure compensation</strong> was applied via the <a href="/usermanual/en/modules.html#exposure"><code>exposure</code></a>&nbsp;module.</p> <p>Many of you have sometimes unintentionally overexposed your images. As you know, it is hard to figure out exactly which part of the image is overexposed,&nbsp;clipped.</p> <h3>But. What if it is actually very easy to figure&nbsp;out?</h3> <p>I&#8217;ll show you the end result, what darktable&#8217;s new, <code>raw-based overexposure indicator</code> says about that image, and then we will discuss&nbsp;details:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-2-1.jpeg"><img alt="rawoverexposed-2" src="rawoverexposed-2-1_thumb.jpeg" /></a></span></p> <h2>digital image processing, mathematical&nbsp;background</h2> <p>While modern sensors capture an astonishing dynamic range, they still can capture only so much. A <a href="https://en.wikipedia.org/wiki/Image_sensor">Sensor</a> consists of millions of pixel sensors, each pixel containing a <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> and an active amplifier. Each of these pixels could be thought of as a bucket: there is some upper limit of <a href="https://en.wikipedia.org/wiki/Photon">photons</a> it can capture. Which means, there is some point, above which the sensor can not distinguish how much <a href="https://en.wikipedia.org/wiki/Light">light</a> it&nbsp;received.</p> <p>Now, the pixel captured some photons, and the pixel now has some charge that can be measured. But it is an <a href="https://en.wikipedia.org/wiki/Analog_signal">analog</a> value. For better or worse, all modern cameras and software operate in the digital world. Thus, next step is the conversion of that charge via <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a> into a <a href="https://en.wikipedia.org/wiki/Digital_signal_(signal_processing)">digital</a>&nbsp;signal.</p> <p>Most sane cameras that can save raw files, store those values of pixels as an array of unsigned integers. What can we tell about those&nbsp;values?</p> <ul> <li> <p>Sensor readout results in some <a href="https://en.wikipedia.org/wiki/Image_noise">noise</a> (<a href="https://en.wikipedia.org/wiki/Dark_current_(physics)">black</a> noise + <a href="https://en.wikipedia.org/wiki/Bias_frame">readout</a> noise), meaning that even with the shortest <a href="https://en.wikipedia.org/wiki/Exposure_(photography)">exposure</a>, the pixels will not have zero&nbsp;value.</p> <p>That is a <strong>black level</strong>.</p> <p>For Canon it is often between <span class="math">\(\mathbf{2000}\)</span> and <span class="math">\(\mathbf{2050}\)</span>.</p> </li> <li> <p>Due to the non-magical nature of photosensitive pixels and <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>, there is some upper limit on the value each pixel can have. That limit may be different for each pixel, be it due to the different <a href="https://en.wikipedia.org/wiki/Color_filter_array"><span class="caps">CFA</span></a> color, or just manufacturing tolerances. Most modern Canon cameras produce 14-bit raw images, which means each pixel may have a value between <span class="math">\(\mathbf{0}\)</span> and <span class="math">\(\mathbf{{2^{14}}-1}\)</span> (i.e. <span class="math">\(\mathbf{16383}\)</span>).</p> <p>So the lowest maximal value that still can be represented by all the pixels is called the <strong>white level</strong>.</p> <p>For Canon it is often between <span class="math">\(\mathbf{13000}\)</span> and <span class="math">\(\mathbf{16000}\)</span>.</p> </li> </ul> <p>Both of these parameters also often depend on <a href="https://en.wikipedia.org/wiki/Film_speed#Digital_camera_ISO_speed_and_exposure_index"><span class="caps">ISO</span></a>.</p> <h3>why is the white level so low? (you can skip&nbsp;this)</h3> <p><em>Disclaimer: this is just my understanding of the subject. my understanding may be&nbsp;wrong.</em></p> <p>You may ask, why <strong>white level</strong> is less than the maximal value that can be stored in the raw file (that is, e.g. for 14-bit raw images, less than <span class="math">\(\mathbf{{2^{14}}-1}\)</span> (i.e. <span class="math">\(\mathbf{16383}\)</span>))?</p> <p>I have intentionally skipped over one more component of the sensor&nbsp;– an active <a href="https://en.wikipedia.org/wiki/Amplifier">amplifier</a>.</p> <p>It is the second most important component of the sensor (after the <a href="https://en.wikipedia.org/wiki/Photodetector">photodetectors</a>&nbsp;themselves).</p> <p>The saturation point of the <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> is much lower than the saturation point of the <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>. Also, due to the non-magical nature of <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>, it has a very specific voltage nominal range <span class="math">\(\mathbf{V_{RefLow}..V_{RefHi}}\)</span>, outside of which it can not work&nbsp;properly.</p> <p>E.g. <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> may output an analog signal with an <a href="https://en.wikipedia.org/wiki/Amplitude">amplitude</a> of (guess, general ballpark, not precise values) <span class="math">\(\mathbf{1..10}\)</span> <span class="math">\(\mathbf{mV}\)</span>, while the <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a> expects input analog signal to have an amplitude of <span class="math">\(\mathbf{1..10}\)</span> <span class="math">\(\mathbf{V}\)</span>.</p> <p>So if we directly pass charge from the <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> to the <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>, at best, we will get a very faint digital signal, with much smaller magnitude, compared to what <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a> can produce, and thus with very bad (low) <a href="https://en.wikipedia.org/wiki/Signal-to-noise_ratio"><span class="caps">SNR</span></a>.</p> <p>Also see: <a href="https://en.wikipedia.org/wiki/Signal_conditioning">Signal conditioning</a>.</p> <p>Thus, when quantifying non-amplified analog signal, we lose data, which can <strong>not</strong> be recovered&nbsp;later.</p> <p>Which means, the analog signal must be amplified, to equalize the output voltage levels of the <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> and [expected] input voltage levels of the analog signal to the <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>. That is done by an <a href="https://en.wikipedia.org/wiki/Amplifier">amplifier</a>. There may be more than just one amplifier, and more than one amplification&nbsp;step.</p> <p>Okay, what if we amplify an analog signal from <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> by a magnitude of <span class="math">\(\mathbf{3}\)</span>? I.e. we had <span class="math">\(\mathbf{5}\)</span> <span class="math">\(\mathbf{mV}\)</span>, but now got <span class="math">\(\mathbf{5}\)</span> <span class="math">\(\mathbf{V}\)</span>. At first all seems in order, the signal is within expected&nbsp;range.</p> <p>But we need to take into account one important detail: output voltage of a <a href="https://en.wikipedia.org/wiki/Photodetector">photodetector</a> depends on the amount of light it received, and the exposure time. So for low light and low shutter speed it will output the minimal voltage (in our example, <span class="math">\(\mathbf{1}\)</span> <span class="math">\(\mathbf{mV}\)</span>), and if we amplify that, we get <span class="math">\(\mathbf{1}\)</span> <span class="math">\(\mathbf{V}\)</span>, which is the <span class="math">\(\mathbf{V_{RefLow}}\)</span> of <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>.</p> <p>Similarly, for bright light and long shutter speed it will output the maximal voltage (in our example, <span class="math">\(\mathbf{10}\)</span> <span class="math">\(\mathbf{mV}\)</span>), and if we amplify that, we get <span class="math">\(\mathbf{10}\)</span> <span class="math">\(\mathbf{V}\)</span>, which is, again, the <span class="math">\(\mathbf{V_{RefHi}}\)</span> of <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter"><span class="caps">ADC</span></a>.</p> <p>So there are obvious cases where with constant amplification factor we get bad signal range. Thus, we need multiple amplifiers, each of which with different <a href="https://en.wikipedia.org/wiki/Gain_(electronics)">gain</a>, and we need to be able to toggle them separately, to control the amplification in finer&nbsp;steps.</p> <p>As you may have guessed by now, the signal amplification is the factor that results in the <strong>white level</strong> being at the e.g. <span class="math">\(\mathbf{16000}\)</span>, or some other value. Basically, this amplification is how the <span class="caps">ISO</span> level is implemented in&nbsp;hardware.</p> <h4><span class="caps">TL</span>;<span class="caps">DR</span>, so <em>why?</em></h4> <p>Because of the analog <a href="https://en.wikipedia.org/wiki/Gain_(electronics)">gain</a> that was applied to the data to bring it into the nominal range and not blow (clip, make them bigger than <span class="math">\(\mathbf{16383}\)</span>) the usable highlights. The <a href="https://en.wikipedia.org/wiki/Gain_(electronics)">gain</a> is applied in finite discrete steps, it may be impossible to apply a finer <a href="https://en.wikipedia.org/wiki/Gain_(electronics)">gain</a>, so that the <strong>white level</strong> is closer to <span class="math">\(\mathbf{16383}\)</span>.</p> <p>This is a very brief summary, for a detailed write-up i can direct you to the Magic Lantern&#8217;s <a href="https://www.magiclantern.fm/forum/index.php?topic=10111.0"><span class="caps">CMOS</span>/<span class="caps">ADTG</span>/Digic register investigation on <span class="caps">ISO</span></a>.</p> <h3>the first steps of processing a raw&nbsp;file</h3> <p>All right, we got a sensor readout&nbsp;– an array of unsigned integers&nbsp;– how do we get from that to an image, that can be&nbsp;displayed?</p> <ol> <li>Convert the values from <a href="https://en.wikipedia.org/wiki/Integer_(computer_science)">integer</a> (most often 16-bit unsigned) to <a href="https://en.wikipedia.org/wiki/Floating_point">float</a> (not strictly required, but best for <a href="https://en.wikipedia.org/wiki/Precision_(computer_science)">precision</a> reasons; we use <a href="https://en.wikipedia.org/wiki/Single-precision_floating-point_format">32-bit float</a>)</li> <li> <p>Subtract <strong>black&nbsp;level</strong></p> </li> <li> <p><a href="https://en.wikipedia.org/wiki/Normalization_(image_processing)">Normalize</a> the pixels so that the <strong>white level</strong> is <span class="math">\(\mathbf{1.0}\)</span></p> <p>Simplest way to do that is to divide each value by <span class="math">\(\mathbf{({white level} - {black&nbsp;level})}\)</span></p> <p>These 3 steps are done by the <a href="/usermanual/en/modules.html#raw_black_white_point"><code>raw black/white point</code></a>&nbsp;module.</p> </li> <li> <p>Next, the <a href="https://en.wikipedia.org/wiki/Color_balance">white balance</a> is applied. It is as simple as multiplying each separate <a href="https://en.wikipedia.org/wiki/Color_filter_array"><span class="caps">CFA</span></a> color by a specific coefficient. This so-called <strong>white balance</strong> vector can be acquired from several&nbsp;places:</p> <ol> <li> <p>Camera may store it in the image&#8217;s <a href="https://en.wikipedia.org/wiki/Exif">metadata</a>.</p> <p>(That is what <code>preset</code> = <code>camera</code> does)</p> </li> <li> <p>If the color matrix for a given sensor is known, an approximate <strong>white balance</strong> (that is, which will only take the sensor into account, but will not adjust for illuminant) can be computed from that&nbsp;matrix.</p> <p>(That is what <code>preset</code> = <code>camera neutral</code> does)</p> </li> <li> <p>Taking a simple <a href="https://en.wikipedia.org/wiki/Mean#Arithmetic_mean_.28AM.29">arithmetic mean (average)</a> of each of the <a href="https://en.wikipedia.org/wiki/Channel_(digital_image)">color channels</a> may give good-enough inverted white-balance&nbsp;multiplier.</p> <p><em><span class="caps">IMPORTANT</span>: the computed <strong>white balance</strong> will be good only if, on average, that image is&nbsp;gray.</em></p> <p><em>That is, it will correct <strong>white balance</strong> so that the average color becomes gray, so if average color is not neutrally gray (e.g. red), the image will look&nbsp;wrong.</em></p> <p>(That is what <code>preset</code> = <code>spot white balance</code> does)</p> </li> <li> <p>etc (user input, camera wb preset,&nbsp;&#8230;)</p> </li> </ol> <p>As you remember, in the previous step, we have scaled the data so that the <strong>white level</strong> is <span class="math">\(\mathbf{1.0}\)</span>, for every <a href="https://en.wikipedia.org/wiki/Channel_(digital_image)">color channel</a>. <strong>White balance</strong> coefficients scale each channel separately. For example, an example <strong>white balance</strong> vector <strong>may</strong> be <div class="math">$${\begin{pmatrix} 2.0 , 0.9 , 1.5 \end{pmatrix}}^{T}$$</div>. That is, Red channel will be scaled by <span class="math">\(\mathbf{2.0}\)</span>, Green channel will be scaled by <span class="math">\(\mathbf{0.9}\)</span>, and Blue channel will be scaled by <span class="math">\(\mathbf{1.5}\)</span>.</p> <p>In practice, however, the <strong>white balance</strong> vector is most often <a href="https://en.wikipedia.org/wiki/Normalization_(image_processing)">normalized</a> so that the Green channel multiplier is <span class="math">\(\mathbf{1.0}\)</span>.</p> <p>That step is done by the <a href="/usermanual/en/modules.html#whitebalance"><code>white balance</code></a>&nbsp;module.</p> </li> <li> <p>And last, highlight handling. As we know from definition, all the data values which are bigger than the <strong>white level</strong> are unusable, <a href="https://en.wikipedia.org/wiki/Clipping_(photography)">clipped</a>. Without / before <strong>white balance</strong> correction, it is clear that all the values which are bigger than <span class="math">\(\mathbf{1.0}\)</span> are the clipped values, and they are useless without some advanced&nbsp;processing.</p> <p>Now, what did the <strong>white balance</strong> correction do to the <strong>white levels</strong>? Correct, now, the <strong>white levels</strong> will be: <span class="math">\(\mathbf{2.0}\)</span> for Red channel, <span class="math">\(\mathbf{0.9}\)</span> for Green channel, and <span class="math">\(\mathbf{1.5}\)</span> for Blue&nbsp;channel.</p> <p>As we all know, the white color is <div class="math">$${\begin{pmatrix} 1.0 , 1.0 , 1.0 \end{pmatrix}}^{T}$$</div>. But the maximal values (the per-channel <strong>white levels</strong>) are <div class="math">$${\begin{pmatrix} 2.0 , 0.9 , 1.5 \end{pmatrix}}^{T}$$</div>, so our &#8220;white&#8221; will not be white, but, as experienced users may guess, purple-ish. What do we&nbsp;do?</p> <p>Since for white color, all the components have exact the same value&nbsp;– <span class="math">\(\mathbf{1.0}\)</span>&nbsp;– we just need to make sure that the maximal values are the same value. We can not scale each of the channels separately, because that would change <strong>white balance</strong>. We simply need to pick the minimal <strong>white level</strong>&nbsp;– <span class="math">\(\mathbf{0.9}\)</span>&nbsp;– in our case, and clip all the data to that level. I.e. all the data which had a value of less than or equal to that threshold, will retain the same value; and all the pixels with the value greater than the threshold will have the value of threshold&nbsp;– <span class="math">\(\mathbf{0.9}\)</span>.</p> <p>Alternatively, one could try to recover these highlights, see <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module; and <a href="https://www.darktable.org/2015/03/color-reconstruction/">Color Reconstruction</a> (though this last one only guesses color based on surroundings, does not actually reconstruct the channels, and is a <em>bit</em> too late in the&nbsp;pipe).</p> <p>If you don&#8217;t do highlight handling, you get what you have seen in the third image in this article&nbsp;– ugly, unnaturally looking, discolored,&nbsp;highlights.</p> <p><blockquote>Note: you might know that there are more steps required (namely: demosaicing, base curve, input color profile, output color profile; there may be others.), but for the purpose of detection and visualization of highlight clipping, they are unimportant, so i will not talk about them here.</blockquote></p> </li> </ol> <p>From that list, it should now be clear that all the pixels which have a value greater than the minimal per-channel <strong>white level</strong> right before the <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module, are the clipped&nbsp;pixels.</p> <h2>the&nbsp;Solution</h2> <p>But a technical problem arises: we need to visualize the clipped pixels on top of the fully processed image, while we only know whether the pixel is clipped or not in the input buffer of <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module. And we can not visualize clipping in the <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module itself, because the data is still <a href="https://en.wikipedia.org/wiki/Demosaicing">mosaiced</a>, and other modules will be applied after that&nbsp;anyway.</p> <p>The problem was solved by back-transforming the given <strong>white balance</strong> coefficients and the <strong>white level</strong>, and then comparing the values of original raw buffer produced by camera with that threshold. And, back-transforming output pixel coordinates through all the geometric distortions to figure out which pixel in the original input buffer needs to be&nbsp;checked.</p> <p>This seems to be the most flexible solution so&nbsp;far:</p> <ul> <li>We can visualize overexposure on top of final, fully-processed image. That means, no module messes with the&nbsp;visualization</li> <li>We do sample the original input buffer. That means we can actually know whether a given pixel is clipped or&nbsp;not</li> </ul> <p>Obviously, this new <code>raw-based overexposure indicator</code> depends on the specific <a href="https://en.wikipedia.org/wiki/Color_filter_array">sensor pattern</a>. Good news is, it just works for both the <a href="https://en.wikipedia.org/wiki/Bayer_filter">Bayer</a>, and <a href="https://en.wikipedia.org/wiki/Bayer_filter#Fujifilm_.22X-Trans.22_filter">X-Trans</a>&nbsp;sensors!</p> <h2>modes of&nbsp;operation</h2> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-ui.jpeg"><img alt="rawoverexposed-ui" src="rawoverexposed-ui_thumb.jpeg" /></a></span></p> <p>The <code>raw-based overexposure indicator</code> has 3 different <code>mode</code>s of&nbsp;operation:</p> <ol> <li> <p><code>mark with CFA color</code></p> <ul> <li>If the clipped pixel was Red, a Red pixel will be&nbsp;displayed.</li> <li>If the clipped pixel was Green, a Green pixel will be&nbsp;displayed.</li> <li>If the clipped pixel was Blue, a Blue pixel will be&nbsp;displayed.</li> </ul> <p>Sample output, X-Trans&nbsp;image.</p> <p>There are some Blue, Green and Red pixels clipped (counting to the&nbsp;centre)</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-xtrans-mode-cfa.jpeg"><img alt="rawoverexposed-xtrans-mode-cfa" src="rawoverexposed-xtrans-mode-cfa_thumb.jpeg" /></a></span></p> </li> <li> <p><code>mark with solid color</code></p> <ul> <li>If the raw pixel was clipped, it will be displayed in a given color (one of: red, green, blue,&nbsp;black)</li> </ul> <p>Same area, with <code>color scheme</code> = <code>black</code>.</p> <p>The more black dots the area contains, the more clipped pixels there are in that&nbsp;area.</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-xtrans-mode-solid-black.jpeg"><img alt="rawoverexposed-xtrans-mode-solid-black" src="rawoverexposed-xtrans-mode-solid-black_thumb.jpeg" /></a></span></p> </li> <li> <p><code>false color</code></p> <ul> <li>If the clipped pixel was Red, the Red channel for current pixel will be set to <span class="math">\(\mathbf{0.0}\)</span></li> <li>If the clipped pixel was Green, the Green channel for current pixel will be set to <span class="math">\(\mathbf{0.0}\)</span></li> <li>If the clipped pixel was Blue, the Blue channel for current pixel will be set to <span class="math">\(\mathbf{0.0}\)</span></li> </ul> <p>Same&nbsp;area.</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-xtrans-mode-falsecolor.jpeg"><img alt="rawoverexposed-xtrans-mode-falsecolor" src="rawoverexposed-xtrans-mode-falsecolor_thumb.jpeg" /></a></span></p> </li> </ol> <h2>understanding raw overexposure&nbsp;visualization</h2> <p>So, let&#8217;s go back to the fourth image in this&nbsp;article:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-2-1.jpeg"><img alt="rawoverexposed-2" src="rawoverexposed-2-1_thumb.jpeg" /></a></span></p> <p>This is <code>mode</code> = <code>mark with CFA color</code>.</p> <p>What does it tell&nbsp;us?</p> <ul> <li>Most of the sky is indeed&nbsp;clipped.</li> <li>In the top-right portion of the image, only the Blue channel is&nbsp;clipped.</li> <li>In the top-left portion of the image, Blue and Red channels are&nbsp;clipped.</li> <li><strong>No</strong> Green channel&nbsp;clipping.</li> </ul> <p>Now you know that,&nbsp;you:</p> <ol> <li>Will know better than to over-expose so much next time :) (hint to myself,&nbsp;mostly)</li> <li>Could try to recover from clipping a bit<ol> <li>either by not applying negative <strong>exposure compensation</strong> in <a href="/usermanual/en/modules.html#exposure"><code>exposure</code></a>&nbsp;module</li> <li>or using <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module with <code>mode</code> = <code>reconstruct in LCh</code></li> <li>or using <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module with <code>mode</code> = <code>reconstruct color</code>, though it is known to produce&nbsp;artefacts</li> <li>or using <a href="/usermanual/en/modules.html#color_reconstruction"><code>color reconstruction</code></a>&nbsp;module</li> </ol> </li> </ol> <h2>an important note about sensor clipping vs. color&nbsp;clipping</h2> <p>By default, the module visualizes the color clipping, <strong><span class="caps">NOT</span></strong> the sensor clipping. The colors may be clipped, while the sensor is still not&nbsp;clipping.</p> <p>Example:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-2.jpeg"><img alt="rawoverexposed-2" src="rawoverexposed-2_thumb.jpeg" /></a></span></p> <p>Let&#8217;s enable&nbsp;indicator&#8230;</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-3.jpeg"><img alt="rawoverexposed-3" src="rawoverexposed-3_thumb.jpeg" /></a></span></p> <p>The visualization says that Red and Blue channels are&nbsp;clipped.</p> <p>But now let&#8217;s disable the <a href="/usermanual/en/modules.html#whitebalance"><code>white balance</code></a> module, while keeping indicator&nbsp;active:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-4.jpeg"><img alt="rawoverexposed-4" src="rawoverexposed-4_thumb.jpeg" /></a></span></p> <p>Interesting, isn&#8217;t it? So actually there is no sensor-level clipping, but the image is still overexposed, because after the <a href="/usermanual/en/modules.html#whitebalance"><code>white balance</code></a> is applied, the channels do&nbsp;clip.</p> <p>While there, i wanted to show <a href="/usermanual/en/modules.html#highlight_reconstruction"><code>highlight reconstruction</code></a> module, <code>mode</code> = <code>reconstruct in LCh</code>.</p> <p>If you ever used it, you know that it used to produce pretty useless&nbsp;results.</p> <p>But not&nbsp;anymore:</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/highlight-reconstruction-reconstruct-in-lch.jpeg"><img alt="highlight-reconstruction-reconstruct-in-lch" src="highlight-reconstruction-reconstruct-in-lch_thumb.jpeg" /></a></span></p> <p>As you can compare that with the first version of this image in this block, the highlights, although they are clipped, are actually somewhat reconstructed, so the image is not so flat and dull, there is <em>some</em> gradient to&nbsp;it.</p> <h2>Too boring?&nbsp;:)</h2> <p>With sufficiently exposed image (or just set <code>black levels</code> to <span class="math">\(\mathbf{0}\)</span> and <code>white level</code> to <span class="math">\(\mathbf{1}\)</span> in <a href="/usermanual/en/modules.html#raw_black_white_point"><code>raw black/white point</code></a> module; and <code>clipping threshold</code> = <span class="math">\(\mathbf{0.0}\)</span>, <code>mode</code> = <code>mark with CFA color</code> in <code>raw overexposure indicator</code>), and a lucky combination of image size, output size and zoom level, produces a familiar-looking pattern&nbsp;:)</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-bayer-pattern.jpeg"><img alt="rawoverexposed-bayer-pattern" src="rawoverexposed-bayer-pattern_thumb.jpeg" /></a></span></p> <p>That is basically an artefact due to the downscaling for display. Though, feedback may ask to actually properly implement this as a&nbsp;feature&#8230;</p> <p>Now, what if we enable the <a href="/usermanual/en/correction_group.html#lens_correction">lens correction</a> module?&nbsp;:)</p> <p><span><a href="https://www.darktable.org/2016/10/raw-overexposed/rawoverexposed-bayer-pattern-and-lens-correction.jpeg"><img alt="rawoverexposed-bayer-pattern-and-lens-correction" src="rawoverexposed-bayer-pattern-and-lens-correction_thumb.jpeg" /></a></span></p> <p>So we could even create glitch-art with this&nbsp;thing!</p> <p>Technically, that is some kind of visualization of lens&nbsp;distortion.</p> <script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) { var align = "center", indent = "0em", linebreak = "false"; if (false) { align = (screen.width < 768) ? "left" : align; indent = (screen.width < 768) ? "0em" : indent; linebreak = (screen.width < 768) ? 'true' : linebreak; } var mathjaxscript = document.createElement('script'); mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#'; mathjaxscript.type = 'text/javascript'; mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; mathjaxscript[(window.opera ? "innerHTML" : "text")] = "MathJax.Hub.Config({" + " config: ['MMLorHTML.js']," + " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," + " jax: ['input/TeX','input/MathML','output/HTML-CSS']," + " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," + " displayAlign: '"+ align +"'," + " displayIndent: '"+ indent +"'," + " showMathMenu: true," + " messageStyle: 'normal'," + " tex2jax: { " + " inlineMath: [ ['\\\\(','\\\\)'] ], " + " displayMath: [ ['$$','$$'] ]," + " processEscapes: true," + " preview: 'TeX'," + " }, " + " 'HTML-CSS': { " + " styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," + " linebreaks: { automatic: "+ linebreak +", width: '90% container' }," + " }, " + "}); " + "if ('default' !== 'default') {" + "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "}"; (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript); } </script><img src="https://www.darktable.org/2016/10/raw-overexposed/rawprepare-lenscorrection-glitchart_wide.jpeg" class="hidden-lede">LebedevRIMon, 10 Oct 2016 10:30:24 +0000tag:www.darktable.org,2016-10-10:2016/10/raw-overexposed/blogdevelopmentupcoming featurecolorhighlightsdarktable 2.0.6 releasedhttps://www.darktable.org/2016/09/darktable-2-0-6-released/<p>we&#8217;re proud to announce the sixth bugfix release for the 2.0 series of darktable,&nbsp;2.0.6!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.6">https://github.com/darktable-org/darktable/releases/tag/release-2.0.6</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>2368c1865221032061645342ba8c00bcd6d224e9829a55bc610e6cb67de738c1 darktable-2.0.6.tar.xz 8376ab1bb74f4a25998ff1a7f03c8498b57064bf27700c9af53a7356e5a2ee1e darktable-2.0.6.dmg </pre></div> <p>and the changelog as compared to 2.0.5 can be found&nbsp;below.</p> <h2>New&nbsp;Features</h2> <ul> <li>Jpeg format writer: use libexiv2 to write metadata, like with other&nbsp;formats</li> <li>Accept non-mosaiced raw files with 4 channels, assume they are <span class="caps">RGBA</span> (alpha channel is&nbsp;ignored)</li> </ul> <h2>Bugfixes</h2> <ul> <li>Once again, fix for yet another gtk theming&nbsp;regression&#8230;</li> <li>OpenCL: properly discard <span class="caps">CPU</span>-based OpenCL devices. Fixes crashes on startup with some broken OpenCL implementations like&nbsp;pocl.</li> <li>darktable-cli: do not even try to open display, we don&#8217;t need&nbsp;it.</li> <li>Rawspeed: NikonDecoder: stop accepting generic camera entries. Fixes multitude of Nikon raw loading&nbsp;issues.</li> <li>OpenCL: fix border handling in crop&amp;rotate&nbsp;module</li> <li>Hotpixels iop: make it actually work for&nbsp;X-Trans</li> <li>Clipping <span class="caps">IOP</span>: scale width of gray crop path with zoom&nbsp;level</li> <li>One more fixup to canon lens name reading from&nbsp;exif</li> <li>Fixup Bayer pattern for Olympus <span class="caps">SP570UZ</span></li> <li>Fix internal build issue: do not assume that Perl&#8217;s @<span class="caps">INC</span> contains&nbsp;&#8216;.&#8217;</li> </ul> <h2>Base&nbsp;Support</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G9&nbsp;X</li> <li>Fujifilm&nbsp;X-T2</li> <li><span class="caps">GITUP</span> <span class="caps">GIT2</span> action&nbsp;camera</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ18</span> (16:9,&nbsp;3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ50</span> (16:9,&nbsp;3:2)</li> <li>Pentax&nbsp;K-1</li> <li>Sony <span class="caps">DSLR</span>-A380</li> <li>Sony <span class="caps">ILCE</span>-6300</li> <li>Nikon&nbsp;D500</li> <li>Some other whitelevel fixups for some other Nikon cameras (in particular, mostly for 12-bit and not compressed&nbsp;raws)</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Canon <span class="caps">EOS</span>-1D X Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;1300D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X80</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6</li> <li>Canon <span class="caps">EOS</span>&nbsp;M10</li> <li>Canon PowerShot G7 X Mark <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-T10</li> <li>Sony <span class="caps">ILCE</span>-6300</li> </ul> <h2>Translations&nbsp;Updates</h2> <ul> <li>Slovak</li> </ul><img src="https://www.darktable.org/2016/09/darktable-2-0-6-released/spider_wide.jpg" class="hidden-lede">houzWed, 07 Sep 2016 17:44:52 +0000tag:www.darktable.org,2016-09-07:2016/09/darktable-2-0-6-released/announcementdarktable releasecompressing dynamic range with exposure fusionhttps://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/<p>modern sensor capture an astonishing dynamic range, namely some sony sensors or canon with <a href="https://www.magiclantern.fm/forum/?topic=7139.0">magic lantern’s dual iso feature</a>.</p> <p>this is in a range where the image has to be processed carefully to display it in pleasing ways on a monitor, let alone the limited dynamic range of print&nbsp;media.</p> <h2>example&nbsp;images</h2> <h3>use graduated density filter to brighten&nbsp;foreground</h3> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0016.jpg"><img alt="original" src="img_0016_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0015.jpg"><img alt="graduated density filter" src="img_0015_thumb.jpg" title="graduated density filter" /></a></span></p> <p>using the <a href="/usermanual/en/effect_group.html#graduated_density">graudated density iop</a> works well in this case since the horizon here is more or less straight, so we can easily mask it out with a simple gradient in the graduated density module. now what if the objects can’t be masked out so&nbsp;easily?</p> <h3>more complex&nbsp;example</h3> <p>this image needed to be substantially underexposed in order not to clip the interesting highlight detail in the&nbsp;clouds.</p> <p>original image, then extreme settings in <a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/">the shadows and highlights iop</a> (heavy fringing despite bilateral filter used for smoothing). also note how the shadow detail is still very dark. third one is <a href="/usermanual/en/tone_group.html#global_tonemap">tone mapped (drago)</a> and fourth is default darktable processing with +6ev&nbsp;exposure.</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0007.jpg"><img alt="original" src="img_0007_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0008.jpg"><img alt="shadows/highlights" src="img_0008_thumb.jpg" title="shadows/highlights" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0008-2.jpg"><img alt="tonemap" src="img_0008-2_thumb.jpg" title="tonemap" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0008-3.jpg"><img alt="+6ev" src="img_0008-3_thumb.jpg" title="+6ev" /></a></span></p> <p>tone mapping also flattens a lot of details why this version already has some local contrast enhancement applied to it. this can quickly result in unnatural results. similar applies to colour saturation (for reasons of good taste, no link to examples at this point&nbsp;&#8230;).</p> <p>the last image in the set is just a regular default base curve pushed by six stops using the exposure module. the green colours of the grass look much more natural than in any of the other approaches taken so far (including graduated density filters, these need some fiddling in the colour saturation &#8230;). unfortunately we lose a lot of detail in the highlights (to say the&nbsp;least).</p> <p>this can be observed for most images, here is another example (original, then pushed&nbsp;+6ev):</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0004.jpg"><img alt="original" src="img_0004_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0005.jpg"><img alt="+6ev" src="img_0005_thumb.jpg" title="+6ev" /></a></span></p> <h2>exposure&nbsp;fusion</h2> <p>this is precisely the motivation behind the great paper entitled <a href="https://web.stanford.edu/class/cs231m/project-1/exposure-fusion.pdf">Exposure Fusion</a>: what if we develop the image a couple of times, each time exposing for a different feature (highlights, mid-tones, shadows), and then merge the results where they look&nbsp;best?</p> <p>this has been available in software for a while in <a href="https://wiki.panotools.org/Enfuse">enfuse</a></p> <p>even with a gui called <a href="http://software.bergmark.com/enfuseGUI/Main.html">EnfuseGUI</a>.</p> <p>we now have this feature in darktable,&nbsp;too.</p> <p>find the new fusion combo box in the darktable base curve&nbsp;module:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/gui.png"><img alt="gui" src="gui_thumb.png" title="gui" /></a></span></p> <p>options are to merge the image with itself two or three times. each extra copy of the image will be boosted by an additional three stops (+3ev and +6ev), then the base curve will be applied to it and the laplacian pyramids of the resulting images will be&nbsp;merged.</p> <h2>results</h2> <p>this is a list of input images and the corresponding result of exposure&nbsp;fusion:</p> <p>0ev,+3ev,+6ev:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0004-1.jpg"><img alt="original" src="img_0004-1_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0003.jpg"><img alt="0ev,+3ev,+6ev" src="img_0003_thumb.jpg" title="0ev,+3ev,+6ev" /></a></span></p> <p>0ev,+3ev:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0002.jpg"><img alt="original" src="img_0002_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0001.jpg"><img alt="0ev,+3ev" src="img_0001_thumb.jpg" title="0ev,+3ev" /></a></span></p> <p>0ev,+3ev,+6ev:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0007-1.jpg"><img alt="original" src="img_0007-1_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0006.jpg"><img alt="0ev,+3ev,+6ev" src="img_0006_thumb.jpg" title="0ev,+3ev,+6ev" /></a></span></p> <p>0ev,+3ev,+6ev:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0010.jpg"><img alt="original" src="img_0010_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0009.jpg"><img alt="fusion" src="img_0009_thumb.jpg" title="fusion" /></a></span></p> <p>0ev,+3ev:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0012.jpg"><img alt="original" src="img_0012_thumb.jpg" title="original" /></a></span></p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0011.jpg"><img alt="fusion" src="img_0011_thumb.jpg" title="fusion" /></a></span></p> <h2>conclusion</h2> <p>image from&nbsp;beginning:</p> <p><span><a href="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/img_0017.jpg"><img alt="fusion" src="img_0017_thumb.jpg" title="fusion" /></a></span></p> <p>note that the feature is currently merged to git master, but&nbsp;unreleased.</p> <h2>links</h2> <ul> <li><a href="https://www.magiclantern.fm/forum/?topic=7139.0">magic lantern dual&nbsp;iso</a></li> <li><a href="/usermanual/en/effect_group.html#graduated_density">graudated density&nbsp;iop</a></li> <li><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/">shadows and highlights&nbsp;iop</a></li> <li><a href="/usermanual/en/tone_group.html#global_tonemap">tone mapping&nbsp;iop</a></li> <li> <p>Tom Mertens, Jan Kautz, and Frank Van Reeth.&nbsp;2007.</p> <p><a href="https://web.stanford.edu/class/cs231m/project-1/exposure-fusion.pdf">Exposure Fusion</a>.</p> <p>In Proceedings of the 15th Pacific Conference on Computer Graphics and Applications (<span class="caps">PG</span> &#8216;07). <span class="caps">IEEE</span> Computer Society,&nbsp;382-390.</p> </li> <li> <p><a href="https://wiki.panotools.org/Enfuse">enfuse</a></p> </li> <li><a href="http://software.bergmark.com/enfuseGUI/Main.html">EnfuseGUI</a></li> </ul><img src="https://www.darktable.org/2016/08/compressing-dynamic-range-with-exposure-fusion/lede_wide.jpg" class="hidden-lede">joTue, 09 Aug 2016 18:14:45 +0000tag:www.darktable.org,2016-08-09:2016/08/compressing-dynamic-range-with-exposure-fusion/blogdevelopmentfurther readingupcoming featuredarktable 2.0.5 releasedhttps://www.darktable.org/2016/07/darktable-2-0-5-released/<p>we&#8217;re proud to announce the fifth bugfix release for the 2.0 series of darktable,&nbsp;2.0.5!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.5">https://github.com/darktable-org/darktable/releases/tag/release-2.0.5</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.5.tar.xz 898b71b94e7ef540eb1c87c829daadc8d8d025b1705d4a9471b1b9ed91b90a02 darktable-2.0.5.tar.xz $ sha256sum darktable-2.0.5.dmg e0ae0e5e19771810a80d6851e022ad5e51fb7da75dcbb98d96ab5120b38955fd darktable-2.0.5.dmg </pre></div> <p>and the changelog as compared to 2.0.4 can be found&nbsp;below.</p> <h2>New&nbsp;Features</h2> <ul> <li>Add geolocation to watermark&nbsp;variables</li> </ul> <h2>Bugfixes</h2> <ul> <li>Mac: bugfix + build&nbsp;fix</li> <li>Lua: fixed dt.collection not&nbsp;working</li> <li>Fix softproofing with some internal&nbsp;profiles</li> <li>Fix non-working libsecret pwstorage&nbsp;backend</li> <li>Fixed a few issues within (rudimentary) lightroom&nbsp;import</li> <li>Some fixes related to handling of duplicates and/or&nbsp;tags</li> </ul> <h2>Base&nbsp;Support</h2> <ul> <li>Canon <span class="caps">EOS</span> 80D (no mRAW/sRAW&nbsp;support!)</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;80D</li> </ul> <h2>Translations&nbsp;Updates</h2> <ul> <li>Danish</li> <li>German</li> <li>Slovak</li> </ul><img src="https://www.darktable.org/2016/07/darktable-2-0-5-released/landscape_wide.jpg" class="hidden-lede">houzTue, 05 Jul 2016 09:36:30 +0000tag:www.darktable.org,2016-07-05:2016/07/darktable-2-0-5-released/announcementdarktable releasecolour manipulation with the colour checker lut modulehttps://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/<p><strong>[update 2016/07/31: there was a section about intermediate export to csv and manually changing that file. this is no longer needed, exporting the style directly from darktable-chart is fine&nbsp;now.]</strong></p> <h2>motivation</h2> <p>for raw photography there exist great presets for nice colour&nbsp;rendition:</p> <ul> <li>in-camera colour processing such as canon picture&nbsp;styles</li> <li>fuji film-emulation-like presets (provia velvia astia&nbsp;classic-chrome)</li> <li><a href="https://gmic.eu/film_emulation/">pat david&#8217;s film emulation&nbsp;luts</a></li> </ul> <p>unfortunately these are eat-it-or-die canned styles or icc lut profiles. you have to apply them and be happy or tweak them with other tools. but can we extract meaning from these presets? can we have understandable and tweakable styles like&nbsp;these?</p> <p>in a first attempt, i used a non-linear optimiser to control the parameters of the modules in darktable&#8217;s processing pipeline and try to match the output of such styles. while this worked reasonably well for some of pat&#8217;s film luts, it failed completely on canon&#8217;s picture styles. it was very hard to reproduce generic colour-mapping styles in darktable without parametric&nbsp;blending.</p> <p>that is, we require a generic colour to colour mapping function. this should be equally powerful as colour look up tables, but enable us to inspect it and change small aspects of it (for instance only the way blue tones are&nbsp;treated).</p> <h2>overview</h2> <p>in git master, there is a new module to implement generic colour mappings: the colour checker lut module (lut: look up table). the following will be a description how it works internally, how you can use it, and what this is good&nbsp;for.</p> <p>in short, it is a colour lut that remains understandable and editable. that is, it is not a black-box look up table, but you get to see what it actually does and change the bits that you don&#8217;t like about&nbsp;it.</p> <p>the main use cases are precise control over source colour to target colour mapping, as well as matching in-camera styles that process raws to jpg in a certain way to achieve a particular look. an example of this are the fuji film emulation modes. to this end, we will fit a colour checker lut to achieve their colour rendition, as well as a tone curve to achieve the tonal&nbsp;contrast.</p> <p><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/target.jpg"><img alt="target" src="target_thumb.jpg" /></a></span></p> <p>to create the colour lut, it is currently necessary to take a picture of an <a href="http://targets.coloraid.de/">it8 target</a> (well, technically we support any similar target, but didn&#8217;t try them yet so i won&#8217;t really comment on it). this gives us a raw picture with colour values for a few colour patches, as well as a in-camera jpg reference (in the raw thumbnail &#8230;), and measured reference values (what we know it <em>should</em> look&nbsp;like).</p> <p>to map all the other colours (that fell in between the patches on the chart) to meaningful output colours, too, we will need to interpolate this measured&nbsp;mapping.</p> <h2>theory</h2> <p>we want to express a smooth mapping from input colours <span class="math">\(\mathbf{s}\)</span> to target colours <span class="math">\(\mathbf{t}\)</span>, defined by a couple of sample points (which will in our case be the 288 patches of an it8&nbsp;chart).</p> <p>the following is a quick summary of what we implemented and much better described in <span class="caps">JP</span>&#8217;s siggraph course&nbsp;[0].</p> <h3>radial basis&nbsp;functions</h3> <p>radial basis functions are a means of interpolating between sample points&nbsp;via</p> <div class="math">$$f(x) = \sum_i c_i\cdot\phi(\| x - s_i\|),$$</div> <p>with some appropriate kernel <span class="math">\(\phi(r)\)</span> (we&#8217;ll get to that later) and a set of coefficients <span class="math">\(c_i\)</span> chosen to make the mapping <span class="math">\(f(x)\)</span> behave like we want it at and in between the source colour positions <span class="math">\(s_i\)</span>. now to make sure the function actually passes through the target colours, i.e. <span class="math">\(f(s_i) = t_i\)</span>, we need to solve a linear system. because we want the function to take on a simple form for simple problems, we also add a polynomial part to it. this makes sure that black and white profiles turn out to be black and white and don&#8217;t oscillate around zero saturation colours wildly. the system&nbsp;is</p> <div class="math">$$ \left(\begin{array}{cc}A &amp;P\\P^t &amp; 0\end{array}\right) \cdot \left(\begin{array}{c}\mathbf{c}\\\mathbf{d}\end{array}\right) = \left(\begin{array}{c}\mathbf{t}\\0\end{array}\right)$$</div> <p>where</p> <div class="math">$$A=\left(\begin{array}{ccc} \phi(r_{00})&amp; \phi(r_{10})&amp; \cdots \\ \phi(r_{01})&amp; \phi(r_{11})&amp; \cdots \\ \phi(r_{02})&amp; \phi(r_{12})&amp; \cdots \\ \cdots &amp; &amp; \cdots \end{array}\right),$$</div> <p>and <span class="math">\(r_{ij} = \| s_i - t_j \|\)</span> is the distance (<span class="caps">CIE</span> 76 <span class="math">\(\Delta E\)</span>, <span class="math">\(\sqrt{(L_s - L_t)^2 + (a_s - a_t)^2 + (b_s - b_t)^2}\)</span>) between source colour <span class="math">\(s_i\)</span> and target colour <span class="math">\(t_j\)</span>, in our&nbsp;case</p> <div class="math">$$P=\left(\begin{array}{cccc} L_{s_0}&amp; a_{s_0}&amp; b_{s_0}&amp; 1\\ L_{s_1}&amp; a_{s_1}&amp; b_{s_1}&amp; 1\\ \cdots \end{array}\right)$$</div> <p>is the polynomial part, and <span class="math">\(\mathbf{d}\)</span> are the coefficients to the polynomial part. these are here so we can for instance easily reproduce <span class="math">\(t = s\)</span> by setting <span class="math">\(\mathbf{d} = (1, 1, 1, 0)\)</span> in the respective row. we will need to solve this system for the coefficients <span class="math">\(\mathbf{c}=(c_0,c_1,\cdots)^t\)</span> and <span class="math">\(\mathbf{d}\)</span>.</p> <p>many options will do the trick and solve the system here. we use singular value decomposition in our implementation. one advantage is that it is robust against singular matrices as input (accidentally map the same source colour to different target colours for&nbsp;instance).</p> <h3>thin plate&nbsp;splines</h3> <p>we didn&#8217;t yet define the radial basis function kernel. it turns out so-called thin plate splines have very good behaviour in terms of low oscillation/low curvature of the resulting function. the associated kernel&nbsp;is</p> <div class="math">$$\phi(r) = r^2 \log r.$$</div> <p>note that there is a similar functionality in gimp as a gegl colour mapping operation (which i believe is using a shepard-interpolation-like&nbsp;scheme).</p> <h3>creating a sparse&nbsp;solution</h3> <p>we will feed this system with 288 patches of an it8 colour chart. that means, with the added four polynomial coefficients, we have a total of 292 source/target colour pairs to manage here. apart from performance issues when executing the interpolation, we didn&#8217;t want that to show up in the gui like this, so we were looking to reduce this number without introducing large&nbsp;error.</p> <p>indeed this is possible, and literature provides a nice algorithm to do so, which is called <em>orthogonal matching pursuit</em>&nbsp;[1].</p> <p>this algorithm will select the most important hand full of coefficients <span class="math">\(\in \mathbf{c},\mathbf{d}\)</span>, to keep the overall error low. In practice we run it up to a predefined number of patches (<span class="math">\(24=6\times 4\)</span> or <span class="math">\(49=7\times 7\)</span>), to make best use of gui real&nbsp;estate.</p> <h2>the colour checker lut&nbsp;module</h2> <p><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/clut-iop.png"><img alt="clut-iop" src="clut-iop_thumb.png" /></a></span></p> <h3>gui&nbsp;elements</h3> <p>when you select the module in darkroom mode, it should look something like the image above (configurations with more than 24 patches are shown in a 7×7 grid instead). by default, it will load the 24 patches of a colour checker classic and initialise the mapping to identity (no change to the&nbsp;image).</p> <ul> <li>the grid shows a list of coloured patches. the colours of the patches are the source points <span class="math">\(\mathbf{s}\)</span>.</li> <li>the target colour <span class="math">\(t_i\)</span> of the selected patch <span class="math">\(i\)</span> is shown as offset controlled by sliders in the ui under the grid of&nbsp;patches.</li> <li>an outline is drawn around patches that have been altered, i.e. the source and target colours&nbsp;differ.</li> <li>the selected patch is marked with a white square, and the number shows in the combo box&nbsp;below.</li> </ul> <h3>interaction</h3> <p>to interact with the colour mapping, you can change both source and target colours. the main use case is to change the target colours however, and start with an appropriate <em>palette</em> (see the presets menu, or download a style&nbsp;somewhere).</p> <ul> <li>you can change lightness (L), green-red (a), blue-yellow (b), or saturation (C) of the target colour via&nbsp;sliders.</li> <li>select a patch by left clicking on it, or using the combo box, or using the colour&nbsp;picker</li> <li>to change source colour, select a new colour from your image by using the colour picker, and shift-left-click on the patch you want to&nbsp;replace.</li> <li>to reset a patch, double-click&nbsp;it.</li> <li>right-click a patch to delete&nbsp;it.</li> <li>shift-left-click on empty space to add a new patch (with the currently picked colour as source&nbsp;colour).</li> </ul> <h2>example use&nbsp;cases</h2> <h3>example 1: dodging and burning with the skin tones&nbsp;preset</h3> <p>to process the following image i took of pat in the overground, i started with the <em>skin tones</em> preset in the colour checker module (right click on nothing in the gui or click on the icon with the three horizontal lines in the header and select the&nbsp;preset).</p> <p>then, i used the colour picker (little icon to the right of the patch# combo box) to select two skin tones: very bright highlights and dark shadow tones. the former i dragged the brightness down a bit, the latter i brightened up a bit via the lightness (L) slider. this is the&nbsp;result:</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/pat_crop_02.png"><img alt="original" src="pat_crop_02_thumb.png" title="original" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/pat_crop_03_flat.png"><img alt="dialed down contrast in skin tones" src="pat_crop_03_flat_thumb.png" /></a></span></span> </span></p> <h3>example 2: skin tones and&nbsp;eyes</h3> <p>in this image, i started with the fuji classic chrome-like style (see below for a download link), to achieve the subdued look in the skin tones. then, i picked the iris colour and saturated this tone via the saturation&nbsp;slider.</p> <p>as a side note, the flash didn&#8217;t fire in this image (iso 800) so i needed to stop it up by 2.5ev and the rest is all natural lighting&nbsp;&#8230;</p> <p><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/mairi_crop_01.jpg"><img alt="original" src="mairi_crop_01_thumb.jpg" /></a></span></p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/mairi_crop_02.jpg"><img alt="+2.5ev classic chrome" src="mairi_crop_02_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/mairi_crop_03.jpg"><img alt="saturated eyes" src="mairi_crop_03_thumb.jpg" /></a></span></span> </span></p> <h2>use <code>darktable-chart</code> to create a&nbsp;style</h2> <p>as a starting point, i matched a colour checker lut interpolation function to the in-camera processing of fuji cameras. these have the names of old film and generally do a good job at creating pleasant colours. this was done using the <code>darktable-chart</code> utility, by matching raw colours to the jpg output (both in Lab space in the darktable&nbsp;pipeline).</p> <p>here is the <a href="https://jo.dreggn.org/blog/darktable-fuji-styles.tar.xz">link to the fuji styles</a>, and <a href="/usermanual/en/styles.html#styles">how to use them</a>. i should be doing pat&#8217;s film emulation presets with this, too, and maybe styles from other cameras (canon picture styles?). <code>darktable-chart</code> will output a dtstyle file, with the mapping split into tone curve and colour checker module. this allows us to tweak the contrast (tone curve) in isolation from the colours (lut&nbsp;module).</p> <p>these styles were created with the <span class="caps">X100T</span> model, and reportedly they work so/so with different camera models. the idea is to create a Lab-space mapping which is well configured for all cameras. but apparently there may be sufficient differences between the output of different cameras after applying their colour matrices (after all these matrices are just an approximation of the real camera to <span class="caps">XYZ</span>&nbsp;mapping).</p> <p>so if you&#8217;re really after maximum precision, you may have to create the styles yourself for your camera model. here&#8217;s&nbsp;how:</p> <h3>step-by-step tutorial to match the in-camera jpg&nbsp;engine</h3> <p>note that this is essentially similar to <a href="https://github.com/pmjdebruijn/colormatch">pascal&#8217;s colormatch script</a>, but will result in an editable style for darktable instead of a fixed icc&nbsp;lut.</p> <ul> <li>need an it8 (sorry, could lift that, maybe, similar to what we do for <a href="https://www.darktable.org/2013/10/about-basecurves/">basecurve fitting</a>)</li> <li> <p>shoot the chart with your&nbsp;camera:</p> <ul> <li>shoot raw +&nbsp;jpg</li> <li>avoid glare and shadow and extreme angles, potentially the rims of your image&nbsp;altogether</li> <li>shoot a lot of exposures, try to match L=92 for G00 (or look that up in your it8&nbsp;description)</li> </ul> </li> <li> <p>develop the images in&nbsp;darktable:</p> <ul> <li>lens and vignetting correction needed on both or on neither of raw +&nbsp;jpg</li> <li>(i calibrated for vignetting, see <a href="http://wilson.bronger.org/lens_calibration_tutorial/#id3">lensfun</a>)</li> <li>output colour space to Lab (set the secret option in <code>darktablerc</code>: <code>allow_lab_output=true</code>)</li> <li>standard input matrix and camera white balance for the raw, srgb for&nbsp;jpg.</li> <li>no gamut clipping, no basecurve, no anything&nbsp;else.</li> <li>maybe do <a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/">perspective correction</a> and crop the&nbsp;chart</li> <li>export as float&nbsp;pfm</li> </ul> </li> <li> <p><code>darktable-chart</code></p> <ul> <li>load the pfm for the raw image and the jpg target in the second&nbsp;tab</li> <li>drag the corners to make the mask match the patches in the&nbsp;image</li> <li>maybe adjust the security margin using the slider in the top right, to avoid stray colours being blurred into the patch&nbsp;readout</li> <li>you need to select the gray ramp in the combo box (not&nbsp;auto-detected)</li> <li>click <em>process</em></li> <li>export</li> <li>fix up style description in the export dialog if you&nbsp;want</li> <li>outputs a <code>.dtstyle</code> with everything properly switched off, and two modules on: colour checker + tonecurve in&nbsp;Lab</li> </ul> </li> </ul> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/darktable-lut-tool-crop-01.jpg"><img alt="darktable-lut-tool-crop-01" src="darktable-lut-tool-crop-01_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/darktable-lut-tool-crop-02.jpg"><img alt="darktable-lut-tool-crop-02" src="darktable-lut-tool-crop-02_thumb.jpg" /></a></span></span> </span></p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/darktable-lut-tool-crop-03.jpg"><img alt="darktable-lut-tool-crop-03" src="darktable-lut-tool-crop-03_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/darktable-lut-tool-crop-04.jpg"><img alt="darktable-lut-tool-crop-04" src="darktable-lut-tool-crop-04_thumb.jpg" /></a></span></span> </span></p> <p>to fix wide gamut input, it may be needed to enable gamut clipping in the input colour profile module when applying the resulting style to an image with highly saturated colours. <code>darktable-chart</code> does that automatically in the style it&nbsp;writes.</p> <h3>fitting&nbsp;error</h3> <p>when processing the list of colour pairs into a set of coefficients for the thin plate spline, the program will output the approximation error, indicated by average and maximum <span class="caps">CIE</span> 76 <span class="math">\(\Delta E\)</span> for the input patches (the it8 in the examples here). of course we don&#8217;t know anything about colours which aren&#8217;t represented in the patch. the hope would be that the sampling is dense enough for all intents and purposes (but nothing is holding us back from using a target with even more&nbsp;patches).</p> <p>for the fuji styles, these errors are typically in the range of mean <span class="math">\(\Delta E\approx 2\)</span> and max <span class="math">\(\Delta E \approx 10\)</span> for 24 patches and a bit less for 49. unfortunately the error does not decrease very fast in the number of patches (and will of course drop to zero when using all the patches of the input&nbsp;chart).</p> <div class="highlight"><pre>provia 24:rank 28/24 avg DE 2.42189 max DE 7.57084 provia 49:rank 53/49 avg DE 1.44376 max DE 5.39751 astia-24:rank 27/24 avg DE 2.12006 max DE 10.0213 astia-49:rank 52/49 avg DE 1.34278 max DE 7.05165 velvia-24:rank 27/24 avg DE 2.87005 max DE 16.7967 velvia-49:rank 53/49 avg DE 1.62934 max DE 6.84697 classic chrome-24:rank 28/24 avg DE 1.99688 max DE 8.76036 classic chrome-49:rank 53/49 avg DE 1.13703 max DE 6.3298 mono-24:rank 27/24 avg DE 0.547846 max DE 3.42563 mono-49:rank 52/49 avg DE 0.339011 max DE 2.08548 </pre></div> <h3>future&nbsp;work</h3> <p>it is possible to match the reference values of the it8 instead of a reference jpg output, to calibrate the camera more precisely than the colour matrix&nbsp;would.</p> <ul> <li>there is a button for this in the <code>darktable-chart</code> tool</li> <li>needs careful shooting, to match brightness of reference value&nbsp;closely.</li> <li>at this point it&#8217;s not clear to me how white balance should best be handled&nbsp;here.</li> <li>need reference reflectances of the it8 (wolf faust ships some for a few&nbsp;illuminants).</li> </ul> <p>another next step we would like to take with this is to match real film footage (porta etc). both reference and film matching will require some global exposure calibration&nbsp;though.</p> <h2>references</h2> <ul> <li> <p>[0] Ken Anjyo and <span class="caps">J. P.</span> Lewis and Frédéric&nbsp;Pighin,</p> <p><span class="dquo">&#8220;</span>Scattered data interpolation for computer&nbsp;graphics&#8221;</p> <p>in Proceedings of <span class="caps">SIGGRAPH</span> 2014 Courses, Article No. 27, 2014. <a href="http://scribblethink.org/Courses/ScatteredInterpolation/scatteredinterpcoursenotes.pdf">pdf</a></p> </li> <li> <p>[1] <span class="caps">J. A.</span> Tropp and <span class="caps">A. C.</span>&nbsp;Gilbert,</p> <p><span class="dquo">&#8220;</span>Signal Recovery From Random Measurements Via Orthogonal Matching&nbsp;Pursuit&#8221;,</p> <p>in <span class="caps">IEEE</span> Transactions on Information Theory, vol. 53, no. 12, pp. 4655-4666, Dec.&nbsp;2007.</p> </li> </ul> <h2>links</h2> <ul> <li><a href="https://gmic.eu/film_emulation/">pat david&#8217;s film emulation&nbsp;luts</a></li> <li><a href="https://jo.dreggn.org/blog/darktable-fuji-styles.tar.xz">download fuji&nbsp;styles</a></li> <li><a href="/usermanual/en/styles.html#styles">darktable&#8217;s user manual on&nbsp;styles</a></li> <li><a href="http://targets.coloraid.de">it8&nbsp;target</a></li> <li><a href="https://github.com/pmjdebruijn/colormatch">pascal&#8217;s&nbsp;colormatch</a></li> <li><a href="http://wilson.bronger.org/lens_calibration_tutorial/#id3">lensfun&nbsp;calibration</a></li> <li><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/">perspective correction in&nbsp;darktable</a></li> <li><a href="https://www.darktable.org/2013/10/about-basecurves/">fit basecurves for&nbsp;darktable</a></li> </ul> <script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) { var align = "center", indent = "0em", linebreak = "false"; if (false) { align = (screen.width < 768) ? "left" : align; indent = (screen.width < 768) ? "0em" : indent; linebreak = (screen.width < 768) ? 'true' : linebreak; } var mathjaxscript = document.createElement('script'); mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#'; mathjaxscript.type = 'text/javascript'; mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; mathjaxscript[(window.opera ? "innerHTML" : "text")] = "MathJax.Hub.Config({" + " config: ['MMLorHTML.js']," + " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," + " jax: ['input/TeX','input/MathML','output/HTML-CSS']," + " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," + " displayAlign: '"+ align +"'," + " displayIndent: '"+ indent +"'," + " showMathMenu: true," + " messageStyle: 'normal'," + " tex2jax: { " + " inlineMath: [ ['\\\\(','\\\\)'] ], " + " displayMath: [ ['$$','$$'] ]," + " processEscapes: true," + " preview: 'TeX'," + " }, " + " 'HTML-CSS': { " + " styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," + " linebreaks: { automatic: "+ linebreak +", width: '90% container' }," + " }, " + "}); " + "if ('default' !== 'default') {" + "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "}"; (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript); } </script><img src="https://www.darktable.org/2016/05/colour-manipulation-with-the-colour-checker-lut-module/teaser.jpg" class="hidden-lede">joTue, 24 May 2016 13:49:13 +0000tag:www.darktable.org,2016-05-24:2016/05/colour-manipulation-with-the-colour-checker-lut-module/blogdevelopmentfurther readingupcoming featuredarktable 2.0.4 releasedhttps://www.darktable.org/2016/05/darktable-2-0-4-released/<p>we&#8217;re proud to announce the fourth bugfix release for the 2.0 series of darktable,&nbsp;2.0.4!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.4">https://github.com/darktable-org/darktable/releases/tag/release-2.0.4</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.4.tar.xz 80e448622ff060bca1d64bf6151c27de34dea8fe6b7ddb708e1e3526a5961e62  darktable-2.0.4.tar.xz $ sha256sum darktable-2.0.4.dmg 1e6306f623c3743fabe88312d34376feae94480eb5a38858f21751da04ac4550 darktable-2.0.4.dmg </pre></div> <p>and the changelog as compared to 2.0.3 can be found&nbsp;below.</p> <h2>New&nbsp;Features</h2> <ul> <li>Support grayscale input&nbsp;profiles</li> <li>Add a <span class="caps">BRG</span> profile for testing&nbsp;purposes</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix the <span class="caps">GUI</span> with <span class="caps">GTK</span>&nbsp;3.20</li> <li>Fix the color profiles we&nbsp;ship</li> <li>Fix two deflicker (exposure iop, mode = automatic)&nbsp;issues</li> <li>Fix trashing of files on <span class="caps">OSX</span></li> <li>Fix Rights field in&nbsp;Lua</li> </ul> <h2>Base&nbsp;Support</h2> <ul> <li>Nikon&nbsp;D5</li> <li>Sony <span class="caps">ILCA</span>-68</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Pentax&nbsp;K-S1</li> <li>Sony <span class="caps">ILCA</span>-68</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Canon PowerShot&nbsp;G15</li> <li>Fujifilm&nbsp;X70</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span></li> </ul> <h2>Translation&nbsp;Added</h2> <ul> <li>Slovenian</li> </ul> <h2>Translations&nbsp;Updates</h2> <ul> <li>Catalan</li> <li>Dutch</li> <li>German</li> <li>Hebrew</li> <li>Slovak</li> <li>Spanish</li> </ul><img src="https://www.darktable.org/2016/05/darktable-2-0-4-released/mairi_wide.jpg" class="hidden-lede">houzFri, 06 May 2016 11:15:19 +0000tag:www.darktable.org,2016-05-06:2016/05/darktable-2-0-4-released/announcementdarktable releaseLiquify, liquify?https://www.darktable.org/2016/04/liquify-liquify/<p>Most modules in darktable are working on changing pixels color, lightness, etc. Few modules are moving pixels and when they do they are doing it in a very constraint way like to rotate, fix the lens&#8217; distortions or remove&nbsp;spots.</p> <p>The liquify module offer more ways to move pixels around by applying some free style distortions to parts of the image. There is three tools to help doing&nbsp;that:</p> <ul> <li>point</li> <li>line</li> <li>curve</li> </ul> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-0.png"><img alt="liquify-0" src="liquify-0_thumb.png" /></a></span></p> <p>Each tool is based on nodes. A point is given by a single node, a line or curve by a set of nodes which defines the&nbsp;path.</p> <p>Next to the count, in order we have the following&nbsp;tools:</p> <ul> <li>hide/show the&nbsp;warps</li> <li>the <strong>point</strong>&nbsp;tool</li> <li>the <strong>line</strong>&nbsp;tool</li> <li>the <strong>curve</strong>&nbsp;tool</li> <li>the node edit&nbsp;tool</li> </ul> <p>Let&#8217;s see what a node&nbsp;does:</p> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-1.png"><img alt="liquify-1" src="liquify-1_thumb.png" /></a></span></p> <ul> <li><strong>center</strong> : with the central point, it is possible to drag this point with the mouse to move it&nbsp;around</li> <li><strong>radius</strong> : the radius describes the area of the applied effect, that is the distortion occurs only inside this radius. It is possible to increase the radius using the small dot on the&nbsp;circle.</li> <li><strong>strength vector</strong> : the vector starting from the center describes the direction of the distortion and the strength. The strength depends on the length of the&nbsp;vector.</li> </ul> <p>The point, line and curve tools are all based on nodes as described above. That is, a line is a set of nodes linked together for&nbsp;example.</p> <h1>Point&nbsp;Tool</h1> <p>A point is formed by a single node. In a point the strength vector has three different modes which are toggled using ctrl-click over the strength vector&nbsp;itself.</p> <ul> <li><strong>linear</strong> : the linear mode make the distortion linear inside the circle. Starting from the opposite side of the strength vector and following the strength vector direction. This is the default&nbsp;mode.</li> <li><strong>radial growing</strong> : in this mode the strength vector effect is radial, starting with a strength of 0% in the center and growing when going away from the&nbsp;center.</li> <li> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-4.png"><img alt="liquify-4" src="liquify-4_thumb.png" /></a></span></p> <p><strong>radial shrinking</strong> : in this mode the strength vector effect is radial, starting with a strength of 100% in the center and shrinking when going away from the&nbsp;center.</p> </li> </ul> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-3.png"><img alt="liquify-3" src="liquify-3_thumb.png" /></a></span></p> <p>Furthermore it is possible to set the feathered effect by clicking on the center of the&nbsp;circle.</p> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-2.png"><img alt="liquify-2" src="liquify-2_thumb.png" /></a></span></p> <ul> <li><strong>default</strong> : linear from the center to the&nbsp;radius</li> <li><strong>feathered</strong> : two control circles are displayed and can be used to feather the strength of the&nbsp;effect.</li> </ul> <h1>Line&nbsp;Tool</h1> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-5.png"><img alt="liquify-5" src="liquify-5_thumb.png" /></a></span></p> <p>A line is a set of point. The points are linked together, the effect is interpolated by a set of strength&nbsp;vectors.</p> <p>It is possible to add a control point on a line by ctrl-click on a&nbsp;segment.</p> <p>A right-click on a segment will remove the shape&nbsp;completely.</p> <p>A ctrl-alt-click on a segment will change it to a curve&nbsp;segment.</p> <h1>Curve&nbsp;Tool</h1> <p><span><a href="https://www.darktable.org/2016/04/liquify-liquify/liquify-6.png"><img alt="liquify-6" src="liquify-6_thumb.png" /></a></span></p> <p>A curve is a set of point. The points are linked together, the effect is interpolated as a bezier curve by a set of strength&nbsp;vectors.</p> <p>It is possible to add a control point on a line by ctrl-click on a&nbsp;segment.</p> <p>A right-click on a segment will remove the shape&nbsp;completely.</p> <p>A ctrl-alt-click on a segment will change it to a line&nbsp;segment.</p> <p>It is possible to change the way the points of the curve are linked together by using ctrl-click on the center. There is four modes which correspond to different way of handling the two bezier curve&nbsp;points:</p> <ul> <li><strong>autosmooth</strong> : control points are always giving a smooth curve, this is the default mode in which the control points are not displayed (as automatically&nbsp;computed).</li> <li><strong>cups</strong> : control points can be moved&nbsp;independently.</li> <li><strong>smooth</strong> : control points are always giving a smooth&nbsp;curve</li> <li><strong>symmetrical</strong> : control points are always moved&nbsp;together</li> </ul> <p>Finally, note that at any moment it is possible to right-click on the image to show or hide the liquify&nbsp;controls.</p> <p>We feel that such tool will be quite handy in Studio photography, but not&nbsp;only.</p><img src="https://www.darktable.org/2016/04/liquify-liquify/liquify-1.png" class="hidden-lede">pascalobrySun, 03 Apr 2016 08:09:43 +0000tag:www.darktable.org,2016-04-03:2016/04/liquify-liquify/blogupcoming featureRunning on non-x86 platformshttps://www.darktable.org/2016/04/running-on-non-x86-platforms/<p>For many years darktable would only run on x86 CPUs that also support at least <span class="caps">SSE2</span>. While that is nowadays almost everything looking like a <span class="caps">PC</span> it&#8217;s still limiting. Consequently Roman sat down and started work on dropping that hard requirement. While his work isn&#8217;t complete yet it&#8217;s definitely becoming useful. So with a little tweaking you can for example use the development versions on an <span class="caps">ARM</span>, like the Raspberry Pi. Together with a touchscreen that has the potential to make a fun little&nbsp;package.</p> <p>At the moment this is still in heavy development and you have to compile darktable yourself, but we expect it to be ready for the next feature&nbsp;release.</p> <p>If you want to meet us and see stuff like this live you should come to <a href="https://libregraphicsmeeting.org/2016/"><span class="caps">LGM</span> in London</a>. If you can&#8217;t go we&#8217;d like to ask you for a little donation to the <a href="https://pledgie.com/campaigns/30905">Pixls.us Pledgie</a>. The money collected will be used to pay our stay in&nbsp;London.</p><img src="https://www.darktable.org/2016/04/running-on-non-x86-platforms/coin_wide.jpg" class="hidden-lede">houzFri, 01 Apr 2016 18:27:28 +0000tag:www.darktable.org,2016-04-01:2016/04/running-on-non-x86-platforms/blogdevelopmentupcoming featuredarktable 2.0.3 releasedhttps://www.darktable.org/2016/03/darktable-2-0-3-released/<p>we&#8217;re proud to announce the third bugfix release for the 2.0 series of darktable,&nbsp;2.0.3!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.3">https://github.com/darktable-org/darktable/releases/tag/release-2.0.3</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.3.tar.xz a03e5c1d786799e63c8b4a9f32e9e6f27b3a7d7ab0bbbb7753a516e630490345 darktable-2.0.3.tar.xz $ sha256sum darktable-2.0.3.dmg 0568d2d2551cfd2b8a55e8ff111857588f9fb986236bc11bff869ecec68ddebd darktable-2.0.3.dmg </pre></div> <p>and the changelog as compared to 2.0.2 can be found&nbsp;below.</p> <h2>Bugfixes</h2> <ul> <li>Actually allow printing with ctrl-p shortcut as advertised in the&nbsp;tooltip</li> <li>Fix scrolling of the histogram to change the&nbsp;exposure</li> <li>Fix the restricted histogram when color picking an&nbsp;area</li> <li>Fix a bug in color&nbsp;reconstruction</li> <li>Fix an OpenCL bug in&nbsp;tonecurve</li> <li>Fix a small memory&nbsp;leak</li> <li>Better error messages in&nbsp;darktable-cli</li> <li>Fix params introspection for unsigned&nbsp;types</li> <li>Only depend on glib&nbsp;2.32</li> </ul> <h2>Base&nbsp;Support</h2> <ul> <li>Fujifilm&nbsp;X70</li> <li>Olympus <span class="caps">PEN</span>-F</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span>&nbsp;(1:1)</li> </ul> <h2>White Balance&nbsp;Presets</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;1200D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X70</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T5</li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span></li> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span> Kiss&nbsp;X8i</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6i</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;8000D</li> <li>Canon <span class="caps">EOS</span> Rebel&nbsp;T6s</li> <li>Fujifilm&nbsp;X-Pro2</li> <li>Fujifilm&nbsp;X20</li> <li>Fujifilm&nbsp;X70</li> <li>Olympus <span class="caps">PEN</span>-F</li> </ul> <h2>Noise&nbsp;Profiles</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">5DS</span>&nbsp;R</li> <li>Fujifilm&nbsp;X20</li> <li>Olympus E-<span class="caps">PL6</span></li> </ul> <h2>Translation&nbsp;updates</h2> <ul> <li>Danish</li> <li>German</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2016/03/darktable-2-0-3-released/lake_wide.jpg" class="hidden-lede">houzTue, 29 Mar 2016 12:17:20 +0000tag:www.darktable.org,2016-03-29:2016/03/darktable-2-0-3-released/announcementdarktable releaseA new module for automatic perspective correctionhttps://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/<p><strong>Since many years darktable offers a versatile tool for manual perspective correction in the crop <span class="amp">&amp;</span> rotate module [1]. Although the principle is simple and straightforward, there are cases where it can prove difficult to get a convincing correction, especially if no distinct vertical or horizontal features can be spotted in the image. To overcome these limitations a new “perspective correction” module has just been added that is able to automatically correct for converging lines. The underlying mechanism is inspired by the program ShiftN developed by Marcus Hebel and published under the <span class="caps">GPL</span>&nbsp;[2].</strong></p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_1.jpg"><img alt="The GUI of the perspective correction module." src="ashift_1_thumb.jpg" /></a></span> <figcaption>The <span class="caps">GUI</span> of the perspective correction module.</figcaption></figure> <h2>Background</h2> <p>Perspective distortions are a natural effect when projecting a three dimensional scene onto a two dimensional plane photographically. As such they are not to be confused with lens errors which can be corrected in darktable’s lens correction module [3]. Perspective distortions cause objects close to the viewer to appear much larger than objects further away in the background. The closer you get to a subject the stronger the effect. As lenses with a short focal length force you to get closer to your subject, photos taken with wide angle lenses are more prone to show strong perspective distortions than telephoto lenses. Once again this is not an effect of the lens but an effect of the perspective (distance) of the viewer or camera to the&nbsp;scene.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_7.jpg"><img alt="Two lions and a castle. Taken with 14mm (APS-C) the two sculptures cover different areas in the image although they have the same size" src="ashift_7_thumb.jpg" /></a></span> <figcaption>Two lions and a castle. Taken with 14mm (<span class="caps">APS</span>-C) the two sculptures cover different areas in the image although they have the same size. Note the converging lines of the vertical architectural features.</figcaption></figure> <p>Converging lines are a special case of perspective distortions frequently seen in architecture photographs. Parallel lines are an essential feature of most types of architecture; when photographed at an angle parallel lines get transformed into converging lines that meet at some vantage point within or outside the image&nbsp;frame.</p> <blockquote> <p>Interestingly, viewers are mostly disturbed if they see a photo with converging lines that they know or assume to be vertical in reality. The reason seems to be that our brain is trained to unconsciously correct for vertical lines in the picture delivered by our eyes&nbsp;– vertical lines appear still vertical to us although the eye sees an image with converging lines as a camera would do. When watching the same scene in a photographic image the viewing situation is different and our brain does not apply its corrections. Now we clearly can identify the lines as converging and that conflicts to what we are used to see&nbsp;naturally.</p> </blockquote> <p>There are a few ways to overcome this effect when taking a photo. One way is keeping the camera&#8217;s optical axis pointing to the horizon so that vertical lines run parallel to the sensor plane. However, this will bring a lot of potentially boring foreground into the lower part of the image which typically needs to be cropped afterward in image processing. Alternatively, one could use a shift lens [4] which gives more control on what part of the scene gets onto the camera sensor. Shift lenses tend to be heavy and expensive, so not everybody keeps them in his or her camera bag. That’s where perspective corrections in image processing come into&nbsp;play.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_8.jpg"><img alt="To illustrate the workflow of this module we take this example image with converging lines and a deliberately skewed horizon." src="ashift_8_thumb.jpg" /></a></span> <figcaption>To illustrate the workflow of this module we take this example image with converging lines and a deliberately skewed horizon.</figcaption></figure> <h2>Working principle of the perspective correction&nbsp;module</h2> <p>Converging lines can be corrected by warping the image in such a way that the lines in question get parallel. The perspective correction module in darktable simulates the effects of a shift lens and&nbsp;– in its simplest form&nbsp;– only needs a single lens shift parameter to correct converging lines along one direction. Corrections can be done in vertical and horizontal direction, either separately or in&nbsp;combination.</p> <p>Images quite often come with a tilted horizon. As we want lines not only to be parallel among themselves but also to align with the image frame the module additionally applies a rotation angle which is controlled by a further&nbsp;parameter.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_1_1.jpg"><img alt="The three basic adjustment parameters are controlled with sliders in the upper part of the module's GUI." src="ashift_1_1_thumb.jpg" /></a></span> <figcaption>The three basic adjustment parameters are controlled with sliders in the upper part of the module&#8217;s <span class="caps">GUI</span>.</figcaption></figure> <h2>Automatic&nbsp;corrections</h2> <p>Although a manual adjustment of the parameters is possible users will typically want to rely on the auto-correction feature of this&nbsp;module.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_1_2.jpg"><img alt="The icons presented in the lower part of the module's GUI trigger structure detection and automatic perspective correction." src="ashift_1_2_thumb.jpg" /></a></span> <figcaption>The icons presented in the lower part of the module&#8217;s <span class="caps">GUI</span> trigger structure detection and automatic perspective correction.</figcaption></figure> <p>The principle way of working is as follows. darktable analyzes the image for structural features consisting of line segments. These line segments are evaluated and ranked to identify those lines which form a set of converging lines meeting in a vantage point. Please note that by far not all line segments in an image represent suited vertical or horizontal lines of the scene&nbsp;– it is crucial that unsuited lines are identified and eliminated from the set. Based on the remaining lines an automatic fitting procedure is then started that tries to identify the best values of the module parameters (rotation angle and lens shift in one direction, or rotation angle and lens shift in both directions) to get the image straight, i.e. adjust the converging lines to run parallel and/or horizontal to the image&nbsp;frame.</p> <p><span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_2.jpg"><img alt="ashift_2" src="ashift_2_thumb.jpg" /></a></span></p> <p>Pressing the “get structure” icon causes darktable to analyze the image for structural elements. Line segments are detected, evaluated and ranked. The line segments are then displayed as overlays on the image base. A color code tells you what type of line darktable has&nbsp;found:</p> <ul> <li><strong><span style="color: green">green</span></strong> lines that are selected as relevant vertical converging&nbsp;lines</li> <li><strong><span style="color: red">red</span></strong> lines that are vertical but are not part of the set of converging&nbsp;lines</li> <li><strong><span style="color: blue">blue</span></strong> lines that are selected as relevant horizontal converging&nbsp;lines</li> <li><strong><span style="color: yellow">yellow</span></strong> lines that are horizontal but are not part of the set of converging&nbsp;lines</li> <li><strong><span style="color: gray">grey</span></strong> lines that are detected but not of interest to this&nbsp;module</li> </ul> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_9.jpg"><img alt="Structure detection with additional edge enhancement." src="ashift_9_thumb.jpg" /></a></span> <figcaption>Structure detection with additional edge enhancement.</figcaption></figure> <p>Lines marked in green and blue are taken for the further processing&nbsp;steps.</p> <p>darktable is quite aggressive when it comes to marking lines in red or yellow, thus eliminating them from the set of selected lines. Reason is that we need to kick out unsuited lines as far as possible so that they do not negatively influence the following parameter fitting. This outlier elimination involves a statistical process with random sampling. As a consequence each time you press the “get structure” button the color pattern of the lines will look a bit different and some lines will get deselected that are obviously “good” ones. This is of no concern as long as all really unsuited lines are marked in red and yellow and as long as enough suited green and/or blue lines&nbsp;remain.</p> <p>If you disagree with darktable&#8217;s decision you can always manually change it. Left-clicking on a line selects it (turns the color to green or blue) while right-clicking deselects it (turns the color to red or yellow). Keeping the mouse button pressed allows for a sweeping action to select/deselect multiple lines. Manual interaction is typically only needed if the line structure is distributed in a strongly inhomogeneous manner, e.g. all selected lines are on the right hand side of the image, none on the left. In this case you might need to manually select at least some lines on the left to allow for a successful automatic&nbsp;correction.</p> <p>As this module needs to find straight lines, it is generally a good idea to have the image corrected for lens artifacts before line detection. You should therefore activate the lens correction module [3] before this one or click on the “get structure” icon again after having activated lens&nbsp;correction.</p> <p>If your image exhibits a rather low contrast with few defined features the overall number of detected lines might be low. In this case you may try to ctrl-click on the “get structure” icon which activates an additional edge enhancing step before line detection. This leads to significantly more lines being&nbsp;detected.</p> <p><span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_3.jpg"><img alt="ashift_3" src="ashift_3_thumb.jpg" /></a></span></p> <p>Pressing the “clear structure” icon discards all collected structural&nbsp;information.</p> <p><span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_4.jpg"><img alt="ashift_4" src="ashift_4_thumb.jpg" /></a></span></p> <p>Pressing the “display structure” icon temporarily blocks the overlay display of lines so you have a better view of your image. Press the icon again to re-enable overlay&nbsp;display.</p> <p><span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_5.jpg"><img alt="ashift_5" src="ashift_5_thumb.jpg" /></a></span></p> <p>Pressing one of the “automatic fit” icons starts an optimization process which tries to detect the best fitting parameters for perspective correction of the&nbsp;image.</p> <p>The leftmost icon performs an optimization of rotation angle and vertical lens shift based on selected vertical lines (the green&nbsp;ones).</p> <p>The middle icon performs an optimization of rotation angle and horizontal lens shift based on selected horizontal lines (the blue&nbsp;ones).</p> <p>The rightmost icon performs an optimization of all three parameters based on selected vertical as well as horizontal lines (the green and the blue ones). This typically leads to a compromise between the two other&nbsp;options.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_10.jpg"><img alt="The example image after fitting for all three correction parameters by clicking on the rightmost icon." src="ashift_10_thumb.jpg" /></a></span> <figcaption>The example image after fitting for all three correction parameters by clicking on the rightmost icon.</figcaption></figure> <p>In some cases you may want to only fit the rotation angle parameter while keeping the lens shift parameter(s) constant. You can do so by ctrl-clicking on one of the icons. The structural data used for fitting are the same as described above. Likewise you may shift-click on the icons to only fit the lens shift parameter(s) while keeping the rotation angle&nbsp;constant.</p> <p>As a general rule all parameters that are not affected by the respective fitting step are kept&nbsp;constant.</p> <blockquote> <p>One remark about correcting horizontal perspective distortions. Due to our way of living in a “mostly planar world” horizontal perspective distortions tend to be much stronger than vertical distortions in many images without viewers taking much notice. We are used to see converging horizontal lines, e.g. when looking along a street, and in fact we take advantage of them to estimate relative distances. However, that also means that horizontal lines tend to converge so strongly in a photographic image that it is out of the scope of this module to correct them. The horizontal vantage point may even lie within the image frame, giving a so called central perspective. For obvious reasons there is no way to correct for this image&nbsp;characteristic.</p> </blockquote> <h2>Further&nbsp;options</h2> <p>This module offers a number of further useful features which are controlled by a set of comboboxes in the middle part of the <span class="caps">GUI</span>.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_1_3.jpg"><img alt="ashift_1_3" src="ashift_1_3_thumb.jpg" /></a></span> <figcaption>Further options of the perspective correction module.</figcaption></figure> <p>The “guides” combobox lets you activate a set of horizontal and vertical guidelines laid over the image. You may use them to judge the quality of the automatic correction or let them assist you when doing manual&nbsp;adjustments.</p> <p>The “automatic cropping” feature does what the name implies. When working with this module you will see immediately that any correction leads to more or less pronounced black corners around the warped image. You need to crop the image in order to get rid of the corners. This can be done either in the crop <span class="amp">&amp;</span> rotate module [1], or by activating the “automatic cropping” combobox. “Largest area” finds the largest rectangular area which just fits into the warped image, while “original format” does the same with the additional prerequisite of keeping the aspect ratio of the original&nbsp;image.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_11.jpg"><img alt="Activate guide lines and automatic cropping for &quot;largest area&quot;." src="ashift_11_thumb.jpg" /></a></span> <figcaption>Activate guide lines and automatic cropping for &#8220;largest area&#8221;.</figcaption></figure> <p>Please note that you always see the full image as soon as the “perspective correction” module is in focus; cropping is not applied in order to grant a complete overview of the image. Automatic cropping, if activated, displays a frame around the cropping area that it has&nbsp;selected.</p> <p>The example image above illustrates that you may lose a quite significant part of your image border when doing perspective corrections. You should take this into account when taking the shot and leave sufficient room around your main&nbsp;subject.</p> <p>Of course the automatic cropping feature does not have any knowledge of the contents of your image&nbsp;– we recommend to use it in simple cases. Frequently you will want to have full artistic control on what parts of the image to crop; this power is only offered by the crop <span class="amp">&amp;</span> rotate module [1]. We suggest to use either the automatic or the manual cropping option; combining both may lead to surprising results as soon as you change any&nbsp;parameters.</p> <p>The “lens model” option controls some details of the underlying warping algorithm, namely the level of image compression perpendicular to the lens shift&nbsp;direction.</p> <p><span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_6.jpg"><img alt="ashift_6" src="ashift_6_thumb.jpg" /></a></span></p> <p>The default setting is “generic” which gives a realistic results in most cases. For images taken with a long focal length you may want to switch to “lens specific” which opens a number of sliders that let you define the focal length and the crop factor of your camera. You may also freely adjust the aspect ratio of the resulting image with the “aspect adjust”&nbsp;slider.</p> <figure role="group"> <span><a href="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_12.jpg"><img alt="The final image after perspective correction." src="ashift_12_thumb.jpg" /></a></span> <figcaption>The final image after perspective correction.</figcaption></figure> <h2>Availability</h2> <p>The new module has recently been added to the development branch of darktable [5]. It can be found in the “correction group” after activating it in “more modules”. Users of the unstable branch are invited to test it and give feedback. The usual disclaimer applies: as this module is still in the development phase we might change its behavior without further notice, don’t use it for productive work unless you know what you are doing. Users of the stable branch will see the final “perspective correction” module as part of darktable&#8217;s next feature&nbsp;release.</p> <h2>[ Update 18.03.16&nbsp;]</h2> <p>An updated version of this module has just been merged into the master branch. There is now a fourth adjustment parameter &#8220;shear&#8221; that warps the image along one of the diagonals. Together with the three other parameters this now allows to fully correct an image in almost all reasonable cases. Only perspective distortions so extreme, that they would lead to very poor image quality if corrected, are out of&nbsp;scope.</p> <p>Clicking on the “fit both” icon (the rightmost in the automatic fit row) now finds optimal values for all four parameters. You get the former behavior of fitting only rotation and lens shift by ctrl-shift-clicking on that same&nbsp;icon.</p> <p>A <span class="caps">GUI</span> enhancement suggested by Aldric has been added which allows to mass-select or deselect lines (changing their color from green/blue to red/yellow, or vice versa). You press the shift button  and then draw a rectangular area on the image base. All lines within that area are being selected or deselected on button release. The left mouse button selects, the right mouse button&nbsp;deselects.</p> <ul> <li>[1] <a href="/usermanual/en/modules.html#basic_group">Usermanual for basic&nbsp;modules</a></li> <li>[2] <a href="http://www.shiftn.de/">http://www.shiftn.de/</a></li> <li>[3] <a href="/usermanual/en/correction_group.html">Usermanual for correction&nbsp;modules</a></li> <li>[4] <a href="https://en.wikipedia.org/wiki/Perspective_control_lens">https://en.wikipedia.org/wiki/Perspective_control_lens</a></li> <li>[5] <a href="https://github.com/darktable-org/darktable">https://github.com/darktable-org/darktable</a></li> </ul><img src="https://www.darktable.org/2016/03/a-new-module-for-automatic-perspective-correction/ashift_0_wide.jpg" class="hidden-lede">upegelowThu, 10 Mar 2016 17:48:29 +0000tag:www.darktable.org,2016-03-10:2016/03/a-new-module-for-automatic-perspective-correction/blogdevelopmentupcoming featuredarktablenew featureperspective correctiondarktable 2.0.2 releasedhttps://www.darktable.org/2016/03/darktable-2-0-2-released/<p>we&#8217;re proud to announce the second bugfix release for the 2.0 series of darktable,&nbsp;2.0.2!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.2">https://github.com/darktable-org/darktable/releases/tag/release-2.0.2</a>.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksum&nbsp;is:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.2.tar.xz 75ea6354eb08aab8f25315a2de14c68dc6aad6ee5992061beea624afc7912400 darktable-2.0.2.tar.xz $ sha256sum darktable-2.0.2.dmg 33789b5a791770f9308cc653aaf50b0e9c054a0fbdd5e4a1d2e48e2bf6553f95 darktable-2.0.2.dmg </pre></div> <p>and the changelog as compared to 2.0.1 can be found&nbsp;below.</p> <h2>General</h2> <ul> <li>Require glib of at least version&nbsp;2.40</li> </ul> <h2>New&nbsp;features</h2> <ul> <li>Add support for DNGs from&nbsp;x3f_extract</li> <li>Support <span class="caps">XMP</span> files from Ramperpro timelapse controllers from&nbsp;ElysiaVisuals</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix some problems with sluggish <span class="caps">GUI</span> when Lua is compiled&nbsp;in</li> <li>Some High <span class="caps">DPI</span>&nbsp;fixes</li> <li>Small theming&nbsp;fixes</li> <li>Fix some strings being too long in the <span class="caps">GUI</span>, especially when using localized&nbsp;versions</li> <li>Fix a potential crash with malformed <span class="caps">GPX</span>&nbsp;files</li> <li>Fix wrong zoom level of the map when searching for a&nbsp;location</li> <li>Put <span class="caps">XMP</span> metadata into the right Exif&nbsp;fields</li> <li>Fix a crash in&nbsp;masks.</li> <li>Fix a crash in&nbsp;demosaicing</li> <li>Fix Markesteijn&nbsp;demosaicing</li> <li>Fix a crash when moving the mouse while going to darkroom when crop&amp;rotate is&nbsp;active</li> <li>Fix discrepancy between <span class="caps">CPU</span> and OpenCL codepath in&nbsp;invert</li> <li>Fix some crashes with certain <span class="caps">TIFF</span>&nbsp;files</li> <li>Fix build with <span class="caps">GCC6</span></li> <li>Fix build with osmgpsmap older than&nbsp;1.1.0</li> <li>Fix compilation when there are spaces in the path&nbsp;names</li> </ul> <h2>Camera&nbsp;support</h2> <ul> <li>Fujifilm&nbsp;X-Pro2</li> </ul> <h2>White balance&nbsp;presets</h2> <ul> <li>Pentax&nbsp;K-S2</li> </ul> <h2>Noise&nbsp;profiles</h2> <ul> <li>Fujifilm&nbsp;X-T10</li> <li>Pentax&nbsp;K-S2</li> </ul> <h2>Translations</h2> <ul> <li> <p>new</p> <ul> <li>Hebrew</li> </ul> </li> <li> <p>updated</p> <ul> <li>German</li> <li>Slovak</li> <li>Swedish</li> </ul> </li> </ul><img src="https://www.darktable.org/2016/03/darktable-2-0-2-released/honda_wide.jpg" class="hidden-lede">houzMon, 07 Mar 2016 13:02:15 +0000tag:www.darktable.org,2016-03-07:2016/03/darktable-2-0-2-released/announcementdarktable releasedarktable 2.0.1 releasedhttps://www.darktable.org/2016/02/darktable-2-0-1-released/<p>we&#8217;re proud to announce the first bugfix release for the 2.0 series of darktable,&nbsp;2.0.1!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.1">https://github.com/darktable-org/darktable/releases/tag/release-2.0.1</a></p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.1.tar.xz 4d0e76eb42b95418ab59c17bff8aac660f5348b082aabfb3113607c67e87830b darktable-2.0.1.tar.xz $ sha256sum darktable-2.0.1.dmg 580d1feb356e05d206eb74d7c134f0ffca4202943388147385c5b8466fc1eada darktable-2.0.1.dmg </pre></div> <p>and the changelog as compared to 2.0.0 can be found&nbsp;below.</p> <h2>New&nbsp;features:</h2> <ul> <li>add export variables for Creator, Publisher and Rights from&nbsp;metadata</li> <li>add support for key accels for spot removal&nbsp;iop</li> <li>add some more info to <code>--version</code></li> <li>add collection sorting by group_id to keep grouped images&nbsp;together</li> <li>add <code>$(IMAGE.BASENAME)</code> to&nbsp;watermark</li> <li><span class="caps">OSX</span> packaging: add&nbsp;darktable-cltest</li> <li><span class="caps">OSX</span> packaging: add&nbsp;darktable-generate-cache</li> </ul> <h2>Bugfixes:</h2> <ul> <li>make sure <span class="caps">GTK</span> prefers our <span class="caps">CSS</span> over&nbsp;system&#8217;s</li> <li>make selected label&#8217;s background color&nbsp;visible</li> <li>make ctrl-t completion popup&nbsp;nicer</li> <li>fixed folder list scrolling to the top on&nbsp;select</li> <li>scale waveform histogram to hidpi&nbsp;screens</li> <li>really hide all panels in&nbsp;slideshow</li> <li>add filename to missing white balance&nbsp;message</li> <li>fix wrong tooltip in print&nbsp;scale</li> <li>changing mask no longer invalidates the filmstrip thumb, making it&nbsp;faster</li> <li>fix calculated image count in a&nbsp;collection</li> <li>don&#8217;t allow too small&nbsp;sidepanels</li> <li>fixes white balance sliders for some&nbsp;cameras</li> <li>fix some&nbsp;memleaks</li> <li>code hardening in color&nbsp;reconstruction</li> <li>validate noiseprofiles.json on&nbsp;startup</li> <li>no longer lose old export&nbsp;presets</li> <li>fix some crash with wrong&nbsp;history_end</li> <li>don&#8217;t load images from cameras with <span class="caps">CYGM</span>/<span class="caps">RGBE</span> <span class="caps">CFA</span> for&nbsp;now</li> <li>some fixes in&nbsp;demosaicing</li> <li>fix red/blue interpolation for&nbsp;XTrans</li> <li>fix profiled denoise on&nbsp;OpenCL</li> <li>use sRGB when output/softproof profile is&nbsp;missing</li> <li>fix loading of .hdr&nbsp;files</li> <li>default to libsecret instead of gnome keyring which is no longer&nbsp;supported</li> <li>fix a bug in mask border self&nbsp;intersections</li> <li>don&#8217;t allow empty strings as mask shape&nbsp;names</li> <li>fix a crash in&nbsp;masks</li> <li>fix an OpenCL&nbsp;crash</li> <li>eliminate deprecated OpenCL compiler&nbsp;options</li> <li>update appdata file to version&nbsp;0.6</li> <li>allow finding Saxon on Fedora&nbsp;23</li> </ul> <h2>Camera&nbsp;support:</h2> <ul> <li>Fujifilm <span class="caps">XQ2</span> raw&nbsp;support</li> <li>support all Panasonic <span class="caps">FZ150</span> crop&nbsp;modes</li> <li>basic support for Nikon 1&nbsp;V3</li> <li>add defs for Canon <span class="caps">CHDK</span> <span class="caps">DNG</span> cameras to make noise profiles&nbsp;work</li> </ul> <h2>White balance&nbsp;presets:</h2> <ul> <li>add Nikon&nbsp;D5500</li> <li>add Nikon 1&nbsp;V3</li> <li>add missing Nikon D810&nbsp;presets</li> <li>add Fuji <span class="caps">X100T</span></li> </ul> <h2>Basecurves:</h2> <ul> <li>copy <span class="caps">X100S</span> to <span class="caps">X100T</span></li> </ul> <h2>Noise&nbsp;profiles:</h2> <ul> <li>fix typo in D5200 profiles to make them work&nbsp;again</li> <li>add Panasonic <span class="caps">FZ1000</span></li> <li>add Nikon&nbsp;D5500</li> <li>add Ricoh <span class="caps">GR</span></li> <li>add Nikon 1&nbsp;V3</li> <li>add Canon PowerShot&nbsp;S100</li> <li>copy Fuji <span class="caps">X100S</span> to <span class="caps">X100T</span></li> </ul> <h2>Translations:</h2> <ul> <li>add&nbsp;Hungarian</li> <li>update&nbsp;German</li> <li>update&nbsp;Swedish</li> <li>update&nbsp;Slovak</li> <li>update&nbsp;Spanish</li> <li>update&nbsp;Dutch</li> <li>update&nbsp;French</li> </ul><img src="https://www.darktable.org/2016/02/darktable-2-0-1-released/race_cars_wide.jpg" class="hidden-lede">houzWed, 03 Feb 2016 20:45:27 +0000tag:www.darktable.org,2016-02-03:2016/02/darktable-2-0-1-released/announcementdarktable releasedarktable 2.0 releasedhttps://www.darktable.org/2015/12/darktable-2-0-released/<p>we&#8217;re proud to finally announce the new feature release of darktable,&nbsp;2.0!</p> <p>the github release is here: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0.0">https://github.com/darktable-org/darktable/releases/tag/release-2.0.0</a></p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our tar.xz. the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0.0.tar.xz d4f2f525bbbb1355bc3470e74cc158d79d7e236f3925928f67a88461f1df7cb1  darktable-2.0.0.tar.xz $ sha256sum darktable-2.0.0.dmg 1019646522c3fde81ce0de905220a88b506c7cec37afe010af7d458980dd08bd  darktable-2.0.0.dmg </pre></div> <p>and the changelog as compared to the 1.6.x series can be found&nbsp;below.</p> <p>when updating from the currently stable 1.6.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.0 to 1.6.x any&nbsp;more.</p> <p>happy 2.0 everyone&nbsp;:)</p> <p>Robert Hutton has done a video covering the new features and other changes between darktable 1.6 and&nbsp;2.0</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/VJbJ0btlui0?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <p>Gource visualization of git log from 1.6.0 to right before&nbsp;2.0</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/CUiSSfbMwb8?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <p>gui:</p> <ul> <li>darktable has been ported to&nbsp;gtk-3.0</li> <li>the viewport in darkroom mode is now dynamically sized, you specify the border&nbsp;width</li> <li>side panels now default to a width of 350px in dt 2.0 instead of 300px in dt&nbsp;1.6</li> <li>further hidpi&nbsp;enhancements</li> <li>navigating lighttable with arrow keys and&nbsp;space/enter</li> <li>brush size/hardness/opacity have key&nbsp;accels</li> <li>allow adding tone- and basecurve nodes with&nbsp;ctrl-click</li> <li>the facebook login procedure is a little different&nbsp;now</li> <li>image information now supports gps&nbsp;altitude</li> </ul> <p>features:</p> <ul> <li>new print&nbsp;mode</li> <li>reworked screen color management (softproof, gamut check&nbsp;etc.)</li> <li>delete/trash&nbsp;feature</li> <li>pdf&nbsp;export</li> <li>export can&nbsp;upscale</li> <li>new &#8220;mode&#8221; parameter in the export panel to fine tune application of styles upon&nbsp;export</li> </ul> <p>core&nbsp;improvements:</p> <ul> <li>new thumbnail cache replaces mipmap cache (much improved speed, stability and seamless support for even up to 4K/5K&nbsp;screens)</li> <li>all thumbnails are now properly fully&nbsp;color-managed</li> <li>it is now possible to generate thumbnails for all images in the library using new darktable-generate-cache&nbsp;tool</li> <li>we no longer drop history entries above the selected one when leaving darkroom mode or switching&nbsp;images</li> <li>high quality export now downsamples before watermark and framing to guarantee consistent&nbsp;results</li> <li>optimizations to loading jpeg&#8217;s when using libjpeg-turbo with its custom&nbsp;features</li> <li>asynchronous camera and printer detection, prevents deadlocks in some&nbsp;cases</li> <li>noiseprofiles are in external <span class="caps">JSON</span> file&nbsp;now</li> <li>aspect ratios for crop&amp;rotate can be added to config&nbsp;file</li> </ul> <p>image&nbsp;operations:</p> <ul> <li>color reconstruction&nbsp;module</li> <li>magic lantern-style deflicker was added to the exposure module (extremely useful for&nbsp;timelapses)</li> <li>text&nbsp;watermarks</li> <li>shadows&amp;highlights: add option for white point&nbsp;adjustment</li> <li>more proper Kelvin temperature, fine-tuning preset interpolation in white balance&nbsp;iop</li> <li>monochrome raw demosaicing (for cameras with color filter array physically&nbsp;removed)</li> <li>raw black/white point&nbsp;module</li> </ul> <p>packaging:</p> <ul> <li>removed dependency on&nbsp;libraw</li> <li>removed dependency on libsquish (solves patent issues as a side&nbsp;effect)</li> <li>unbundled pugixml, osm-gps-map and&nbsp;colord-gtk</li> </ul> <p>generic:</p> <ul> <li>32-bit support is soft-deprecated due to limited virtual address&nbsp;space</li> <li>support for building with gcc earlier than 4.8 is&nbsp;soft-deprecated</li> <li>numerous memory leaks were&nbsp;exterminated</li> <li>overall stability&nbsp;enhancements</li> </ul> <p>scripting:</p> <ul> <li>lua scripts can now add <span class="caps">UI</span> elements to the lighttable view (buttons, sliders&nbsp;etc&#8230;)</li> <li>a new repository for external lua scripts was started:&nbsp;https://github.com/darktable-org/lua-scripts</li> <li>it is now possible to edit the collection filters via&nbsp;lua</li> <li>it is now possible to add new cropping guides via&nbsp;lua</li> <li>it is now possible to run background tasks in&nbsp;lua</li> <li>a lua event is generated when the mouse under the cursor&nbsp;changes</li> </ul> <p>User manual has been updated, and will be released shortly&nbsp;after.</p> <p>New camera support, compared to&nbsp;1.6.9:</p> <p>Base&nbsp;Support</p> <ul> <li>Canon PowerShot G5&nbsp;X</li> <li>Olympus <span class="caps">SP320</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ150</span>&nbsp;(3:2)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ70</span> (1:1, 3:2,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">FZ72</span> (1:1, 3:2,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span> (1:1, 3:2,&nbsp;16:9)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX8</span>&nbsp;(4:3)</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LF1</span> (3:2, 16:9,&nbsp;1:1)</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M2</span></li> </ul> <p>White Balance&nbsp;Presets</p> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;M3</li> <li>Canon <span class="caps">EOS</span>-1D Mark <span class="caps">III</span></li> <li>Canon <span class="caps">EOS</span>-1Ds Mark <span class="caps">III</span></li> <li>Canon PowerShot G1&nbsp;X</li> <li>Canon PowerShot G1 X Mark <span class="caps">II</span></li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot G5&nbsp;X</li> <li>Canon PowerShot&nbsp;S110</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX8</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LF1</span></li> <li>Pentax *ist <span class="caps">DL2</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX1</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M2</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX1R</span></li> <li>Sony <span class="caps">DSLR</span>-A500</li> <li>Sony <span class="caps">DSLR</span>-A580</li> <li>Sony <span class="caps">ILCE</span>-3000</li> <li>Sony <span class="caps">ILCE</span>-5000</li> <li>Sony <span class="caps">ILCE</span>-5100</li> <li>Sony <span class="caps">ILCE</span>-6000</li> <li>Sony <span class="caps">ILCE</span>-7S</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7SM2</span></li> <li>Sony <span class="caps">NEX</span>-3N</li> <li>Sony <span class="caps">NEX</span>-5T</li> <li>Sony <span class="caps">NEX</span>-F3</li> <li>Sony <span class="caps">SLT</span>-A33</li> <li>Sony <span class="caps">SLT</span>-A35</li> </ul> <p>Noise&nbsp;Profiles</p> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;M3</li> <li>Fujifilm&nbsp;X-E1</li> <li>Fujifilm&nbsp;X30</li> <li>Nikon Coolpix&nbsp;P7700</li> <li>Olympus E-M10 Mark <span class="caps">II</span></li> <li>Olympus E-M5 Mark <span class="caps">II</span></li> <li>Olympus E-<span class="caps">PL3</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX8</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LF1</span></li> <li>Pentax&nbsp;K-50</li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX1</span></li> <li>Sony <span class="caps">DSC</span>-<span class="caps">RX10M2</span></li> <li>Sony <span class="caps">ILCA</span>-77M2</li> <li>Sony <span class="caps">ILCE</span>-7M2</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7RM2</span></li> <li>Sony <span class="caps">SLT</span>-A58</li> </ul> <p>If you are a journalist writing about darktable you are welcome to ask if anything isn&#8217;t clear. we can also proofread articles in some languages like English and&nbsp;German.</p><img src="https://www.darktable.org/2015/12/darktable-2-0-released/Christmas_Moon.jpg" class="hidden-lede">joThu, 24 Dec 2015 10:46:37 +0000tag:www.darktable.org,2015-12-24:2015/12/darktable-2-0-released/announcementdarktable releasefourth release candidate for darktable 2.0https://www.darktable.org/2015/12/fourth-release-candidate-for-darktable-2-0/<p>we&#8217;re proud to announce the fourth and hopefully last release candidate in the new feature release of darktable,&nbsp;2.0~rc4.</p> <p>the release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0rc4">https://github.com/darktable-org/darktable/releases/tag/release-2.0rc4</a> please only use our provided packages (&#8220;darktable-2.0.rc4.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). the latter are just git snapshots and will not work! here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc4/darktable-2.0.rc4.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-2.0rc4/darktable-2.0.rc4.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc4/darktable-2.0.rc4.dmg">https://github.com/darktable-org/darktable/releases/download/release-2.0rc4/darktable-2.0.rc4.dmg</a></p> <p>the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0~rc4.tar.xz 79446397a837bc9c262706d91b99ee0cb3339e93e36ebcbc3a23a0af80d77509 darktable-2.0~rc4.tar.xz $ sha256sum darktable-2.0~rc4.dmg 14422e1569f94deb093e198895636b6e63982b9e9812c57e262fc42281d90bf5 darktable-2.0~rc4.dmg </pre></div> <p>packages for individual platforms and distros will follow&nbsp;shortly.</p> <p>the changes from rc3 include minor bugfixes, such&nbsp;as:</p> <ul> <li>translation&nbsp;updates</li> <li>an OpenCL bug&nbsp;fixed</li> <li>fixed a rare crash when leaving&nbsp;darkroom</li> <li>fixed a bug in gamut&nbsp;checking</li> <li>fixed a possible crash in lua garbage&nbsp;collection</li> <li>fixed a bug in rawspeed&#8217;s sraw&nbsp;handling</li> <li>fixed a bug in circle&nbsp;masks</li> <li>allow toggling tethering zoom with&nbsp;&#8216;z&#8217;</li> <li>don&#8217;t make some modules too wide in some&nbsp;languages</li> <li>fixed high <span class="caps">CPU</span> load when hovering&nbsp;filmstrip</li> <li>fixed lighttable&nbsp;prefetching</li> <li>fixed thumbnail color&nbsp;management</li> <li>make tethered focusing for Canon cameras more robust wrt. libgphoto2&nbsp;version</li> <li>some styling&nbsp;fixes</li> <li>fixed filmstrip width when duplicating images in&nbsp;darkroom</li> <li>scroll sidepanels when mouse is next to the window&nbsp;border</li> <li>speed up thumbnail color management using&nbsp;OpenMP</li> <li>fixed a few small&nbsp;memleaks</li> <li>fixed <span class="caps">PDF</span> exporter when compiled without&nbsp;Lua</li> <li> <p>camera support&nbsp;improvements:</p> <ul> <li> <p>noiseprofiles:</p> <ul> <li>add Olympus E-M5 Mark <span class="caps">II</span></li> <li>add Canon&nbsp;M3</li> <li>add Fuji&nbsp;X30</li> <li>add Sony <span class="caps">RX10M2</span></li> <li>add Panasonic <span class="caps">GX8</span></li> <li>add Sony <span class="caps">A7RII</span></li> </ul> </li> <li> <p>whitebalance:</p> <ul> <li>Canon&nbsp;S110</li> <li>Canon&nbsp;S100</li> <li>Canon G1 X Mark <span class="caps">II</span></li> <li>Canon PowerShot G3&nbsp;X</li> <li>Canon PowerShot&nbsp;G16</li> <li>Canon PowerShot&nbsp;G15</li> <li>Canon PowerShot G1&nbsp;X</li> <li>Canon 1D Mark <span class="caps">III</span></li> <li>Canon 1Ds Mark <span class="caps">III</span></li> <li>Canon <span class="caps">EOS</span>&nbsp;M3</li> <li>Panasonic <span class="caps">GX8</span></li> <li>Pentax *ist <span class="caps">DL2</span></li> <li>Sony <span class="caps">NEX</span>-F3</li> <li>Sony <span class="caps">SLT</span>-A33</li> <li>Sony <span class="caps">NEX</span>-5T</li> <li>Sony <span class="caps">NEX</span>-3N</li> <li>Sony&nbsp;A3000</li> <li>Sony&nbsp;A5000</li> <li>Sony&nbsp;A5100</li> <li>Sony&nbsp;A500</li> <li>Sony <span class="caps">RX1R</span></li> <li>Sony <span class="caps">RX1</span></li> <li>Sony <span class="caps">DSLR</span>-A580</li> <li>Sony <span class="caps">ILCE</span>-6000</li> <li>Sony <span class="caps">ILCE</span>-7S</li> <li>Sony <span class="caps">ILCE</span>-<span class="caps">7SM2</span></li> <li>Sony <span class="caps">SLT</span>-A35</li> </ul> </li> <li> <p>rawspeed&nbsp;fixes:</p> <ul> <li>support all Panasonic <span class="caps">GF7</span>&nbsp;crops</li> <li>support all Panasonic <span class="caps">FZ70</span>/<span class="caps">FZ72</span>&nbsp;crops</li> <li>support <span class="caps">FZ150</span> 3:2 and fix 4:3&nbsp;blackpoint</li> <li>fixed whitebalance for Canon G3&nbsp;X</li> <li>whitebalance support for the Leaf Credo&nbsp;line</li> <li>fixed Nikon D1&nbsp;whitebalance</li> <li>whitebalance support for Canon&nbsp;Pro1/G6/S60/S70</li> <li>add another whitebalance mode for Canon&nbsp;D30</li> <li>fixed whitebalance for Canon&nbsp;G3/G5/S45/S50</li> <li>fixed whitebalance for Canon&nbsp;S90</li> <li>support another Canon 350D&nbsp;alias</li> </ul> </li> </ul> </li> </ul><img src="https://www.darktable.org/2015/12/fourth-release-candidate-for-darktable-2-0/sail_wide.jpg" class="hidden-lede">houzWed, 16 Dec 2015 18:26:23 +0000tag:www.darktable.org,2015-12-16:2015/12/fourth-release-candidate-for-darktable-2-0/announcementdarktable releasethird release candidate for darktable 2.0 & string freezehttps://www.darktable.org/2015/11/third-release-candidate-for-darktable-2-0/<p>we&#8217;re proud to announce the third release candidate in the new feature release of darktable,&nbsp;2.0~rc3.</p> <p>the release notes and relevant downloads can be found attached to this git&nbsp;tag:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0rc3">https://github.com/darktable-org/darktable/releases/tag/release-2.0rc3</a></p> <p>please only use our provided packages (&#8220;darktable-2.0.rc3.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). the latter are just git snapshots and will not work! here are the direct links to tar.xz and&nbsp;dmg:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc3/darktable-2.0.rc3.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-2.0rc3/darktable-2.0.rc3.tar.xz</a></p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc3/darktable-2.0.rc3.dmg">https://github.com/darktable-org/darktable/releases/download/release-2.0rc3/darktable-2.0.rc3.dmg</a></p> <p>the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0~rc3.tar.xz 4d81527350e6f722da484bdcd3f620918321b0e15b1fdad219821abbf23c2c89 darktable-2.0~rc3.tar.xz $ sha256sum darktable-2.0~rc3.dmg 109d5f14cd71fcee29b6646698028fde1f864c6cd51c5c25086b1a1d9f9578b2 darktable-2.0~rc3.dmg </pre></div> <p>packages for individual platforms and distros will follow&nbsp;shortly.</p> <p>as we&#8217;re closing in to the final version, we are also officially in string freeze as of now. this affects darktable, not the user&nbsp;manual.</p> <p>the changes from rc2 include minor bugfixes, such&nbsp;as:</p> <ul> <li> <p>camera support&nbsp;improvements</p> <ul> <li>add support for the Canon PowerShot G5&nbsp;X</li> <li>basic support for Olympus <span class="caps">SP320</span></li> <li>Panasonic <span class="caps">LF1</span> noise profile and white balance&nbsp;presets</li> <li>noiseprofiles: add Sony&nbsp;A77mk2</li> </ul> </li> <li> <p>high-dpi&nbsp;fixes</p> </li> <li>fixed a few&nbsp;memleaks</li> <li>3:1 aspect ratio as preset in&nbsp;crop&amp;rotate</li> <li>magic lantern-style deflicker has been activated in the exposure&nbsp;module</li> <li>updated&nbsp;translations</li> </ul> <p>and the preliminary changelog as compared to the 1.6.x series can be found&nbsp;below.</p> <p>when updating from the currently stable 1.6.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.0 to 1.6.x any more. be careful if you need darktable for production&nbsp;work!</p> <p>happy 2.0~rc3 everyone&nbsp;:)</p> <ul> <li>darktable has been ported to&nbsp;gtk-3.0</li> <li>new thumbnail cache replaces mipmap cache (much improved speed, less&nbsp;crashiness)</li> <li>added print&nbsp;mode</li> <li>reworked screen color management (softproof, gamut check&nbsp;etc.)</li> <li>removed dependency on&nbsp;libraw</li> <li>removed dependency on libsquish (solves patent issues as a side&nbsp;effect)</li> <li>unbundled pugixml, osm-gps-map and&nbsp;colord-gtk</li> <li>text&nbsp;watermarks</li> <li>color reconstruction&nbsp;module</li> <li>raw black/white point&nbsp;module</li> <li>delete/trash&nbsp;feature</li> <li>addition to&nbsp;shadows&amp;highlights</li> <li>more proper Kelvin temperature, fine-tuning preset interpolation in <span class="caps">WB</span>&nbsp;iop</li> <li>noiseprofiles are in external <span class="caps">JSON</span> file&nbsp;now</li> <li>monochrome raw demosaicing (not sure whether it will stay for release, like Deflicker, but hopefully it will&nbsp;stay)</li> <li>aspect ratios for crop&amp;rotate can be added to conf&nbsp;(ae36f03)</li> <li>navigating lighttable with arrow keys and&nbsp;space/enter</li> <li>pdf export&nbsp;– some changes might happen there&nbsp;still</li> <li>brush size/hardness/opacity have key&nbsp;accels</li> <li>the facebook login procedure is a little different&nbsp;now</li> <li>export can&nbsp;upscale</li> <li>we no longer drop history entries above the selected one when leaving darkroom or switching&nbsp;images</li> <li>text/font/color in&nbsp;watermarks</li> <li>image information now supports <span class="caps">GPS</span>&nbsp;altitude</li> <li>allow adding tone- and basecurve nodes with&nbsp;ctrl-click</li> <li>new &#8220;mode&#8221; parameter in the export&nbsp;panel</li> <li>high quality export now downsamples before watermark and frame to guarantee consistent&nbsp;results</li> <li>Lua scripts can now add <span class="caps">UI</span> elements to the lighttable view (buttons, sliders etc&nbsp;…)</li> <li>a new repository for external Lua scripts was&nbsp;started</li> </ul><img src="https://www.darktable.org/2015/11/third-release-candidate-for-darktable-2-0/autumn_path_wide.jpg" class="hidden-lede">houzMon, 30 Nov 2015 10:55:34 +0000tag:www.darktable.org,2015-11-30:2015/11/third-release-candidate-for-darktable-2-0/announcementdarktable releaseUbuntu Unstable Repository and our Release Candidateshttps://www.darktable.org/2015/11/ubuntu-unstable-repository-and-our-release-candidates/<p>Following is a public service announcement from Pascal de Bruijn, the maintainer of the Ubuntu&nbsp;PPAs.</p> <p>As most of you know, my <a href="https://launchpad.net/~pmjdebruijn/+archive/ubuntu/darktable-unstable">darktable-unstable</a> <a href="https://en.wikipedia.org/wiki/Personal_Package_Archive"><span class="caps">PPA</span></a> was serving as a pre-release repository for our stable maintenance tree, as it usually does. Now as master has settled down, and we&#8217;re slowly gearing up for a 2.0 release, I&#8217;ll do pre-release (release candidate) builds for darktable 2.0&nbsp;there.</p> <p>On my <a href="https://launchpad.net/~pmjdebruijn/+archive/ubuntu/darktable-unstable">darktable-unstable</a> <a href="https://en.wikipedia.org/wiki/Personal_Package_Archive"><span class="caps">PPA</span></a> I will support Ubuntu Trusty (14.04, the latest <a href="https://wiki.ubuntu.com/LTS">Long Term Support</a> release) as always. Temporarily I&#8217;ll support Ubuntu Wily (15.10, the latest plain release) as well, at least until we have a final 2.0 stable release. Once we have a final 2.0 stable release I will support all Ubuntu versions (still) supported by Canonical at that time via my <a href="https://launchpad.net/~pmjdebruijn/+archive/ubuntu/darktable-release">darktable-release</a> <a href="https://en.wikipedia.org/wiki/Personal_Package_Archive"><span class="caps">PPA</span></a> as&nbsp;usual.</p> <p>In general updates on my <a href="https://launchpad.net/~pmjdebruijn/+archive/ubuntu/darktable-unstable">darktable-unstable</a> <a href="https://en.wikipedia.org/wiki/Personal_Package_Archive"><span class="caps">PPA</span></a> should be expected to be fairly erratic, completely depending on the number and significance of changes being made in <a href="https://github.com/darktable-org/darktable/commits/master">git master</a>. That said, I expect that it will probably average out at once a week or&nbsp;so.</p> <p>If you find any issues with these darktable release candidates please do report them to our <a href="https://redmine.darktable.org/issues">bug tracker</a>.</p><img src="https://www.darktable.org/2015/11/ubuntu-unstable-repository-and-our-release-candidates/lumber.jpg" class="hidden-lede">pmjdebruijnTue, 17 Nov 2015 19:50:48 +0000tag:www.darktable.org,2015-11-17:2015/11/ubuntu-unstable-repository-and-our-release-candidates/second release candidate for darktable 2.0https://www.darktable.org/2015/11/second-release-candidate-for-darktable-2-0/<p>we&#8217;re proud to announce the second release candidate in the new feature release of darktable,&nbsp;2.0~rc2.</p> <p>as always, please don&#8217;t use the autogenerated tarball provided by github, but only our&nbsp;tar.xz.</p> <p>the release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0rc2">https://github.com/darktable-org/darktable/releases/tag/release-2.0rc2</a> please only use our provided packages (&#8220;darktable-2.0.rc2.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). the latter are just git snapshots and will not work! here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc2/darktable-2.0.rc2.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-2.0rc2/darktable-2.0.rc2.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc2/darktable-2.0.rc2.dmg">https://github.com/darktable-org/darktable/releases/download/release-2.0rc2/darktable-2.0.rc2.dmg</a></p> <p>the checksums&nbsp;are:</p> <div class="highlight"><pre>$ sha256sum darktable-2.0~rc2.tar.xz 9349eaf45f6aa4682a7c7d3bb8721b55ad9d643cc9bd6036cb82c7654ad7d1b1 darktable-2.0~rc2.tar.xz $ sha256sum darktable-2.0~rc2.dmg f343a3291642be1688b60e6dc98930bdb559fc5022e32544dcbe35a38aed6c6d darktable-2.0~rc2.dmg </pre></div> <p>packages for individual platforms and distros will follow&nbsp;shortly.</p> <p>for your convenience, robert hutton collected build instructions for quite a few distros in our&nbsp;wiki:</p> <p><a href="https://redmine.darktable.org/projects/darktable/wiki/Building_darktable_20">https://redmine.darktable.org/projects/darktable/wiki/Building_darktable_20</a></p> <p>the changes from rc1 include many minor bugfixes, such&nbsp;as:</p> <ul> <li>high iso fix for exif data of some&nbsp;cameras</li> <li>various macintosh fixes&nbsp;(fullscreen)</li> <li>fixed a&nbsp;deadlock</li> <li>updated&nbsp;translations</li> </ul> <p>and the preliminary changelog as compared to the 1.6.x series can be found&nbsp;below.</p> <p>when updating from the currently stable 1.6.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.0 to 1.6.x any more. be careful if you need darktable for production&nbsp;work!</p> <p>happy 2.0~rc2 everyone&nbsp;:)</p> <ul> <li>darktable has been ported to&nbsp;gtk-3.0</li> <li>new thumbnail cache replaces mipmap cache (much improved speed, less&nbsp;crashiness)</li> <li>added print&nbsp;mode</li> <li>reworked screen color management (softproof, gamut check&nbsp;etc.)</li> <li>removed dependency on&nbsp;libraw</li> <li>removed dependency on libsquish (solves patent issues as a side&nbsp;effect)</li> <li>unbundled pugixml, osm-gps-map and&nbsp;colord-gtk</li> <li>text&nbsp;watermarks</li> <li>color reconstruction&nbsp;module</li> <li>raw black/white point&nbsp;module</li> <li>delete/trash&nbsp;feature</li> <li>addition to&nbsp;shadows&amp;highlights</li> <li>more proper Kelvin temperature, fine-tuning preset interpolation in <span class="caps">WB</span>&nbsp;iop</li> <li>noiseprofiles are in external <span class="caps">JSON</span> file&nbsp;now</li> <li>monochrome raw demosaicing (not sure whether it will stay for release, like Deflicker, but hopefully it will&nbsp;stay)</li> <li>aspect ratios for crop&amp;rotate can be added to conf&nbsp;(ae36f035e1496b8b8befeb74ce81edf3be588801)</li> <li>navigating lighttable with arrow keys and&nbsp;space/enter</li> <li>pdf export &#8212; some changes might happen there&nbsp;still</li> <li>brush size/hardness/opacity have key&nbsp;accels</li> <li>the facebook login procedure is a little different&nbsp;now</li> <li>export can&nbsp;upscale</li> <li>we no longer drop history entries above the selected one when leaving dr or switching&nbsp;images</li> <li>text/font/color in&nbsp;watermarks</li> <li>image information now supports gps&nbsp;altitude</li> <li>allow adding tone- and basecurve nodes with&nbsp;ctrl-click</li> <li>new &#8220;mode&#8221; parameter in the export&nbsp;panel</li> <li>high quality export now downsamples before watermark and frame to guarantee consistent&nbsp;results</li> <li>lua scripts can now add <span class="caps">UI</span> elements to the lighttable view (buttons, sliders&nbsp;etc&#8230;)</li> <li>a new repository for external lua scripts was&nbsp;started.</li> </ul><img src="https://www.darktable.org/2015/11/second-release-candidate-for-darktable-2-0/cannobio2.jpg" class="hidden-lede">joMon, 16 Nov 2015 18:45:44 +0000tag:www.darktable.org,2015-11-16:2015/11/second-release-candidate-for-darktable-2-0/announcementdarktable releasefirst release candidate for darktable 2.0https://www.darktable.org/2015/11/first-release-candidate-for-darktable-2-0/<p>We&#8217;re proud to announce the first release candidate in the new feature release of darktable,&nbsp;2.0~rc1.</p> <p>The release notes and relevant downloads can be found attached to this git&nbsp;tag:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-2.0rc1">https://github.com/darktable-org/darktable/releases/tag/release-2.0rc1</a></p> <p>Please only use our provided packages (&#8220;darktable-2.0.rc1.*&#8221; tar.xz and dmg) not the auto-created tarballs from GitHub (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here are the direct links to tar.xz and&nbsp;dmg:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc1/darktable-2.0.rc1.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-2.0rc1/darktable-2.0.rc1.tar.xz</a></p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-2.0rc1/darktable-2.0.rc1.dmg">https://github.com/darktable-org/darktable/releases/download/release-2.0rc1/darktable-2.0.rc1.dmg</a></p> <div class="highlight"><pre>$ sha256sum darktable-2.0.rc1.tar.xz 412f17131c8674e266c91c933de1aa2b04c2ab7efdc04a60b00faf3abffc0446 darktable-2.0.rc1.tar.xz $ sha256sum darktable-2.0.rc1.dmg 080b846e677e0e2471389375a103c1714eefd0f9e7c64658758f2a7bf56f69c8 darktable-2.0.rc1.dmg </pre></div> <p>Packages for individual platforms and distros will follow&nbsp;shortly.</p> <p>For your convenience, these are the ubuntu/debian packages required to build the&nbsp;source:</p> <div class="highlight"><pre>$ sudo apt-get build-dep darktable <span class="o">&amp;&amp;</span> sudo apt-get install libgtk-3-dev libpugixml-dev libcolord-gtk-dev libosmgpsmap-1.0-0-dev libcups2-dev </pre></div> <p>And the preliminary changelog can be found&nbsp;below.</p> <p>When updating from the currently stable 1.6.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.0 to 1.6.x any more. Be careful if you need darktable for production&nbsp;work!</p> <p>Happy 2.0~rc1 everyone&nbsp;:)</p> <ul> <li>darktable has been ported to&nbsp;gtk-3.0</li> <li>new thumbnail cache replaces mipmap cache (much improved speed, less&nbsp;crashiness)</li> <li>added print&nbsp;mode</li> <li>reworked screen color management (softproof, gamut check&nbsp;etc.)</li> <li>text&nbsp;watermarks</li> <li>color reconstruction&nbsp;module</li> <li>raw black/white point&nbsp;module</li> <li>delete/trash&nbsp;feature</li> <li>addition to&nbsp;shadows&amp;highlights</li> <li>more proper Kelvin temperature, fine-tuning preset interpolation in the white balance&nbsp;module</li> <li>noiseprofiles are in external <span class="caps">JSON</span> file&nbsp;now</li> <li>monochrome raw demosaicing (not sure whether it will stay for release, like Deflicker, but hopefully it will&nbsp;stay)</li> <li>aspect ratios for crop&amp;rotate can be added to conf (<a href="https://github.com/darktable-org/darktable/commit/ae36f035e1496b8b8befeb74ce81edf3be588801">ae36f03</a>)</li> <li>navigating lighttable with arrow keys and&nbsp;space/enter</li> <li>pdf export&nbsp;– some changes might happen there&nbsp;still</li> <li>brush size/hardness/opacity have key&nbsp;accels</li> <li>the facebook login procedure is a little different&nbsp;now</li> <li>export can&nbsp;upscale</li> <li>we no longer drop history entries above the selected one when leaving darkroom or switching&nbsp;images</li> <li>text/font/color in&nbsp;watermarks</li> <li>image information now supports <span class="caps">GPS</span>&nbsp;altitude</li> <li>allow adding tone- and basecurve nodes with&nbsp;ctrl-click</li> <li>we renamed mipmaps to thumbnails in the&nbsp;preferences</li> <li>new “mode” parameter in the export&nbsp;panel</li> <li>high quality export now downsamples before watermark and frame to guarantee consistent&nbsp;results</li> <li>Lua scripts can now add <span class="caps">UI</span> elements to the lighttable view (buttons, sliders&nbsp;etc.)</li> <li>a new repository for external Lua scripts was&nbsp;started.</li> </ul><img src="https://www.darktable.org/2015/11/first-release-candidate-for-darktable-2-0/nut_wide.jpg" class="hidden-lede">houzWed, 04 Nov 2015 12:27:28 +0000tag:www.darktable.org,2015-11-04:2015/11/first-release-candidate-for-darktable-2-0/announcementdarktable releasereleased darktable 1.6.9https://www.darktable.org/2015/10/released-darktable-1-6-9/<p>We are happy to announce that darktable 1.6.9 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.9"> https://github.com/darktable-org/darktable/releases/tag/release-1.6.9</a> Please only use our provided packages (&#8220;darktable-1.6.9.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.9/darktable-1.6.9.tar.xz"> https://github.com/darktable-org/darktable/releases/download/release-1.6.9/darktable-1.6.9.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.9/darktable-1.6.9.dmg">&nbsp;https://github.com/darktable-org/darktable/releases/download/release-1.6.9/darktable-1.6.9.dmg</a></p> <p>this will likely be the last maintenance release in our 1.6 major release&nbsp;series</p> <div class="highlight"><pre>$ sha256sum darktable-1.6.9.tar.xz 0f721e9d298a9407f6c0325d9c95b9dc37fa60f3b6a2f2e3b5675ff97c423173 darktable-1.6.9.tar.xz $ sha256sum darktable-1.6.9.dmg f79b0c4f317f87aab353c25216f2a3628efa2a072b1ce64c21d075a3dda54e9e darktable-1.6.9.dmg </pre></div> <h2>general</h2> <ul> <li>don&#8217;t build with external lua 5.3 or higher (darktable <span class="caps">MUST</span> be built with lua&nbsp;5.2)</li> <li>format datetime locale dependant (and try to handle timezones&nbsp;better)</li> <li>fix various minor memory&nbsp;leaks</li> <li>use sRGB as display profile on all versions of <span class="caps">OS</span> X, fixes monitor profile being applied&nbsp;twice</li> </ul> <h2>rawspeed</h2> <p>(newly added camera support should be considered experimental for the time&nbsp;being):</p> <ul> <li>Olympus E-M10&nbsp;Mk2</li> <li>Canon G3&nbsp;X</li> <li>Canon PowerShot <span class="caps">SX60</span> <span class="caps">HS</span></li> <li>Sony <span class="caps">A7R</span> <span class="caps">II</span></li> <li>Fuji&nbsp;X-A2</li> <li>Panasonic <span class="caps">FZ1000</span> bad pixel&nbsp;detection</li> <li>alias Panasonic <span class="caps">TZ70</span>/<span class="caps">ZS50</span> to the <span class="caps">TZ71</span></li> <li>improve Samsung <span class="caps">NX1</span>/<span class="caps">NX500</span> support (handle 12bit&nbsp;modes)</li> <li>don&#8217;t load broken Kodak kdc&nbsp;files</li> </ul> <h2>white balance&nbsp;presets</h2> <ul> <li>Olympus E-M10&nbsp;Mk2</li> <li>Canon PowerShot <span class="caps">SX60</span> <span class="caps">HS</span></li> <li>Canon PowerShot G7&nbsp;X</li> <li>Sony <span class="caps">A7R</span> <span class="caps">II</span></li> <li>Sony A7 <span class="caps">II</span></li> <li>Sony <span class="caps">RX100M4</span></li> <li>Sony <span class="caps">RX10</span></li> <li>Nikon 1&nbsp;J5</li> </ul> <h2>noiseprofiles</h2> <ul> <li>Nikon&nbsp;D3300</li> <li>Canon PowerShot&nbsp;S120</li> </ul> <h2>translations</h2> <ul> <li>Swedish (small&nbsp;updates)</li> </ul><img src="https://www.darktable.org/2015/10/released-darktable-1-6-9/lede_wide.jpg" class="hidden-lede">houzTue, 20 Oct 2015 15:36:49 +0000tag:www.darktable.org,2015-10-20:2015/10/released-darktable-1-6-9/announcementdarktable releaseFeature Freeze darktable 2.0https://www.darktable.org/2015/10/feature-freeze-darktable-2-0/<p>Dear&nbsp;all,</p> <p>yesterday we entered the feature freeze stage for the upcoming darktable 2.0 feature release: no more new features will be allowed in. The coming months will be used to stabilize and fine-tune the code&nbsp;base.</p> <p>As usual we don&#8217;t make any definite statements about a release schedule, but we suggest to stay tuned towards the end of the&nbsp;year.</p> <p>the dt&nbsp;team</p><img src="https://www.darktable.org/2015/10/feature-freeze-darktable-2-0/flower.jpg" class="hidden-lede">smnWed, 14 Oct 2015 08:44:47 +0000tag:www.darktable.org,2015-10-14:2015/10/feature-freeze-darktable-2-0/released darktable 1.6.8https://www.darktable.org/2015/07/released-darktable-1-6-8/<p>We are happy to announce that darktable 1.6.8 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.8"> https://github.com/darktable-org/darktable/releases/tag/release-1.6.8</a> Please only use our provided packages (&#8220;darktable-1.6.8.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.8/darktable-1.6.8.tar.xz"> https://github.com/darktable-org/darktable/releases/download/release-1.6.8/darktable-1.6.8.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.8/darktable-1.6.8.dmg">&nbsp;https://github.com/darktable-org/darktable/releases/download/release-1.6.8/darktable-1.6.8.dmg</a></p> <p>this is a point release in the stable series. the sha256sum&nbsp;is</p> <div class="highlight"><pre>sha256sum darktable-1.6.8.tar.xz b676f81bd8cc661a8f76e03ad449da4444f770b6bec3e9accf013c636f690905 sha256sum darktable-1.6.8.dmg ec4b1ad797ea7a483d7fc94724de99a1d18da7d7f75071220e1d313e0a4d8a53 </pre></div> <p>and as always, please don&#8217;t use the tarballs provided by github (marked as &#8220;Source&nbsp;code&#8221;).</p> <h2>changes</h2> <ul> <li>clipping, santiy check for custom aspect&nbsp;ratios</li> <li>read lensmodel from&nbsp;xmp</li> <li>handle canon lens recognition special&nbsp;case</li> <li>general&nbsp;cleanups</li> </ul> <h2>rawspeed</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;M3</li> <li>Canon <span class="caps">EOS</span> 5Ds&nbsp;(R)</li> <li>Nikon 1&nbsp;J5</li> <li>Panasonic <span class="caps">DMC</span>-G7 (4:3 aspect ratio&nbsp;only)</li> <li>Fujifilm&nbsp;X-T10</li> <li>Pentax&nbsp;K-S2</li> <li>Panasonic <span class="caps">TZ71</span></li> <li>Olympus <span class="caps">TG</span>-4</li> <li>Leica <span class="caps">VLUX1</span> 4:3 aspect ratio&nbsp;mode</li> </ul> <h2>standard color&nbsp;matrices</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;M3</li> <li>Canon <span class="caps">EOS</span> 5Ds&nbsp;(R)</li> <li>Nikon 1&nbsp;J5</li> <li>Panasonic <span class="caps">DMC</span>-G7</li> <li>Fujifilm&nbsp;X-T10</li> <li>Pentax&nbsp;K-S2</li> <li>Olympus <span class="caps">TG</span>-4</li> </ul> <h2>white balance&nbsp;presets</h2> <ul> <li>Samsung <span class="caps">NX500</span></li> <li>Panasonic <span class="caps">TZ71</span></li> </ul> <h2>noise&nbsp;profiles</h2> <ul> <li>Sony <span class="caps">ILCE</span>-5100</li> <li>Fujifilm <span class="caps">HS50EXR</span></li> <li>Canon <span class="caps">EOS</span> 5Ds&nbsp;R</li> </ul> <p>So now go out, enjoy the summer and take a lot of&nbsp;photos!</p><img src="https://www.darktable.org/2015/07/released-darktable-1-6-8/dt-2_wide.jpg" class="hidden-lede">houzThu, 30 Jul 2015 21:55:00 +0000tag:www.darktable.org,2015-07-30:2015/07/released-darktable-1-6-8/announcementdarktable releaseWhy don’t you provide a Windows build?https://www.darktable.org/2015/07/why-dont-you-provide-a-windows-build/<p>Due to the heated debate lately, a short&nbsp;foreword:</p> <p>We do not want to harass, insult or criticize anyone due to his or her choice of operating system. Still, from time to time we encounter comments from people accusing us of ignorance or even disrespect towards Windows users. If any of our statements can be interpreted such, we want to apologize for that&nbsp;– and once more give the full explanation of our lacking Windows&nbsp;support.</p> <h2>The darktable&nbsp;project</h2> <p>darktable is developed and maintained by a small group of people in their spare time, just for fun. We do not have any funds, do not provide travel reimbursements for conferences or meetings, and don&#8217;t even have a legal entity at the moment. In other words: None of the developers has ever seen (and most likely will ever see) a single $(<span class="caps">INSERT</span> <span class="caps">YOUR</span> <span class="caps">CURRENCY</span>) for the development of darktable, which is thus a project purely driven by enthusiasm and&nbsp;curiosity.</p> <h2>The development&nbsp;environment</h2> <p>The team is quite mixed, some have a professional background in computing, others don&#8217;t. But all love photography and like exploring the full information recorded by the camera themselves. Most new features are added to darktable as an expert for, let&#8217;s say <span class="caps">GPU</span> computing, steps up and is willing to provide and maintain code for the new&nbsp;feature.</p> <p>Up till now there is one technical thing that unites all developers: None of them is using Windows as operating system. Some are using Mac <span class="caps">OSX</span>, Solaris, etc, but most run some Linux distribution. New flavors of operating systems kept being added to our list with people willing to support their favorite system joining the&nbsp;team.</p> <p>Also (since this stands out a bit as “commercial operating system”) Mac <span class="caps">OS</span> X support arrived in exactly this way. Someone (parafin!) popped up, said: “I like this software, and I want to run darktable on my Mac.”, compiled it on <span class="caps">OS</span> X and since then does testing and package building for the Mac <span class="caps">OS</span> X operating system. And this is not an easy job. Initially there were just snapshot builds from git, no official releases, not even release candidates&nbsp;– but already the first complaints about the quality arrived. Finally, there was a lot of time invested in working around specific peculiarities of this operating system to make it work and provide builds for every new version of darktable&nbsp;released.</p> <p>This nicely shows one of the consequences of the project&#8217;s organizational (non-) structure and development approach: at first, every developer cares about darktable running on his personal&nbsp;system.</p> <h2>Code contributions and feature&nbsp;requests</h2> <p>Usually feature requests from users or from the community are treated like a brainstorming session. Someone proposes a new feature, people think and discuss about it&nbsp;– and if someone likes the idea and has time to code it, it might eventually come&nbsp;– if the team agrees on including the&nbsp;feature.</p> <p>But life is not a picnic. You probably wouldn&#8217;t pass by your neighbor and demand from him to repair your broken car&nbsp;– just because you know he loves to tinker with his vintage car collection at home. Same applies here. No one feels comfortable if suddenly request are being made that would require a non-negligible amount of work&nbsp;– but with no return for the person carrying out the work, neither moneywise nor&nbsp;intellectually.</p> <p>This is the feeling created every time someone just passes by leaving as only statement: “Why isn&#8217;t there a Windows build&nbsp;(yet)?”.</p> <h2>Providing a Windows build for&nbsp;darktable</h2> <p>The answer has always been the same: because no one stepped up doing it. None of the passers-by requesting a Windows build actually took the initiative, just downloaded the source code and started the compilation. No one approached the development team with actual build errors and problems encountered during a compilation using MinGW or else on Windows. The only thing ever aired were requests for ready-made&nbsp;binaries.</p> <p>As stated earlier here, the development of darktable is totally about one&#8217;s own initiative. This project (as many others) is not about ordering things and getting them delivered. It&#8217;s about starting things, participating and contributing. It&#8217;s about trying things out yourself. It&#8217;s <span class="caps">FLOSS</span>.</p> <p>One argument that pops up from time to time is: “darktable&#8217;s user base would grow immensely with a Windows build!”. This might be true. But&nbsp;– what&#8217;s the benefit from this? Why should a developer care how many people are using the software if his or her sole motivation was producing a nice software that he/she could process raw files&nbsp;with?</p> <p>On the contrary: more users usually means more support, more bug tracker tickets, more work. And this work usually isn&#8217;t the pleasing sort, hunting seldom bugs occurring with some rare camera&#8217;s files on some other operating system is usually not exactly what people love to spent their Saturday afternoon&nbsp;on.</p> <p>This argumentation would totally make sense if darktable would be sold, the developers paid and the overall profit would depend on the number of people using the software. No one can be blamed for sending such requests to a company selling their software or service (for your money or your data, whatever)&nbsp;– and it is up to them to make an economical decision on whether it makes sense to invest the time and manpower or&nbsp;not.</p> <p>But this is&nbsp;different.</p> <p>Not building darktable on Windows is not a technical issue after all. There certainly are problems of portability, and code changes would be necessary, but in the end it would probably work out. The real problem is (as has been pointed out by the darktable development team many times in the past) the maintenance of the build as well as all the dependencies that the package&nbsp;requires.</p> <p>The darktable team is trying to deliver a high-quality reliable software. Photographers rely on being able to re-process their old developments with recent versions of darktable obtaining exactly the same result&nbsp;– and that on many platforms, being it CPUs or GPUs with OpenCL. Satisfying this objective requires quite some testing, thinking and maintenance&nbsp;work.</p> <p>Spawning another build on a platform that not a single developer is using would mean lots and lots of testing&nbsp;– in unfamiliar terrain, and with no fun attached at all. Releasing a half-way working, barely tested build for Windows would harm the project&#8217;s reputation and diminish the confidence in the software treating your photographs&nbsp;carefully.</p> <p>We hope that this reasoning is comprehensible and that no one feels disrespected due to the choice of operating&nbsp;system.</p> <h1>References</h1> <ul> <li><a href="https://www.darktable.org/2011/07/that-other-os/"><span>That other <span class="caps">OS</span></span></a></li> </ul><img src="https://www.darktable.org/2015/07/why-dont-you-provide-a-windows-build/windows_wide.jpg" class="hidden-lede">smnMon, 13 Jul 2015 21:15:02 +0000tag:www.darktable.org,2015-07-13:2015/07/why-dont-you-provide-a-windows-build/blogreleased darktable 1.6.7https://www.darktable.org/2015/06/released-darktable-1-6-7/<p>We are happy to announce that darktable 1.6.7 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.7"> https://github.com/darktable-org/darktable/releases/tag/release-1.6.7</a> Please only use our provided packages (&#8220;darktable-1.6.7.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.7/darktable-1.6.7.tar.xz"> https://github.com/darktable-org/darktable/releases/download/release-1.6.7/darktable-1.6.7.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.7/darktable-1.6.7.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.7/darktable-1.6.7.dmg</a></p> <p>this is another point release in the stable 1.6.x&nbsp;series.</p> <div class="highlight"><pre>sha256sum darktable-1.6.7.tar.xz a75073b49df0a30cd2686624feeb6210bc083bc37112ae6e045f8523db4c4c98 sha256sum darktable-1.6.7.dmg 6630230049e6d2c4cdfd39585f95fbd1ee439a8dad107f7332aefeb1dd75b831 </pre></div> <h2>security</h2> <ul> <li>libraw <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3885"><span class="caps">CVE</span>-2015-3885</a>: fix integer overflow in&nbsp;ljpeg_start()</li> </ul> <h2>miscellaneous</h2> <ul> <li>improvements to facebook&nbsp;export</li> <li>interpolation&nbsp;fixups</li> <li>demosaic code&nbsp;cleanups</li> <li>slideshow should handle very small images&nbsp;better</li> <li>improve Olympus lens&nbsp;detection</li> <li>various minor memory leak&nbsp;fixes</li> <li>various other&nbsp;fixes</li> <li>Pentax (K-x) <span class="caps">DNG</span> old embedded preview left over is now&nbsp;removed</li> <li>modern <span class="caps">OSX</span> display profile&nbsp;handling</li> </ul> <h2>camera&nbsp;support</h2> <ul> <li>Nikon D7200 (both 12bit and 14bit compressed&nbsp;NEFs)</li> <li>Nikon Coolpix&nbsp;P340</li> <li>Canon <span class="caps">EOS</span>&nbsp;750D</li> <li>Canon <span class="caps">EOS</span>&nbsp;760D</li> <li>Canon <span class="caps">EOS</span>&nbsp;M2</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">CM1</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF7</span> (4:3&nbsp;only)</li> <li>Olympus <span class="caps">XZ</span>-10</li> <li>Olympus <span class="caps">SP570UZ</span></li> <li>Samsung <span class="caps">NX500</span></li> <li>Fuji <span class="caps">F600EXR</span></li> </ul> <h2>aspect&nbsp;ratios</h2> <ul> <li>Pansonic <span class="caps">DMC</span>-G5</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GM5</span></li> <li>Panasonic <span class="caps">FZ200</span></li> </ul> <h2>white balance&nbsp;presets</h2> <ul> <li>Nikon&nbsp;D7200</li> <li>Nikon Coolpix&nbsp;P340</li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GM1</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GM5</span></li> <li>Olympus E-M10&nbsp;(updated)</li> <li>Olympus E-<span class="caps">PL7</span></li> <li>Olympus <span class="caps">XZ</span>-10</li> </ul> <h2>noise&nbsp;profiles</h2> <ul> <li>Canon Powershot&nbsp;G9</li> <li>Sony&nbsp;A350</li> </ul> <h2>basecurves</h2> <ul> <li>Nikon&nbsp;D7200</li> <li>Nikon&nbsp;D7000</li> <li>Nikon&nbsp;D750</li> <li>Nikon&nbsp;D90</li> </ul> <h2>translations</h2> <ul> <li>Catalan</li> <li>German</li> <li>Spanish</li> <li>Swedish</li> </ul><img src="https://www.darktable.org/2015/06/released-darktable-1-6-7/town_hall_wide.jpg" class="hidden-lede">houzTue, 09 Jun 2015 11:54:22 +0000tag:www.darktable.org,2015-06-09:2015/06/released-darktable-1-6-7/announcementdarktable releasereleased darktable 1.6.6https://www.darktable.org/2015/04/released-darktable-1-6-6/<p>We are happy to announce that darktable 1.6.6 has been released. Please note that the 1.6.5 release was broken so 1.6.6 was directly pushed out. Just pretend 1.6.5 had been&nbsp;skipped.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.6">https://github.com/darktable-org/darktable/releases/tag/release-1.6.6</a> Please only use our provided packages (&#8220;darktable-1.6.6.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here are the direct links to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.6/darktable-1.6.6.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.6/darktable-1.6.6.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.6/darktable-1.6.6.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.6/darktable-1.6.6.dmg</a></p> <p>this is another point release in the stable 1.6.x&nbsp;series.</p> <div class="highlight"><pre>sha256sum darktable-1.6.6.tar.xz f85e4b8219677eba34f5a41e1a0784cc6ec06576326a99f04e460a4f41fd21a5 sha256sum darktable-1.6.6.dmg bce9a792ee362c47769839ec3e49973c07663dbdf6533ef5a987c93301358607 </pre></div> <h2>Improvements</h2> <ul> <li>fix the Olympus E330 support (which was accidentally broken in&nbsp;1.6.4)</li> <li>fix white balance reading for the Canon Powershot <span class="caps">SX50</span> <span class="caps">HS</span></li> <li>white balance presets for <span class="caps">RICOH</span> <span class="caps">GR</span></li> <li>minor assorted bug fixes (masks, lens correction, profiled denoise,&nbsp;etc)</li> </ul><img src="https://www.darktable.org/2015/04/released-darktable-1-6-6/wheat_wide.jpg" class="hidden-lede">houzTue, 28 Apr 2015 11:35:02 +0000tag:www.darktable.org,2015-04-28:2015/04/released-darktable-1-6-6/announcementdarktable releasereleased darktable 1.6.4https://www.darktable.org/2015/04/released-darktable-1-6-4/<p>We are happy to announce that darktable 1.6.4 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.4">https://github.com/darktable-org/darktable/releases/tag/release-1.6.4</a> Please only use our provided packages (&#8220;darktable-1.6.4.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here&#8217;s the direct link to tar.xz and dmg: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.4/darktable-1.6.4.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.4/darktable-1.6.4.tar.xz</a> <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.4/darktable-1.6.4.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.4/darktable-1.6.4.dmg</a></p> <p>this is another point release in the stable 1.6.x&nbsp;series.</p> <div class="highlight"><pre>sha256sum darktable-1.6.4.tar.xz c5f705e8164c014acf0dac2ffc5b730362068c2864622121ca6fa9f330368d2a sha256sum darktable-1.6.4.dmg e5bbf00fefcf116aec0e66d1d0cf2e2396cb0b19107402d2ef70d1fa0ab375f6 </pre></div> <h2>General&nbsp;improvements:</h2> <ul> <li>major rawspeed&nbsp;update</li> <li>facebook exporter update (first authentication usability should be much better&nbsp;now)</li> <li>first run opencl benchmark to prevent opencl auto-activation if <span class="caps">GPU</span> is obviously slower than <span class="caps">CPU</span></li> <li>lensfun cornercase&nbsp;fixes</li> <li>some mask cornercase&nbsp;fixes</li> <li>zonesystem now updates it&#8217;s gui when number of zones&nbsp;changes</li> <li>spots iop&nbsp;updates</li> <li>ui_last/gui_language should work more reliably&nbsp;now</li> <li>internal lua updated from 5.2.3 to 5.2.4 (distro typically use their own version of&nbsp;lua)</li> <li>gcc 5 should build&nbsp;now</li> </ul> <h2>Camera&nbsp;support:</h2> <ul> <li>Canon Digital Rebel (non-european&nbsp;300D)</li> <li>Nikon D5500&nbsp;(experimental)</li> <li>Olympus E-M5 Mark <span class="caps">II</span>&nbsp;(experimental)</li> <li>Samsung <span class="caps">NX500</span>&nbsp;(experimental)</li> </ul> <h2>White balance&nbsp;presets:</h2> <ul> <li>Sony A77 <span class="caps">II</span></li> <li>Fujifilm&nbsp;X-E2</li> <li>Olympus E-M5 Mark <span class="caps">II</span></li> </ul> <h2>Noise&nbsp;profiles:</h2> <ul> <li>Canon 7D Mark <span class="caps">II</span></li> </ul> <h2>updated&nbsp;translations:</h2> <ul> <li>German</li> <li>French</li> <li>Russian</li> <li>Danish</li> <li>Catalan</li> <li>Japanese</li> <li>Dutch</li> </ul><img src="https://www.darktable.org/2015/04/released-darktable-1-6-4/thumb.jpg" class="hidden-lede">smnWed, 08 Apr 2015 16:06:26 +0000tag:www.darktable.org,2015-04-08:2015/04/released-darktable-1-6-4/darktable releaseIntroducing the darktable app storehttps://www.darktable.org/2015/03/introducing-the-darktable-app-store/<p>Today we are happy to announce a big new feature that we will not only ship with the big 2.0 release later this year but also with our next point release, 1.6.4, which is due in about a week: even more darkroom&nbsp;modules!</p> <p>One of the big strengths of darktable has always been its varied selection of modules to tweak your image. However, that has also been one of the main points of criticism: too much, too many and too complicated to grasp. To make it easier for the user to deal with the flood of tools darktable has had the “<a href="/usermanual/en/more_modules.html">more modules</a>” list since many years. It changed its appearance a few times, we added module categories, allowed to select favorite modules, and all of that has proven to be useful. Thus there have always been people that approached us with great new ideas for new modules, especially since we moved to <a href="https://github.com/darktable-org/darktable">GitHub</a> a while ago with its powerful Pull Request system, yet we couldn&#8217;t accept many of them. Some were not that great codewise, some didn&#8217;t really fit our product vision&nbsp;– and then there were some that looked nice and certainly benefited some users, but we felt it wasn&#8217;t generic enough to justify polluting our module list even more. Of course this was a bad situation, after all these people invested quite some time into providing us with a new feature that we turned down. No one likes to waste their&nbsp;time.</p> <figure class="u-pull-left" role="group"> <span><a href="https://www.darktable.org/2015/03/introducing-the-darktable-app-store/screenshot01.png"><img alt="In the default state the new dialog doesn't clutter the gui" src="screenshot01_thumb.png" title="In the default state the new dialog doesn't clutter the gui" /></a></span> <figcaption>In the default state the new dialog doesn&#8217;t clutter the gui</figcaption></figure> <p>After initial discussions about this topic at last year&#8217;s <a href="https://libregraphicsmeeting.org/2014/"><span class="caps">LGM</span> in Leipzig</a> we started working on a solution later that year and now we feel confident to present you the new module store. Think of it as an in-game app store (for all you gamers out there), or Firefox&#8217; Add-On system. Instead of bloating the list of modules shipped with darktable you can now easily browse for exciting new features from within the darkroom <span class="caps">GUI</span>, installing new modules on the fly (or uninstall them if you don&#8217;t like the result), and even see previews of the module&#8217;s effect on the currently opened image. We are certain that you will like&nbsp;this.</p> <p>Who will also like it are module developers. Writing new image modules has always been quite easy: clone the darktable sources, create one new C file and add it to the CMake system. But that was only the first part, after all you wanted to allow people to use your work in the end. So you either had to convince us to include your module into the official darktable release (with the problems outlined above), or provide a patched version of darktable for people to compile themselves. In theory you could also have provided a binary package or just the module compiled into a shared library for people to just copy to their install directory, but we have never seen anyone taking that route. With our new module system this will become easier. Instead of creating a patched version of darktable you can now make use of our Module Developers Package which contains all the required header files and a CMake stub to quickly compile your module into a shared library that can be used with a stock installation of darktable. And since we will release these files under a <span class="caps">LGPL</span> license you could even write non-free modules. Once you are happy you can submit your code for us to review (this step is still manual to prevent malicious code being shipped) and once we approved it everyone can install the&nbsp;module.</p> <figure class="u-pull-right" role="group"> <span><a href="https://www.darktable.org/2015/03/introducing-the-darktable-app-store/screenshot02.png"><img alt="Currently there is just the one module in store. More to come!" src="screenshot02_thumb.png" title="Currently there is just the one module in store. More to come!" /></a></span> <figcaption>Currently there is just the one module in store. More to come!</figcaption></figure> <p>All of the things described until now are implemented already and will be part of the next releases. Once it has proven to be working reliably we also plan to allow developers to make some money with their work as an incentive to attract more and better developers to our community. We are currently evaluating what payment models would work best, at the moment PayPal looks like a strong contender, but we are open for&nbsp;suggestions.</p> <p>In case you are curious how it&#8217;s implemented, it is based on the <a href="http://ghns.freedesktop.org/"><span class="caps">GHNS</span></a> system that is already used by <a href="https://store.kde.org/"><span class="caps">KDE</span></a> and others, and might eventually also be merged with the styles you can find on <a href="https://dtstyle.net/">https://dtstyle.net/</a>. On the server side there is a continuous integration system (<a href="https://jenkins.io/index.html">Jenkins</a> in our case) that recompiles everything whenever something got changed, taking care of the different target architectures and operating systems with their dependencies. And if you don&#8217;t want to wait for the release just try a development build, the code is merged and ready to be tested. As a first example we moved the new “<a href="https://www.darktable.org/2015/03/color-reconstruction/">color reconstruction</a>” module from the regular darktable installation to the&nbsp;store.</p> <p><span class="caps">PS</span>: Thou shalt not believe what got posted on the Internet on April&nbsp;1st.</p><img src="https://www.darktable.org/2015/03/introducing-the-darktable-app-store/hipsters_in_the_streets_wide.jpg" class="hidden-lede">houzTue, 31 Mar 2015 23:30:28 +0000tag:www.darktable.org,2015-03-31:2015/03/introducing-the-darktable-app-store/announcementblogdevelopmentupcoming featureColor Reconstructionhttps://www.darktable.org/2015/03/color-reconstruction/<p><strong>If you overexpose a photo with your digital camera you are in trouble. That’s what most photography related textbooks tell you&nbsp;– and it’s true. So you better pay close attention to your camera’s metering while shooting. However, what to do when the “bad thing” happened and you got this one non-repeatable shot, which is so absolutely brilliant, but unfortunately has some ugly signs of&nbsp;overexposure?</strong></p> <p>In this blog article I’d like to summarize how darktable can help you to repair overexposed images as much as possible. I’ll cover modules which have been part of darktable for a long time but also touch the brand new module “color&nbsp;reconstruction”.</p> <h2>Why overexposed highlights are a&nbsp;problem?</h2> <p>The sensor cells of a digital camera translate the amount of light that falls onto them into a digital reading. They can do so up to a certain sensor specific level&nbsp;– called the clipping value. If even more light falls onto the sensor it does not lead to any higher reading, the clipping value is the maximum. Think of a sensor cell as a water bucket; you can fill the bucket with liquid until it’s full but you cannot fill in more than its maximum&nbsp;volume.</p> <p>For a digital camera to sense the color of light three color channels are required: red, green and blue. A camera sensor achieves color sensitivity by organizing sensor cells carrying color filters in a certain pattern, most frequently a Bayer&nbsp;pattern.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_bayer_matrix.jpg"><img alt="colorreconstruction_bayer_matrix" src="colorreconstruction_bayer_matrix_thumb.jpg" /></a></span></p> <p>Combining this fact with the phenomenon of overexposure we can differentiate three&nbsp;cases:</p> <ol> <li>All three color channels have valid readings below the clipping&nbsp;value</li> <li>At least one color channel is clipped and at least one color channel has a valid&nbsp;reading</li> <li>All three color channels are&nbsp;clipped</li> </ol> <p>Case (1) does not need to concern us in this context: all is good and we get all tonal and color information of the affected&nbsp;pixels.</p> <p>Case (3) is the worst situation: no tonal nor any color information is available from the pixels in question. The best we can say about these pixels is that they must represent really bright highlights at or above the clipping value of the&nbsp;camera.</p> <p>In case (2) we do not have correct color information as this would require valid readings of all three color channels. As it’s often the green channel that clips first, pixels affected by this case of overexposure typically show a strong magenta color cast if we do not take further action. The good news: at least one of the channels has stayed below the clipping value, so we may use this one to restore the tonal information of the affected pixels, alas, without&nbsp;color.</p> <h2>Dealing with overexposure in&nbsp;darktable</h2> <p>darktable has a modular structure. Therefore more than one module is typically involved when working on overexposed images. This is different from other applications where all the functionality may be part of a single general exposure correction panel. It is in the philosophy of darktable to not hide from the user the order in which modifications are made to an&nbsp;image.</p> <p>Just in order to manage expectations: a heavily overexposed image or one with a fully blown-out sky is beyond repair. Only if at least some level of information is left in the highlights and if highlights represent only a limited part of the image there is a realistic chance to get a convincing&nbsp;result.</p> <h2>Correcting overall image&nbsp;exposure</h2> <p>Logically one of the basic modifications you need to consider for an overexposed image is an exposure correction. A negative exposure correction in the “exposure” module is frequently indispensable in order to bring brightest highlights into a more reasonable tonal&nbsp;range.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_11.jpg"><img alt="colorreconstruction_scr_1" src="colorreconstruction_scr_11_thumb.jpg" /></a></span></p> <p>Additionally you should take into account that the curve defined in the “base curve” module has a strong effect on highlights as well. You may try out different alternatives as offered in the module&#8217;s presets to find the one that best fits to your expectations. A base curve with a more continuous increase that slowly reaches the top right corner (right example) is often better suited for images with overexposed areas than one that already reaches the top at a moderately high input luminance level (left&nbsp;example).</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_2.jpg"><img alt="colorreconstruction_scr_2" src="colorreconstruction_scr_2_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_3.jpg"><img alt="colorreconstruction_scr_3" src="colorreconstruction_scr_3_thumb.jpg" /></a></span></span> </span></p> <h2>Bringing back detail into&nbsp;highlights</h2> <p>The “highlight reconstruction” module comes early in the pixel pipeline acting on raw data. This is the central module that deals with the different cases of overexposure as described above. As a default the module uses the “clip highlights” method: it will make sure that pixels, which have all or only part of the <span class="caps">RGB</span> channels clipped (cases 2 and 3), are converted to neutral white highlights instead of showing some kind of color cast. This is the minimum you want to do with highlights. For that reason this method is activated by default for all raw input&nbsp;images.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_4.jpg"><img alt="colorreconstruction_scr_4" src="colorreconstruction_scr_4_thumb.jpg" /></a></span></p> <p>As an alternative option the “highlight reconstruction” module offers the method “reconstruct in LCh”. This method is able to effectively deal with case (2) as described above. The luminance of partly clipped pixels can be reconstructed, the pixels get back their tonal information but result in a colorless neutral&nbsp;gray.</p> <p>A third method offered by the “highlight reconstruction” module is called “reconstruct&nbsp;color”.</p> <p>At first the idea of reconstructing color in highlights may sound surprising. As you know from what has been said above, overexposed highlights always lack color information (cases 2 and 3) and may even miss any luminance information as well (case 3). How can we then expect to reconstruct colors in these&nbsp;cases?</p> <p>Now, the method that is used here is called “inpainting”. The algorithm assumes that an overexposed area is surrounded by non-overexposed pixels with the same color that the overexposed area had originally. The algorithm extrapolates those valid colors into the clipped highlights. This works remarkably well for homogeneous overexposed areas like skin&nbsp;tones.</p> <p>Often it works perfectly but sometimes it might struggle to successfully fill all the highlights. In some cases it might produce moiré like patterns as an artifact, especially if the overexposed area is superposed by some sharp structures. As you will be able to identify limitations and potential problems immediately this method is always worth a&nbsp;try.</p> <h2>Bringing colors into&nbsp;highlights</h2> <p>The existing limitations of the “highlight reconstruction” module when it comes to colors has led to the development of a new module called “color reconstruction”. This module is currently part of the master development branch and will be part of darktable with the next feature&nbsp;release.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_5.jpg"><img alt="colorreconstruction_scr_5" src="colorreconstruction_scr_5_thumb.jpg" /></a></span></p> <p>As we have discussed above there is no way to know the “true” color of a clipped highlight, we can only make an&nbsp;estimate.</p> <p>The basic idea of the module is as follows: pixels which exhibit a luminance value above a user selectable threshold are assumed to have invalid colors. All pixels whose luminance value is below the threshold are assumed to have valid colors. The module now replaces invalid colors by valid ones based on proximity in the image’s x and y scale and in the luminance&nbsp;scale.</p> <p>Let us assume we have an area of overexposed highlights, e.g. a reflection on a glossy surface. The reflection has no color information and is displayed as pure white if the “highlight reconstruction” module is active. If this overexposed area is very close to or surrounded by non-overexposed pixels the new module transfers the color of the non-overexposed area to the uncolored highlights. The luminance values of the highlight pixels remain&nbsp;unchanged.</p> <h2>Example&nbsp;1</h2> <p>The following image is a typical&nbsp;case.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex1_1.jpg"><img alt="colorreconstruction_ex1_1" src="colorreconstruction_ex1_1_thumb.jpg" /></a></span></p> <p>The fountain statue has a glossy gold-plated surface. Even with proper metering there is virtually no chance to get a photo of this object on a sunny day without overexposed highlights&nbsp;– there is always a reflection of the sun somewhere on the statue unless I would have gone for an exact back-lit composition (which would have had its own problems). In this case we see overexposed highlights on the left shoulder and arm and partly on the head of the figure&nbsp;– distracting as the highlights are pure white and present a strong contrast to the warm colors of the&nbsp;statue.</p> <p>With the “color reconstruction” module activated I only needed to adjust the “luma threshold” to get the desired&nbsp;result.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_6.jpg"><img alt="colorreconstruction_scr_6" src="colorreconstruction_scr_6_thumb.jpg" /></a></span></p> <p>The highlights are converted into a gold-yellow cast which nicely blends with the surrounding color of the&nbsp;statue.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex1_2.jpg"><img alt="colorreconstruction_ex1_2" src="colorreconstruction_ex1_2_thumb.jpg" /></a></span></p> <p>The “luma threshold” parameter is key for the effect. When you decrease it, you tell darktable to assume that an ever growing portion of the pixels is to be regarded as having invalid colors which darktable needs to replace. At the same time the number of pixels which are regarded as having valid colors decreases. darktable only replaces an invalid color if a “good” fit can be found&nbsp;– good means that a source color is available within a certain distance in terms of image coordinates and luminance relative to the target. Therefore, when shifting the slider too far to the left at some point the results gets worse again because too few valid colors are available&nbsp;– the slider typically shows a marked “sweet spot” where results are best. The sweet spot depends on the specifics of your image and you need to find it by trial and&nbsp;error.</p> <p>The “color reconstruction” module uses a so called “bilateral grid” for fast color look-up (for further reading see [1]). Two parameters “spatial blur” and “range blur” control the details of the bilateral grid. With a low setting of “spatial blur” darktable will only consider valid colors that are found geometrically close to the pixels that need replacement. With higher settings colors get more and more averaged over a broader area of the image which delivers replacement colors that are more generic and less defined. This may or may not improve the visual quality of your image&nbsp;– you need to find out by trial and error. The same is true for the “range blur” which acts on the luminance axis of the bilateral grid. It controls how strong pixels with luminance values that are different from the target pixel, contribute to the color&nbsp;replacement.</p> <h2>Example&nbsp;2</h2> <p>Here is a further example (photo supplied by Roman&nbsp;Lebedev).</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex2_1.jpg"><img alt="colorreconstruction_ex2_1" src="colorreconstruction_ex2_1_thumb.jpg" /></a></span></p> <p>The image shows an evening scene with a sky typical of the day time shortly after sunset. As a starting point a basic set of corrections has already been applied: “highlight reconstruction” has been used with the “reconstruct in LCh” method. If we would have used the “clip highlights” method the small cloud behind the flag post would have got lost. In addition we applied a negative exposure compensation by -1.5 <span class="caps">EV</span> units in the “exposure” module, we used the “lens correction” module mainly to fix vignetting, and we used the “contrast brightness saturation” module for some boosting effect on contrast and&nbsp;saturation.</p> <p>Obviously the sky is overexposed and lacks good rendition of colors&nbsp;– visible by the arch-like area with wrong colors. With the “reconstruction module” and some tweaking of the parameters I got the following result, qualified by a much more credible evening&nbsp;sky:</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex2_2.jpg"><img alt="colorreconstruction_ex2_2" src="colorreconstruction_ex2_2_thumb.jpg" /></a></span></p> <p>These are the settings I&nbsp;used:</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_7.jpg"><img alt="colorreconstruction_scr_7" src="colorreconstruction_scr_7_thumb.jpg" /></a></span></p> <p>If you let darktable zoom into the image you will immediately see that reconstructed colors change with every zoom step. This is an unwanted side-effect of the way darktable&#8217;s pixel pipeline deals with zoomed-in images. As only the visible part of the image is processed for speed reasons our “color reconstruction” module “sees” different surroundings depending on the zoom level. These lead to different colors in the visible area. It is therefore recommended to adjust the “color reconstruction” parameters while viewing the full image in the darkroom. We&#8217;ll try to fix this behavior in future versions of the module<strong> [ see below for an update ]</strong>.</p> <h2>Example&nbsp;3</h2> <p>As a final example let&#8217;s look at this photo of the colorful window of a Spanish cathedral. Although this image is not heavily overexposed in the first place, the rose window clearly lacks color saturation, especially the centers of the lighter glass tiles look like washed out, which is mostly due to an too aggressive base curve. As an exercise let&#8217;s try how to fix this with “color&nbsp;reconstruction”.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex3_1.jpg"><img alt="colorreconstruction_ex3_1" src="colorreconstruction_ex3_1_thumb.jpg" /></a></span></p> <p>This time I needed to make sure that highlights do not get colored in some homogeneous orange-brownish hue that we would get when averaging all the various colors of the window tiles. Instead we need to take best care that each tile retains its individual color. Therefore, replacement colors need to be looked for in close geometrical proximity to the highlights. This requires a low setting of the “spatial blur” parameter. Here are the&nbsp;details:</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_scr_8.jpg"><img alt="colorreconstruction_scr_8" src="colorreconstruction_scr_8_thumb.jpg" /></a></span></p> <p>And here is the resulting image with some additional adjustment in the “shadows and highlights” module. The mood of the scene, which has been dominated by the rich and intensive primary colors, is nicely&nbsp;reconstructed.</p> <p><span><a href="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_ex3_2.jpg"><img alt="colorreconstruction_ex3_2" src="colorreconstruction_ex3_2_thumb.jpg" /></a></span></p> <p>One final word on authenticity. It should be obvious by now that the “color reconstruction” module only does an assumption of the colors that have been lost in the highlights. By no means can these colors be regarded as “authoritative”. You should be aware that “color reconstruction” is merely an interpretation rather than a faithful reproduction of reality. So if you strive for documentary photography, you should not rely on this technique but better go for a correct exposure in the first place.&nbsp;:)</p> <h2>Update</h2> <p>The behavior of this module on zoomed-in image views has been improved recently. In most cases you should now get a rendition of colors that is independent of the zoom level. There are a few known&nbsp;exceptions:</p> <ul> <li>If you have highlight areas which are adjacent to high-contrast edges, you may observe a slight magenta shift when zooming&nbsp;in.</li> <li>If you combine this module with the “reconstruct color” method of the “highlight reconstruction” module, highlights may be rendered colorless or in a wrong color when zooming&nbsp;in.</li> </ul> <p>These artifacts only influence image display&nbsp;– the final output remains unaffected. Still we recommend to finetune the parameters of this module while viewing the full&nbsp;image.</p> <ul> <li> <p>[1] Chen J., Paris S., and Durand F. <strong>2007</strong>.</p> <p>Real-time Edge-Aware Image Processing with the Bilateral&nbsp;Grid.</p> <p>In <em>Proceedings of the <span class="caps">ACM</span> <span class="caps">SIGGRAPH</span>&nbsp;conference.</em></p> <p><a href="https://groups.csail.mit.edu/graphics/bilagrid/bilagrid_web.pdf">https://groups.csail.mit.edu/graphics/bilagrid/bilagrid_web.pdf</a></p> </li> </ul><img src="https://www.darktable.org/2015/03/color-reconstruction/colorreconstruction_icon_wide.png" class="hidden-lede">upegelowSat, 07 Mar 2015 20:13:22 +0000tag:www.darktable.org,2015-03-07:2015/03/color-reconstruction/blogdevelopmentupcoming featurebilateralcolorcolor reconstructionhighlightsLaboverexposedreleased darktable 1.6.3https://www.darktable.org/2015/03/released-darktable-1-6-3/<p>We are happy to announce that darktable 1.6.3 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git&nbsp;tag:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.3">https://github.com/darktable-org/darktable/releases/tag/release-1.6.3</a></p> <p>Please only use our provided packages (&#8220;darktable-1.6.3.*&#8221; tar.xz and dmg) not the auto-created tarballs from github (&#8220;Source code&#8221;, zip and tar.gz). The latter are just git snapshots and will not work! Here&#8217;s the direct link to&nbsp;tar.xz:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.3/darktable-1.6.3.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.3/darktable-1.6.3.tar.xz</a></p> <p>and the <span class="caps">DMG</span>:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.3/darktable-1.6.3.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.3/darktable-1.6.3.dmg</a></p> <p>this is another point release in the stable 1.6.x&nbsp;series.</p> <div class="highlight"><pre>sha256sum darktable-1.6.3.tar.xz 852bb3d307b0e2b579d14cc162b347ba1193f7bc9809bb283f0485dfd22ff28d sha256sum darktable-1.6.3.dmg be568ad20bfb75aed703e2e4d0287b27464dfed1e70ef2c17418de7cc631510f </pre></div> <h2>Changes</h2> <ul> <li>Make camera import window&nbsp;transient</li> <li>Allow soft limits on&nbsp;radius</li> <li>Fix soft boundaries for black in&nbsp;exposure</li> <li>Change order of the profile/intent combo in export&nbsp;dialog</li> <li>Support read/write of chromaticities in <span class="caps">EXR</span></li> <li>Allow to default to :memory: db in&nbsp;config</li> <li>Add mime handler for non-raw image file&nbsp;formats</li> <li>Improved lens model name detection for Sony <span class="caps">SAL</span>&nbsp;lenses</li> </ul> <h2>Bug&nbsp;fixes</h2> <ul> <li>Fix buffer overrun in <span class="caps">SSE</span> clipping loop for highlight&nbsp;handling</li> <li>Prevent exporting when an invalid export/storage is&nbsp;selected</li> <li>Hopefully last fix for aspect ratios in crop and rotate (<a href="https://darktable.org/redmine/issues/9942">#9942</a>)</li> <li>No tooltip when dragging in monochrome (<a href="https://darktable.org/redmine/issues/10319">#10319</a>)</li> </ul> <h2>Raw&nbsp;support</h2> <ul> <li>Panasonic <span class="caps">LX100</span> (missing non-standard aspect ratio&nbsp;modes)</li> <li>Panasonic <span class="caps">TZ60</span></li> <li>Panasonic <span class="caps">FZ1000</span></li> <li><span class="caps">KODAK</span> <span class="caps">EASYSHARE</span> Z1015 <span class="caps">IS</span></li> <li>Canon <span class="caps">1DX</span> (missing sRAW&nbsp;modes)</li> <li>Canon A630 and <span class="caps">SX110IS</span> (<span class="caps">CHDK</span>&nbsp;raw)</li> </ul> <h2>white balance&nbsp;presets</h2> <ul> <li>Panasonic <span class="caps">FZ1000</span></li> <li>Panasonic <span class="caps">TZ60</span></li> <li>Panasonic <span class="caps">LX100</span></li> </ul> <h2>standard&nbsp;matrix</h2> <ul> <li>Canon Rebel T3 (non-european&nbsp;1100D)</li> </ul> <h2>enhanced&nbsp;matrix</h2> <ul> <li>nikon&nbsp;d750</li> </ul> <h2>noise&nbsp;profiles</h2> <ul> <li>Canon <span class="caps">EOS</span> <span class="caps">1DX</span></li> </ul><img src="https://www.darktable.org/2015/03/released-darktable-1-6-3/speicherstadt_wide.jpg" class="hidden-lede">houzWed, 04 Mar 2015 10:38:35 +0000tag:www.darktable.org,2015-03-04:2015/03/released-darktable-1-6-3/announcementdarktable releaseOn Lens Detection and Correctionhttps://www.darktable.org/2015/02/on-lens-detection-and-correction/<p>darktable (and some other projects, like for example ufraw) don&#8217;t do any real lens detection or correction by itself. We depend on two libraries which in most cases are provided by the Linux distribution you&#8217;re&nbsp;using.</p> <h2>Lens&nbsp;Detection</h2> <p>Many image files contain metadata about how the image was created. In case of digital camera images, a standard called Exif is used, this standard allows a camera to record many details about how an image was taken. However Exif is not a singular well defined specification, there is a common part that is well defined, and there are the so-called MakerNotes. The MakerNotes are parts of Exif that each vendors gets to do with whatever they like. They are typically completely undocumented, and have to be reverse-engineered to be able to handle them in any way. For most vendors this reverse engineering has been done to some degree and at least parts of the MakerNotes can be deciphered most of the&nbsp;time.</p> <p>It&#8217;s in these undocumented MakerNotes that the camera vendors tend to encode a lens id, this lens id typically is just a number for which the camera vendors provide no reference. And without a reference lookup table such a number is quite useless. Open source tools end up having to crowd source it and collate lensid&nbsp;– lensname pairs to be able to identify lenses. darktable, like many others, in particular uses the Exiv2&nbsp;library.</p> <p>You can use Exiv2&#8217;s command line tool to search for lens related tags in your own raw files like&nbsp;so:</p> <div class="highlight"><pre># exiv2 -pt IMG_1234.CR2 | grep -ai lens </pre></div> <p>And if you have a lens that&#8217;s already been reported to the Exiv2 project, you&#8217;ll see something along these&nbsp;lines:</p> <div class="highlight"><pre>Exif.CanonCs.LensType       Short       1  Canon EF-S 24mm f/2.8 STM </pre></div> <p>However if you have a fairly new lens, chances are it hasn&#8217;t been reported yet, and you&#8217;ll get something like&nbsp;this:</p> <div class="highlight"><pre>Exif.CanonCs.LensType       Short       1  (4154) </pre></div> <p>There are also cases, where Exiv2 might report the wrong lens, this happens because the vendors don&#8217;t preallocate numbers for third party lens manufacturers, so they end up having to occupy random lens ids, which can end up conflicting with new first party lenses later on. Exiv2 tries to resolve such conflicts on a best effort basis using some heuristics, like trying to match min/max focal lengths and min/max&nbsp;aperture.</p> <p>The Exiv2 project, like many open source projects, isn&#8217;t particularly overstaffed, so they tend to release fairly infrequently, thus the difference between what&#8217;s available in their development tree and what&#8217;s available in released distributions can diverge significantly. Practically this means that any lens newly released in the last 6 – 12 months is not likely to be detected&nbsp;properly.</p> <p>So if you have a lens that is not being properly reported, the best course of action is to check Exiv2&#8217;s development sources, to see if it&#8217;s already known (the line references may drift over time, so you might need to scroll around a&nbsp;bit):</p> <ul> <li>Canon bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/canonmn.cpp#L600">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/canonmn.cpp#L600</a></li> <li>Sony or Minolta bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/minoltamn.cpp#L1613">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/minoltamn.cpp#L1613</a></li> <li>Nikon bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/nikonmn.cpp#L1737">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/nikonmn.cpp#L1737</a></li> <li>Olympus bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/olympusmn.cpp#L1254">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/olympusmn.cpp#L1254</a></li> <li>Pentax bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/pentaxmn.cpp#L687">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/pentaxmn.cpp#L687</a></li> <li>Samsung bodies: <a href="http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/samsungmn.cpp#L52">http://dev.exiv2.org/projects/exiv2/repository/entry/trunk/src/samsungmn.cpp#L52</a></li> </ul> <p>If you can find your lens in one of the above source files, it means even though your current version of Exiv2 might not recognize the lens, the developers are already aware of it, and a future release of Exiv2 will likely be able to recognize that lens. We highly recommend against trying to update your Exiv2 library&nbsp;manually.</p> <p>If you still can&#8217;t find your lens, please file a feature request with the Exiv2 project here (and yes, you&#8217;ll need to create an&nbsp;account):</p> <ul> <li><a href="http://dev.exiv2.org/projects/exiv2/issues/new">http://dev.exiv2.org/projects/exiv2/issues/new</a></li> </ul> <p>Please include the following&nbsp;information:</p> <ul> <li> <p>Full output&nbsp;of:</p> <div class="highlight"><pre>exiv2 -pt FILENAME | grep -ai lens </pre></div> </li> <li> <p>The proper full name of the lens (be mindful of&nbsp;capitalization)</p> </li> <li>Preferably include a link to the lens&#8217; product page on the manufacturers&nbsp;website</li> <li>Attach a sample low resolution <span class="caps">JPEG</span> (unmodified, most cameras allow you to shoot lower resolution&nbsp;JPEGs)</li> </ul> <h2>Lens&nbsp;Correction</h2> <p>Presuming Exiv2 (and thus darktable) detects your lens properly, it passes the lens name off to the Lensfun library, which searches its own lens correction database for that particular name. And if it finds a match, it applies that correction data to your&nbsp;image.</p> <p>But for this to work the name Exiv2 supplies and the name in the Lensfun database need to be a fairly close match. As far as I&#8217;m aware Lensfun does ignore punctuation, but other than that, you need a proper match for the correction to be&nbsp;automatic.</p> <p>Also keep in mind that the lens correction data isn&#8217;t provided by the vendors, so this is yet again something that needs to be crowd sourced. However in stark contrast to the Exiv2 situation, the process of generating decent correction data is quite a bit more&nbsp;involved.</p> <p>So if you&#8217;re missing your particular lens in your particular version of Lensfun, you can check here to see if your lens might already have correction data in Lensfun&#8217;s development&nbsp;tree:</p> <ul> <li><a href="http://lensfun.sourceforge.net/lenslist/">http://lensfun.sourceforge.net/lenslist/</a></li> <li><a href="https://sourceforge.net/p/lensfun/code/ci/master/tree/data/db/">https://sourceforge.net/p/lensfun/code/ci/master/tree/data/db/</a></li> </ul> <p>As you might notice, not all types of correction are available for all&nbsp;lenses.</p> <p>If you want to generate correction data for your own lenses and submit it to the Lensfun project, please have a look&nbsp;here:</p> <ul> <li><a href="http://lensfun.sourceforge.net/calibration/">http://lensfun.sourceforge.net/calibration/</a></li> </ul><img src="https://www.darktable.org/2015/02/on-lens-detection-and-correction/lens_wide.jpg" class="hidden-lede">pmjdebruijnThu, 12 Feb 2015 20:10:37 +0000tag:www.darktable.org,2015-02-12:2015/02/on-lens-detection-and-correction/blogreleased darktable 1.6.2https://www.darktable.org/2015/02/released-darktable-1-6-2/<p>We are happy to announce that darktable 1.6.2 has been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git&nbsp;tag:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.2">https://github.com/darktable-org/darktable/releases/tag/release-1.6.2</a></p> <p>Please only use our provided packages (green buttons tar.xz and dmg) not the auto-created tarballs from github (grey buttons, zip and tar.gz). The latter are just git snapshots and will not work! Here&#8217;s the direct link to&nbsp;tar.xz:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.2/darktable-1.6.2.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.2/darktable-1.6.2.tar.xz</a></p> <p>and the <span class="caps">DMG</span>:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.2/darktable-1.6.2.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.2/darktable-1.6.2.dmg</a></p> <p>this is a new stable point release, no big new features&nbsp;added.</p> <div class="highlight"><pre>sha256sum darktable-1.6.2.tar.xz 66ee5f8ce5df9169211980fa374dc686eaf74322e0bd363a56612ae808bdc5bd sha256sum darktable-1.6.2.dmg bd613994c9754313144e8804026b7faf672fa816801b687ff7d64a8d82880332 </pre></div> <h2>General&nbsp;improvements</h2> <ul> <li>Better names for key accels (no more <Primary>)</li> <li>Local gallery export limited to useful web formats (<span class="caps">JPEG</span>/<span class="caps">PNG</span>/WebP)</li> <li>Add a way to control the brush size with&nbsp;keys</li> <li>Default X-Trans Demosaic to markesteijn (single&nbsp;pass)</li> </ul> <h2>Bugfixes</h2> <ul> <li>Fix <span class="caps">IPTC</span> Keyword reading for&nbsp;real</li> <li>rawspeed: support short values in <span class="caps">DNG</span>&nbsp;ActiveArea</li> <li>really disable parallel&nbsp;export</li> <li>remove special characters from style&nbsp;export</li> <li>Cropping aspect ratio fixes (<a href="https://darktable.org/redmine/issues/9942">#9942</a>, <a href="https://darktable.org/redmine/issues/10265">#10265</a>)</li> <li>Some fixes to&nbsp;lua/masks/brushes</li> </ul> <h2>Camera&nbsp;support</h2> <ul> <li>Pentax *ist <span class="caps">DS</span></li> <li>Pentax *ist <span class="caps">DL2</span></li> <li>Pentax <span class="caps">K110D</span></li> <li>Sony A7 <span class="caps">II</span></li> <li>Sony <span class="caps">ILCE</span>-3500</li> <li>Nikon 1&nbsp;S2</li> <li>Olympus&nbsp;E-450</li> <li>Panasonic <span class="caps">LX1</span></li> <li>Panasonic G3 (aspect ratio&nbsp;modes)</li> <li>Samsung <span class="caps">NX1</span> blackpoint&nbsp;finetuning</li> <li>Fuji X-E1 blackpoint&nbsp;finetuning</li> </ul> <h2>White balance&nbsp;presets</h2> <ul> <li>7D Mark <span class="caps">II</span>&nbsp;(updated)</li> <li>Olympus&nbsp;E-M1</li> <li>Sony&nbsp;A99</li> </ul><img src="https://www.darktable.org/2015/02/released-darktable-1-6-2/waterwheel.jpg" class="hidden-lede">houzMon, 02 Feb 2015 22:27:22 +0000tag:www.darktable.org,2015-02-02:2015/02/released-darktable-1-6-2/announcementdarktable releasereleased darktable 1.6.1https://www.darktable.org/2015/02/released-darktable-1-6-1/<p>We are happy to announce that darktable 1.6.1 has been released. Due to an oversight on our side we forgot to do this announcement back when the actual release was done, so this is mostly for historical&nbsp;reasons.</p> <p>The release notes and relevant downloads can be found attached to this git tag: <a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.1">https://github.com/darktable-org/darktable/releases/tag/release-1.6.1</a> Please only use our provided packages (green buttons tar.xz and dmg) not the auto-created tarballs from github (grey buttons, zip and tar.gz). The latter are just git snapshots and will not work! Here&#8217;s the direct link to tar.xz: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.1/darktable-1.6.1.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.1/darktable-1.6.1.tar.xz</a> and the <span class="caps">DMG</span>: <a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.1/darktable-1.6.1.dmg">https://github.com/darktable-org/darktable/releases/download/release-1.6.1/darktable-1.6.1.dmg</a></p> <p>this is a point release which fixes a couple of minor issues in the recent feature release 1.6.0 (such as a crash with images greater than 134&nbsp;megapixels).</p> <p>happy holidays everyone&nbsp;:)</p> <p>sha1sums:</p> <div class="highlight"><pre>e3e0014361081364b56b6c02e886ba2fba6c6887 darktable-1.6.1.tar.xz 7173938cad7cd4c4a86de9438517c17166008f3c darktable-1.6.1.dmg </pre></div> <h2>General&nbsp;improvements:</h2> <ul> <li>Hide mouse in slideshow&nbsp;mode</li> <li>Show option for txt overlay in the preferences&nbsp;Bugfixes:</li> <li>ImageIO format <span class="caps">TIFF</span>: use scanline-based I/O. Fixes bug&nbsp;#10230</li> <li>exif: always try to use Exiv2&#8217;s lens detection for&nbsp;Olympus</li> <li>demosaic: fix&nbsp;assertion</li> <li>Do not deadlock in input color profile on unsupported input&nbsp;profiles</li> <li>ensure that quick access preset menu is displayed&nbsp;correctly</li> <li>Properly disconnect from the mipmap signal when leaving tethering&nbsp;mode</li> <li>Avoid integer overflow on big&nbsp;images</li> <li><span class="caps">OSX</span> HiDPI&nbsp;fixes</li> <li>Lua&nbsp;fixes</li> </ul> <h2>Modules:</h2> <ul> <li>masks: enhance mouse hover&nbsp;detection</li> <li>masks: allow smaller radius for circle and&nbsp;ellipse</li> <li>spots: fix icon states bug&nbsp;#10216</li> <li>spots: rounded correction. Fix bug&nbsp;#10045</li> <li>spots: legacy_params(): adapt for latest mask&nbsp;changes</li> <li>flip: fix legacy presets&nbsp;update</li> <li>exposure: enable soft boundaries for&nbsp;black</li> <li>zonesystem: remove stale button_release()&nbsp;callback</li> <li>graduatednd: avoid rounding issues for rotation after moving whole line. Fixes bug&nbsp;#10241</li> </ul> <h2>Camera&nbsp;support:</h2> <ul> <li>Pentax&nbsp;*istDL</li> <li>7D Mark <span class="caps">II</span>&nbsp;sRAW/mRAW</li> <li>Samsung <span class="caps">NX1</span></li> </ul> <h2>White balance&nbsp;presets:</h2> <ul> <li>7D Mark <span class="caps">II</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX7</span></li> </ul><img src="https://www.darktable.org/2015/02/released-darktable-1-6-1/fireworks_wide.jpg" class="hidden-lede">houzSun, 01 Feb 2015 16:17:33 +0000tag:www.darktable.org,2015-02-01:2015/02/released-darktable-1-6-1/announcementdarktable releasePrint Modulehttps://www.darktable.org/2015/01/print-module/<p>After being in the camera our pictures deserve some love and to be shared. Every photographer will tell you the joy of having a picture in the hands. At last the pixels have taken form on a piece of paper to give birth to a photography which can be put on the&nbsp;wall!</p> <p>Though, printing is not easy, there are many technical aspects to take into account. To streamline this process darktable has been added a print&nbsp;module.</p> <h1>The print&nbsp;module</h1> <p>Nothing fancy there, just the page displayed as it will be printed on the paper. The display will show the page itself, the borders and the image properly&nbsp;aligned:</p> <p><span><a href="https://www.darktable.org/2015/01/print-module/dt-print-modulev2.jpg"><img alt="dt-print-modulev2" src="dt-print-modulev2_thumb.jpg" /></a></span></p> <ul> <li>the white area is the paper with the proper aspect&nbsp;ratio</li> <li>the little black markers in each corner are representing the non printable area. These markers are not displayed for printers supporting border-less&nbsp;mode.</li> <li>the gray area is the print area, that is, the paper minus the&nbsp;borders</li> <li>finally the picture take place on the print area with the proper alignment, above the alignment is set to&nbsp;top.</li> </ul> <h1>The print&nbsp;settings</h1> <p>Let&#8217;s look at the print settings offered by this&nbsp;module:</p> <p><span><a href="https://www.darktable.org/2015/01/print-module/dt-print-settingsv2.jpg"><img alt="dt-print-settingsv2" src="dt-print-settingsv2_thumb.jpg" /></a></span></p> <p>Using the control offered we&nbsp;can:</p> <ul> <li>select the&nbsp;printer</li> <li>set the printer profile and intent which is the most important&nbsp;settings</li> <li>select the&nbsp;paper</li> <li>set the orientation of the page either landscape or&nbsp;portrait</li> <li>select the unit for the border&nbsp;values</li> <li>set the borders or each side separately or identically using the lock&nbsp;button</li> <li>use one of the nine possible alignment of the picture on the page : left, right, bottom-right, centered&nbsp;&#8230;</li> <li>specify the way to export the picture : export profile and&nbsp;intent</li> <li>add a style during the export, this comes handy to add a signature or whatever watermark for example. it is also the way to adjust the exposure, indeed when printing B&amp;W pictures it is often needed to add some&nbsp;lights.</li> </ul> <p>This printer profile and intent is important to get correct color rendition on the print. This is the only way to ensure that the color displayed on the screen will be the one found on the paper as&nbsp;expected.</p> <p>But be warned, a printer profile is valid for a specific <em>paper</em>, <em>printer</em> <strong>and</strong> <em>driver</em>. So profiles offered by vendors on the Internet cannot be used here. Indeed, if the profile match the printer and paper they have been created for the Windows or MacOS drivers. Using them won&#8217;t give you a correct print rendition. One solution is to create the profile yourself for your graphic work-flow. This is outside the scope of this article but you can <a href="https://pobry.blogspot.fr/2013/06/creating-icc-profile-on-gnulinux.html">read the process on another article I have written</a> some time ago. There is also companies offering profiling for you if you&nbsp;prefer.</p> <p>The last widget is the print button, click on it and the picture will be sent to the corresponding&nbsp;printer.</p> <h1>How to setup for using the print&nbsp;module?</h1> <p>This is an important point to note. The print module is based on <span class="caps">CUPS</span>. So you need to install <span class="caps">CUPS</span> on your machine for it to work&nbsp;properly.</p> <p>When it is installed head your Web browser to <a href="http://localhost:631">http://localhost:631</a> and add your printer there. Depending on the printer there is few or a lot of parameters to configure on this interface. The important ones&nbsp;are:</p> <ul> <li>Uncorrected : If the printer offers different color settings select the one that does nothing. That is, asking the driver to not try to be smart at&nbsp;all.</li> <li>Borderless : If you intend to print borderless you need to activate this option on the <span class="caps">CUPS</span>&nbsp;interface.</li> </ul> <p>Note that when you have configured the printer on <span class="caps">CUPS</span> you should never ever change the settings there if you are using a print profile. Indeed the print profile depends on the <span class="caps">CUPS</span> rendering settings. You have been&nbsp;warned!</p><img src="https://www.darktable.org/2015/01/print-module/dt-print-settingsv2.jpg" class="hidden-lede">pascalobryMon, 26 Jan 2015 21:01:25 +0000tag:www.darktable.org,2015-01-26:2015/01/print-module/upcoming featureLuminosity Masks in darktablehttps://www.darktable.org/2015/01/luminosity-masks-in-darktable/<p>Pat David has a great <a href="https://blog.patdavid.net/">blog</a> on photoediting in <a href="https://www.gimp.org/"><span class="caps">GIMP</span></a>. I recently read his <a href="https://blog.patdavid.net/2013/11/getting-around-in-gimp-luminosity-masks.html">post</a> on luminosity masks and was fairly impressed. Can darktable do something similar? Yes&nbsp;– they&#8217;re a special case of <a href="/usermanual/en/parametric_mask.html">parametric masks</a>.</p> <p>I thought I&#8217;d post a quick tutorial on luminosity masks using parametric masks. First, I strongly suggest you read Pat David&#8217;s <a href="https://blog.patdavid.net/2013/11/getting-around-in-gimp-luminosity-masks.html">post</a> and thoroughly understand what&#8217;s going&nbsp;on.</p> <p>A quick and simplistic explanation follows: Normally, if we make a selection and, say, adjust the brightness dramatically in that selection, we get a sharp (and ugly) transition near the edge of the&nbsp;selection:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/sharpedge.png"><img alt="sharpedge" src="sharpedge_thumb.png" /></a></span></p> <p>The quick solution is to blur the mask (feathering in <span class="caps">GIMP</span>). Feathering simply makes the transition less&nbsp;sharp:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/sharpedge1.png"><img alt="sharpedge1" src="sharpedge1_thumb.png" /></a></span></p> <p>Better, but still too sharp a transition. You can feather it even more if you wish, but however much you feather it, the transition is determined too heavily by your choice of selection (a rectangle in this case). We&#8217;d really like is a way to select based on the actual <em>contents</em> of the&nbsp;image.</p> <p>What luminosity masks do is let you select regions in your image in proportion to their brightness. So the L layer in Pat&#8217;s article fully selects completely bright pixels, and only partially selects pixels that are half as bright, and doesn&#8217;t select pixels that are not bright at all. When you now brighten the image, the effect of the brightening is greatest on the brightest pixels, and least on the darkest pixels. There are no sharp transitions like what I have in my screenshots&nbsp;above.</p> <p>In that sense, some refer to these masks as <em>self-feathering</em>.</p> <p>So how can we do this in&nbsp;darktable?</p> <p>Consider the following&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/baseimage.jpg"><img alt="baseimage" src="baseimage_thumb.jpg" /></a></span></p> <p>Let&#8217;s say I want to brighten it. Let me apply an aggressive&nbsp;curve:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/curve.png"><img alt="curve" src="curve_thumb.png" /></a></span></p> <p>The result&nbsp;is:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/fullbrighten.jpg"><img alt="fullbrighten" src="fullbrighten_thumb.jpg" /></a></span></p> <p>Let&#8217;s use this as a &#8220;control&#8221; for the effect of luminosity&nbsp;masks.</p> <h2>The L&nbsp;mask</h2> <p>Using Pat&#8217;s technique, let&#8217;s look at the L mask in <span class="caps">GIMP</span>:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/lmaskgimp.png"><img alt="lmaskgimp" src="lmaskgimp_thumb.png" /></a></span></p> <p>Brighter areas mean they are &#8220;more&#8221; selected. This means any operation we perform on the image will be applied more on the brighter&nbsp;pixels.</p> <p>How do we get this in&nbsp;darktable?</p> <p>Go to the Tone Curve module, set blend to parametric mask. Now comes the important part: In the Input sliders, select the <em>top left</em> triangle and move it all the way to the&nbsp;right:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/lmaskdt.png"><img alt="lmaskdt" src="lmaskdt_thumb.png" /></a></span></p> <p>The resulting mask looks&nbsp;like:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/lmaskdtyellow.png"><img alt="lmaskdtyellow" src="lmaskdtyellow_thumb.png" /></a></span></p> <p>What did I do here? To fully understand it, you should read the <a href="/usermanual/en/parametric_mask.html">parametric masks</a> page in the darktable manual. By sliding the upper left triangle all the way to right, I told it to <em>fully</em> select the brightest pixels, <em>not</em> select the darkest pixels, and do a linear interpolation for all the intermediate pixels (so a 50% bright pixel is &#8220;half&#8221;&nbsp;selected).</p> <p>Another way of looking at it: Apply the module to all the pixels, but apply an opacity on each pixel depending on its&nbsp;luminosity.</p> <p>How does the image look with the same curve as&nbsp;before?</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/lbrightendt.jpg"><img alt="lbrightendt" src="lbrightendt_thumb.jpg" /></a></span></p> <h2>The D&nbsp;Mask</h2> <p>To create the D mask, Pat selected the whole image, and subtracted the L channel from&nbsp;it.</p> <p>In darktable, we simply do the opposite of what we did for the L mask. We now move the <em>top right</em> triangle to the extreme&nbsp;left:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/dmaskdt.png"><img alt="dmaskdt" src="dmaskdt_thumb.png" /></a></span></p> <p>The mask now looks&nbsp;like:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/dmaskdtyellow.png"><img alt="dmaskdtyellow" src="dmaskdtyellow_thumb.png" /></a></span></p> <p>The result of the&nbsp;curve:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/dbrightendt.jpg"><img alt="dbrightendt" src="dbrightendt_thumb.jpg" /></a></span></p> <h2>The M&nbsp;Mask</h2> <p>What about medium? Let&#8217;s&nbsp;try:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/mmaskdt.png"><img alt="mmaskdt" src="mmaskdt_thumb.png" /></a></span></p> <p>Here we moved both the upper triangles to the&nbsp;center.</p> <p>The resulting image&nbsp;is:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/mtoobright.jpg"><img alt="mtoobright" src="mtoobright_thumb.jpg" /></a></span></p> <p>This is too strong! If I do the same using Pat&#8217;s luminosity masks in <span class="caps">GIMP</span>, I&nbsp;get:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/mbrightengimp.jpg"><img alt="mbrightengimp" src="mbrightengimp_thumb.jpg" /></a></span></p> <p>This is not as strong as the darktable version. What went&nbsp;wrong?</p> <p>If we read Pat&#8217;s description, what he does is intersect the D and L channels. This results in the middle bright pixel only being 50% selected. In our darktable version, we have it 100% selected. So we compensate by setting the opacity to 50% and we get very similar results to <span class="caps">GIMP</span>.</p> <p>The resulting mask&nbsp;is:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/mmaskdtyellow.png"><img alt="mmaskdtyellow" src="mmaskdtyellow_thumb.png" /></a></span></p> <h2>The Other&nbsp;Masks</h2> <p>What about the <span class="caps">DD</span>&nbsp;mask?</p> <p>This is obtained by subtracting the L channel from the D mask. The equivalent mask in darktable&nbsp;is:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/ddmaskdt.png"><img alt="ddmaskdt" src="ddmaskdt_thumb.png" /></a></span></p> <p>This is the same as the D mask, but notice I moved the lower right triangle half way to the left. This has the effect that anything that is more than 50% bright will not be selected <em>at all</em>.</p> <p>The resulting mask&nbsp;is:</p> <p><span><a href="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/ddmaskdtyellow.png"><img alt="ddmaskdtyellow" src="ddmaskdtyellow_thumb.png" /></a></span></p> <p>If we wanted <span class="caps">DDD</span>, we&#8217;d move the lower triangle two thirds of the way instead of&nbsp;half.</p> <h2>Technical&nbsp;Details</h2> <p>Why did this work? Let&#8217;s jump into the&nbsp;math:</p> <p>Let the luminosity of a pixel be denoted by <span class="math">\(lp\)</span>. A value of 1 means fully bright, 0 means fully dark, and 0.5 means 50% bright. In the L mask, <span class="math">\(lp\)</span> gives the percentage selection directly (1 means fully selected, 0.5 means half selected,&nbsp;etc).</p> <p>To get the D mask, we select the whole image (which means each pixel is <em>fully</em> selected), and subtract the luminosity from it. Thus, in the D mask, the &#8220;selectedness&#8221; is <span class="math">\(1-lp\)</span>. So if <span class="math">\(lp\)</span> was very bright (close to 1), it is now barely selected, as <span class="math">\(1-lp\)</span> will be a small number close to 0. Similarly, if it was originally very dark (close to 0), <span class="math">\(1-lp\)</span> is now close to 1 and it is almost fully&nbsp;selected.</p> <p>Does my darktable D mask translate to the same thing? Yes, as I believe darktable does a linear&nbsp;interpolation.</p> <p>What about the <span class="caps">DD</span> mask? Pat obtained it by subtracting the L channel from the D channel. In terms of our equations, this is just <span class="math">\(1-2lp\)</span>. Note that if <span class="math">\(lp \geq 0.5\)</span>, (greater than 50% brightness), then <span class="math">\(1-2lp \leq 0\)</span>, which means it is not selected at all. Only pixels less than 50% brightness are selected in this&nbsp;mask.</p> <p>Again, my darktable <span class="caps">DD</span> mask translates to the same mask, as I cut it off at 0.5. Since darktable uses linear interpolation, the slope from 0.5 to 0 will be double the slope I had in D. Hence, the factor of 2 in <span class="math">\(1-2lp\)</span>.</p> <p>I&#8217;m assuming the M mask translates as well but I&#8217;m not 100% sure what the algorithm <span class="caps">GIMP</span> uses to perform&nbsp;intersection.</p> <h2>Summary</h2> <p>So there you have it: Luminosity masks in&nbsp;darktable.</p> <p>But we do not need to constrain ourselves to the &#8220;usual&#8221; luminosity masks. We can fiddle with the triangles a little more to get many different kinds of masks. Moreover, our masks need not merely be <em>luminosity</em> masks. We can apply this logic to the hue, a and b channels (or R, G and B channels for the modules that work in <span class="caps">RGB</span> space). Or do a combination of both! Usually when I have  mask, I couple luminosity with one of the color channels for a more refined&nbsp;selection.</p> <p>The important message, though, is that we can easily avoid sharp transitions by varying the upper and lower triangles&nbsp;independently.</p> <p>For more on luminosity masks, I strongly recommend <a href="http://goodlight.us/writing/tutorials.html">Tony Kuyper&#8217;s&nbsp;tutorials.</a></p> <p>An earlier version of this article appeared <a href="http://blog.nawaz.org/posts/2015/Jan/luminosity-masks-in-darktable/">here.</a></p> <script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) { var align = "center", indent = "0em", linebreak = "false"; if (false) { align = (screen.width < 768) ? "left" : align; indent = (screen.width < 768) ? "0em" : indent; linebreak = (screen.width < 768) ? 'true' : linebreak; } var mathjaxscript = document.createElement('script'); mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#'; mathjaxscript.type = 'text/javascript'; mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; mathjaxscript[(window.opera ? "innerHTML" : "text")] = "MathJax.Hub.Config({" + " config: ['MMLorHTML.js']," + " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," + " jax: ['input/TeX','input/MathML','output/HTML-CSS']," + " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," + " displayAlign: '"+ align +"'," + " displayIndent: '"+ indent +"'," + " showMathMenu: true," + " messageStyle: 'normal'," + " tex2jax: { " + " inlineMath: [ ['\\\\(','\\\\)'] ], " + " displayMath: [ ['$$','$$'] ]," + " processEscapes: true," + " preview: 'TeX'," + " }, " + " 'HTML-CSS': { " + " styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," + " linebreaks: { automatic: "+ linebreak +", width: '90% container' }," + " }, " + "}); " + "if ('default' !== 'default') {" + "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "}"; (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript); } </script><img src="https://www.darktable.org/2015/01/luminosity-masks-in-darktable/lmaskdtyellow_wide.jpg" class="hidden-lede">mueenSun, 18 Jan 2015 20:43:58 +0000tag:www.darktable.org,2015-01-18:2015/01/luminosity-masks-in-darktable/blogReleased darktable 1.6https://www.darktable.org/2014/12/released-darktable-1-6/<p>We are happy to announce that almost after one year darktable 1.6 has just been&nbsp;released.</p> <p>The release notes and relevant downloads can be found attached to this git&nbsp;tag:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-1.6.0">https://github.com/darktable-org/darktable/releases/tag/release-1.6.0</a></p> <p>Please only use our provided packages (green buttons tar.xz and dmg) not the auto-created tarballs from github (grey buttons, zip and tar.gz). The latter are just git snapshots and will not work! Here&#8217;s the direct link to&nbsp;tar.xz:</p> <p><a href="https://github.com/darktable-org/darktable/releases/download/release-1.6.0/darktable-1.6.0.tar.xz">https://github.com/darktable-org/darktable/releases/download/release-1.6.0/darktable-1.6.0.tar.xz</a></p> <p>If you are using any distribution&#8217;s packages, please be patient for the packager to catch up and provide the relevant&nbsp;updates.</p> <p>Thanks to our great community and all the contributors for making this&nbsp;possible!</p> <p>See the development&nbsp;visualised:</p> <div style="text-align: center"> <iframe width="650" height="400" src="https://www.youtube-nocookie.com/embed/N-ST2PDcDUg?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> </div> <p>Enjoy the&nbsp;release!</p> <h1>New&nbsp;features</h1> <h2>general/misc</h2> <ul> <li>high <span class="caps">DPI</span> monitor&nbsp;support</li> <li>signed <span class="caps">OSX</span>&nbsp;packages</li> <li>map view now allows to only show images from the current collection on the&nbsp;map</li> <li>slideshow</li> <li>darktable-cli now works without a running X server for use on headless&nbsp;systems</li> <li>support for audio notes&nbsp;playback</li> <li>sticky&nbsp;preview</li> <li>added the option to overwrite files when exporting to&nbsp;disk</li> <li>crawler that syncs all xmp files on&nbsp;start</li> <li>support huge images (&gt; 32 bit pixel index). darktable can open 26770x13385 TIFFs and should in theory be able to process arbitrary sized images. don&#8217;t try this on a 32 bit system&nbsp;though!</li> <li>lens iop presets are copy/pastable between different&nbsp;images</li> </ul> <h2>output</h2> <ul> <li>tiff read/write rewritten, works on 32-bit float now, supports&nbsp;compression</li> <li>allow setting <span class="caps">PPI</span> for exported JPEGs, defaulting to&nbsp;300</li> <li>pwstorage&nbsp;libsecret</li> <li>use <span class="caps">HTTPS</span> when exporting to&nbsp;flickr</li> </ul> <h2>darkroom</h2> <ul> <li>new defringe image&nbsp;operation</li> <li>automatic mode for levels&nbsp;module</li> <li>allow to disable white&nbsp;balance</li> <li>new colour reconstruction mode for highlight recovery that tries to add both colour and structure to clipped areas. thanks to a1ex from magic&nbsp;lantern!</li> <li>better basecurve tool to create basecurves from raw/jpg&nbsp;pairs</li> <li>soft boundaries in sliders (right click and type 8 in exposure compensation for&nbsp;example)</li> <li>input colour gamut mapping to avoid problems with saturated blues causing purple&nbsp;artefacts</li> </ul> <h2>colour</h2> <ul> <li>color conversion speedup (openmp for lcms2&nbsp;case)</li> <li>add linear Rec2020 as a build-in&nbsp;profile</li> <li>embedded icc profile support for png/tiff&nbsp;(read/write)</li> </ul> <h2>lua&nbsp;scripting</h2> <ul> <li>copy, move, reset and delete images via&nbsp;lua</li> <li>handle progress bars via&nbsp;lua</li> <li>limited manipulation of libs an views <span class="caps">UI</span> via&nbsp;lua</li> <li>import and export styles via&nbsp;lua</li> <li>trigger lua when the grouping mode&nbsp;changes</li> <li>trigger lua when the overlay mode&nbsp;changes</li> <li>trigger lua when the active view&nbsp;changes</li> <li>manipulate snapshots via&nbsp;lua</li> <li>handle more types of preferences, including enums, directories and file&nbsp;names</li> <li>lua <span class="caps">API</span> is now versioned: use <code>darktable.configuration.check_version</code> to&nbsp;check</li> <li>lua <span class="caps">API</span> incompatibilities: <code>darktable.modules</code> has been removed, use <code>darktable.new_format</code> and <code>darktable.new_storage</code> to access the&nbsp;constructors</li> </ul> <h2>performance&nbsp;improvements</h2> <ul> <li>many speed improvements by adding sse code for image&nbsp;operations</li> <li>make white balance work&nbsp;faster</li> <li>make invert work&nbsp;faster</li> <li>much faster exr export with optional compression (multicore&nbsp;support)</li> <li>speedup of pfm&nbsp;writing</li> <li>speedup of amaze. it is still slow but not as bad as it used to&nbsp;be</li> </ul> <h2>internal&nbsp;improvements</h2> <ul> <li>module parameter&nbsp;introspection</li> <li>clang/address-sanitizer/etc compiler warnings&nbsp;fixed</li> <li>flip iop used for raw auto-orientation (simplifies&nbsp;code)</li> <li>complete rawspeed migration for raw&nbsp;loading</li> </ul> <h2>bug&nbsp;fixes</h2> <ul> <li>hdr bracketing&nbsp;fixes</li> <li>masks cleanup and&nbsp;bugfixes</li> <li>correct lens detection for compact&nbsp;cameras</li> <li>avoid clipping in vignette, lowpass, shadows <span class="amp">&amp;</span> highlights, a/b channels of colorcontrast and&nbsp;tonecurve</li> </ul> <h2>new cameras&nbsp;supported!</h2> <ul> <li>initial support for x-trans&nbsp;sensors</li> <li>new demosaicing algorithms: markesteijn for x-trans and vng for x-trans and regular bayer&nbsp;raws</li> <li>There is support for several dozens of new cameras, and loads of new noise profiles for denoising have been added. Check out the full list in the release notes on&nbsp;github.</li> </ul> <h2>and of course&nbsp;also</h2> <ul> <li>updated&nbsp;usermanual</li> <li>lots of small performance improvements and code&nbsp;cleanup</li> </ul><img src="https://www.darktable.org/2014/12/released-darktable-1-6/dt_shirt_text_wide.jpg" class="hidden-lede">jcsogoSun, 07 Dec 2014 21:58:59 +0000tag:www.darktable.org,2014-12-07:2014/12/released-darktable-1-6/announcementdarktable release'1.6'announcementdarktablereleaseRelease Candidate for darktable 1.6https://www.darktable.org/2014/11/release-candidate-for-darktable-1-6/<p>We are happy to announce the first release candidate for the upcoming darktable&nbsp;1.6.</p> <p>In case you are wondering about the versioning scheme: we use odd numbers as development versions and even numbers for stable releases. This means the release candidate, tagged as &#8220;darktable-1.5.1&#8221;, is an unstable development version&nbsp;– the final stable version will bear the tag&nbsp;&#8220;darktable-1.6.0&#8221;.</p> <p>Grab the tarball and <span class="caps">OS</span> X package from the github release&nbsp;page:</p> <p><a href="https://github.com/darktable-org/darktable/releases/tag/release-1.5.1">https://github.com/darktable-org/darktable/releases/tag/release-1.5.1</a></p> <p>Concerning Pascal&#8217;s Unstable <span class="caps">PPA</span>: only Ubuntu 14.04 (<span class="caps">LTS</span>) is supported, and there will be no support for future non-<span class="caps">LTS</span> releases. Of course the stable <span class="caps">PPA</span> will still serve all active Ubuntu versions starting at the most recent <span class="caps">LTS</span>.</p> <p>And here are the preliminary release candidate release&nbsp;notes:</p> <h2>New&nbsp;features:</h2> <ul> <li>initial support for x-trans&nbsp;sensors</li> <li>input colour gamut&nbsp;mapping</li> <li>slideshow</li> <li>better basecurve tool to create basecurves from raw/jpg&nbsp;pairs</li> <li>soft boundaries in sliders (right click and type 8 in exposure compensation for&nbsp;example)</li> <li>support huge images (&gt; 32 bit pixel&nbsp;index)</li> <li>pwstorage&nbsp;libsecret</li> <li>new defringe image&nbsp;operation</li> <li>automatic&nbsp;levels</li> <li>big exr export speedup (multicore&nbsp;support)</li> <li>color conversion speedup (openmp for lcms2&nbsp;case)</li> <li>tiff read/write rewritten, works on 32-bit float&nbsp;now</li> <li>embedded icc profile support for png/tiff&nbsp;(read/write)</li> </ul> <h2>Internal&nbsp;improvements:</h2> <ul> <li>module parameter&nbsp;introspection</li> <li>clang/address-sanitizer/etc compiler warnings&nbsp;fixed</li> <li>flip iop used for raw auto-orientation (simplifies&nbsp;code)</li> <li>libraw not used any more for a lot of file formats (faster loading via rawspeed&nbsp;now)</li> </ul> <h2>Bug&nbsp;fixes:</h2> <ul> <li>hdr bracketing&nbsp;fixes</li> <li>masks cleanup and&nbsp;bugfixes</li> <li>lens iop presets are&nbsp;working</li> <li>correct lens detection for compact&nbsp;cameras</li> <li>updated&nbsp;usermanual</li> <li>lots of performance improvements and code&nbsp;cleanup</li> </ul> <h2>New camera support / new noise&nbsp;profiles</h2> <p>There is support for several dozens of new cameras, and loads of new noise profiles for denoising have been added. Check out the full list in the release notes on&nbsp;github.</p> <p>We are still looking for aspect ratio mode samples for the following camera&nbsp;models:</p> <ul> <li>Panasonic <span class="caps">DMC</span>-G1 <a href="https://darktable.org/redmine/issues/10149">#10149</a></li> <li>Panasonic <span class="caps">DMC</span>-G3 <a href="https://darktable.org/redmine/issues/10150">#10150</a></li> <li>Panasonic <span class="caps">DMC</span>-G5 <a href="https://darktable.org/redmine/issues/10151">#10151</a></li> <li>Panasonic <span class="caps">DMC</span>-G10 <a href="https://darktable.org/redmine/issues/10152">#10152</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF5</span> <a href="https://darktable.org/redmine/issues/10154">#10154</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GF6</span> <a href="https://darktable.org/redmine/issues/10155">#10155</a></li> <li>Panasonic <span class="caps">DMC</span>-L1 <a href="https://darktable.org/redmine/issues/10156">#10156</a></li> <li>Panasonic <span class="caps">DMC</span>-L10 <a href="https://darktable.org/redmine/issues/10157">#10157</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LF1</span> <a href="https://darktable.org/redmine/issues/10158">#10158</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX2</span> <a href="https://darktable.org/redmine/issues/10159">#10159</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX3</span> <a href="https://darktable.org/redmine/issues/10160">#10160</a></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">LX5</span> <a href="https://darktable.org/redmine/issues/10161">#10161</a></li> </ul> <p>Please give this some testing and let us know on FreeNode in #darktable or on the darktable-devel mailing list if there are remaining issues with&nbsp;it.</p> <p>And as always, thanks to our great community and all the contributors for making this possible! enjoy the&nbsp;release!</p><img src="https://www.darktable.org/2014/11/release-candidate-for-darktable-1-6/20110428_london_20110428_IMG_3966_01_small_wide.jpg" class="hidden-lede">smnSun, 16 Nov 2014 20:35:36 +0000tag:www.darktable.org,2014-11-16:2014/11/release-candidate-for-darktable-1-6/announcementdarktable releaseString freeze for darktable 1.6https://www.darktable.org/2014/11/string-freeze-for-darktable-1-6/<p>Dear&nbsp;all,</p> <p>as we want to release darktable 1.6 some time at the end of the year, it now is the time to announce the string freeze. Please don&#8217;t change any <span class="caps">UI</span> strings any more, so translators have a chance to catch&nbsp;up.</p> <p>Translators: your updates should be committed to the master branch, there is no branch-off for a stable 1.6 version&nbsp;yet.</p> <p>We should have the first release candidate packed up&nbsp;soon!</p><img src="https://www.darktable.org/2014/11/string-freeze-for-darktable-1-6/20121118-Chile-IMG-7388medium_large.1409694179.jpg" class="hidden-lede">smnSat, 15 Nov 2014 14:18:57 +0000tag:www.darktable.org,2014-11-15:2014/11/string-freeze-for-darktable-1-6/announcementdarktable releasedarktablestring freezetranslationUsing X-Trans cameras with darktablehttps://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/<p>There is now a development branch of darktable with experimental support for raw files from many recent Fujifilm cameras. These cameras include those with the X-Trans sensor (X-Pro1, X-E1, X20, <span class="caps">X100S</span>, X-M1, <span class="caps">XQ1</span>, X-E2, and X-T1), X-Series cameras with conventional sensors (X100, X10, X-S1, <span class="caps">XF</span>-1, X-A1), and some from Fujifilm’s other lines (S6000fd, E550, <span class="caps">IS</span>-1, S3Pro, S5Pro, S5600, E900, S2Pro, S5000, S5200, S5500, S6500fd, S9500, S9600, S9600fd). Previously, darktable would fail to read <span class="caps">RAF</span>-type raw files produced by these&nbsp;cameras.</p> <p>Using darktable with Fujifilm cameras is similar to using it with any other camera’s raw files. There are a few differences, though, in the case of the X-Trans sensor. The X-Trans sensor uses an exotic design (unlike the Bayer pattern which is in most cameras), and hence darktable must use different math to process what the sensor&nbsp;records.</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/bayer_vs_xtrans.png"><img alt="Bayer vs. X-Trans" src="bayer_vs_xtrans_thumb.png" /></a></span></p> <p>There will be more technical information about this processing in a second blog&nbsp;post.</p> <h2>Demosaic</h2> <p>The demosaic module has different options when you are working with an X-Trans image. For Bayer images, the module looks something like&nbsp;this:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/demosaic_bayer.png"><img alt="Bayer demosaic" src="demosaic_bayer_thumb.png" /></a></span></p> <p>For X-Trans images, you will see a simpler set of&nbsp;options:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/demosaic_xtrans.png"><img alt="X-Trans demosaic" src="demosaic_xtrans_thumb.png" /></a></span></p> <p>The “method” sets how darktable processes what the sensor sees (a mosaic of red, green, and blue) into a color image. The current default X-Trans demosaicing is done via a <span class="caps">VNG</span> demosaic. This is a decent quality and relatively fast method. For producing images for screen resolution, it should be great. If you are a pixel peeper, or are making large prints, you may not be happy with <span class="caps">VNG</span>. It can produce artifacts in fine detail and at sharp&nbsp;edges.</p> <p>Clicking on <span class="caps">VNG</span> will show you some higher quality&nbsp;choices:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/demosaic_xtrans_methods.png"><img alt="X-Trans demosaic methods" src="demosaic_xtrans_methods_thumb.png" /></a></span></p> <p>Markesteijn 1-pass is a vast improvement over <span class="caps">VNG</span>, though it is also twice as slow. If even Markesteijn 1-pass is producing artifacts, the 3-pass variant will offer a slight improvement at the cost of twice as much processing time again. Here are example crops at 200% of the three&nbsp;methods:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/demosaic_methods.png"><img alt="demosaic methods" src="demosaic_methods_thumb.png" /></a></span></p> <p>The color smoothing option is the same one used with conventional Bayer sensors. It eliminates color artifacts with a median filter. This may be helpful if you have an image with exceptionally fine detail such as a camera test pattern. Here is an a 200% detail of a problematic X-Trans image with increasing color smoothing&nbsp;applied:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/color_smoothing.png"><img alt="color smoothing" src="color_smoothing_thumb.png" /></a></span></p> <p>Note that the bright color fringes disappear with more color&nbsp;smoothing.</p> <h2>Processing&nbsp;speed</h2> <p>No matter what demosaic method you use for X-Trans images, darktable will take at least twice as much time to process them as similar Bayer images. In the darkroom view, you may find that the image updates slowly when you adjust modules such as white balance which work directly on the underlying sensor data. This is because darktable goes back to the original raw file to perform these operations, then demosaics the result. While this produces high quality output, it unfortunately requires re-running the demosaic after each adjustment, which takes some&nbsp;time.</p> <p>One solution is to go to the global preferences, select the “core options” tab, and set “demosaicing for zoomed out darkroom mode” to “always bilinear&nbsp;(fast)”:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/demosaic_zoomed_out.png"><img alt="demosaic_zoomed_out" src="demosaic_zoomed_out_thumb.png" /></a></span></p> <p>When you are not at 100% or 200% zoom, darktable will now display the image with an extremely fast but low quality demosaic method (bilinear). This will allow modules which depend upon the mosaiced image data (any active modules displayed below “demosaic”) to respond more fluidly. The trade-off is that you may see some artifacts as you zoom out the image to just slightly below 100%. Regardless of this setting, image export will always use the method you choose in the demosaic module. The modules which will be more responsive if you choose “always bilinear” are raw denoise, hot pixels, chromatic aberrations (though see the note below), highlight reconstruction, white balance, and&nbsp;invert.</p> <h2>Defaulting to higher quality&nbsp;demosaic</h2> <p>Currently the default demosaic method for new images is <span class="caps">VNG</span>. If you want imported image to default to a higher quality default (such as Markesteijn 1-pass), you can do this via a preset. Take any X-Trans image, set the demosaic method to your preference, then click on the &#8220;hamburger&#8221; menu and choose “store new&nbsp;preset&#8230;”:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/preset1.png"><img alt="store new preset" src="preset1_thumb.png" /></a></span></p> <p>Then choose to auto-apply the preset to raw images from your camera. For example, if you have an &#8220;<span class="caps">X100S</span>&#8221;, you might do&nbsp;this:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/preset2.png"><img alt="preset" src="preset2_thumb.png" /></a></span></p> <p>Another possibility would be to make a style in the lighttable based on an image for which you&#8217;ve applied your chosen demosaic method. Then in Exporter you can choose this style under global&nbsp;options.</p> <h2>Other&nbsp;modules</h2> <p>Other modules besides demosaic should behave as expected. An exception is the “chromatic aberrations” module. It cannot currently handle non-Bayer sensors, and hence will always be disabled for X-Trans&nbsp;images:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/cacorrect.png"><img alt="chromatic aberrations" src="cacorrect_thumb.png" /></a></span></p> <p>If your camera and lens are supported in the “lens correction” module, you may be able to get good results via its <span class="caps">TCA</span>&nbsp;correction:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/lens_correction.png"><img alt="lens correction" src="lens_correction_thumb.png" /></a></span></p> <p>Note that support for particular cameras and lenses comes via the great <a href="http://lensfun.sourceforge.net/">Lensfun</a> project. The version of Lensfun which you have installed will change your lens&nbsp;support.</p> <p>The basecurve module may have a custom basecurve for particular Fujifilm cameras. Otherwise darktable will use the “fujifilm like” curve, which should be good&nbsp;enough.</p> <p>The “create <span class="caps">HDR</span>” function currently does not work for X-Trans&nbsp;images.</p> <h2>Dynamic&nbsp;Range</h2> <p>When darktable processes X-Trans images, it will not replicate the <span class="caps">JPEG</span> which the camera produces. X-Trans cameras have <span class="caps">JPEG</span>-specific options such as film simulation, highlight tone, shadow tone, color, and sharpness which do not alter raw file data. You are on your own with darktable to tune the image as you choose&nbsp;– whether to simulate these settings or to do what you feel best serves the particular&nbsp;image.</p> <p>Of particular note is the Fujifilm “Dynamic Range” option, which controls image contrast. As with similar options on other cameras (“Nikon Active D-Light”, “Canon Auto Lighting Optimizer (<span class="caps">ALO</span>)”, “Sony Dynamic Range Optimizer (<span class="caps">DRO</span>)” or “Samsung Smart Range”), darktable will not specially handle images taken when Dynamic Range is&nbsp;enabled.</p> <p>Images taken with <span class="caps">DR200</span>, <span class="caps">DR400</span>, or <span class="caps">AUTO</span> <span class="caps">DR</span> will look as expected in lighttable upon import, as darktable will display a camera-processed preview <span class="caps">JPEG</span>. But when these images are opened in darkroom mode, they will appear quite dark. Here is how the camera-processed <span class="caps">JPEG</span> of a <span class="caps">DR400</span> image looks compared to the image which darkroom mode initially&nbsp;shows:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/dr_jpeg_vs_dt.png"><img alt="DR jpeg vs. darktable" src="dr_jpeg_vs_dt_thumb.png" /></a></span></p> <p>What you are seeing in darkroom is the image as recorded by the sensor without post-processing to compensate for the Dynamic Range setting. Dynamic Range exposes the image at a lower <span class="caps">ISO</span> without altering f-stop or shutter speed. This preserves highlight detail at the cost of forcing more image data into the dark tones. In photo-talk terms, Dynamic Range and its ilk are an “expose to the left” solution to highlight&nbsp;retention.</p> <p>As appealing as the <span class="caps">DR</span> feature is, it may be worth instead photographing at <span class="caps">DR100</span>. You can then turn on the histogram display and alter exposure such that highlights are not cropped while being cognizant of not forcing too much information into the shadows. This should produce similar results to <span class="caps">DR200</span>/<span class="caps">DR400</span>, with finer control. Of course such images will look too dark initially in both lighttable and darkroom modes, and will also require special care to&nbsp;develop.</p> <p>Regardless of whether you rely on the <span class="caps">DR</span> feature or purposely underexpose, you will most likely want to raise the image exposure overall (e.g. by 1 <span class="caps">EV</span> if the image is exposed with <span class="caps">DR200</span>, by 2 <span class="caps">EV</span> if it is exposed with <span class="caps">DR400</span>) while figuring out a way to retain some highlight detail. One way to do the latter is by setting the exposure module&#8217;s blend mode to &#8220;parametric mask&#8221; and setting the gray (“g”) tab’s two input sliders such that the mask starts at black and fades out across the midtones (you&#8217;ll have to tune this by&nbsp;eye):</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/exposure_mask.png"><img alt="exposure mask" src="exposure_mask_thumb.png" /></a></span></p> <p>This will lighten the shadows and midtones while smoothly tapering the exposure adjustment in the highlights. Here is that <span class="caps">DR400</span> image processed with an exposure&nbsp;mask:</p> <p><span><a href="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/DR400_exposure_mask.png"><img alt="DR400 with exposure mask" src="DR400_exposure_mask_thumb.png" /></a></span></p> <p>If you don’t appreciate sensor noise, you may want to use a denoise module as&nbsp;well.</p> <p>There are some other ways to deal with these images: In the “zone system” module, you can set the minimum number of zones and drag the zones to the right. In the “global tonemap” module, you can leave the operator on &#8220;drago&#8221; and adjust &#8220;target&#8221; until the the tonality looks right. Or in the “levels” module, drag the middle handle to the left. All those solutions come a bit later in the processing pipeline than the exposure module, hence are not ideal. There has been some suggestion that basecurves specific to particular Dynamic Range modes could also be&nbsp;helpful.</p> <p>Dealing with Fujifilm Dynamic Range images is, as they say, a field of continuing research. The choices in processing these images are akin to those in processing <span class="caps">HDR</span> images&nbsp;– how to fit a large tonal range into a constrained output space. The camera does record <span class="caps">EXIF</span> data describing if <span class="caps">DR200</span> or <span class="caps">DR400</span> is set, so it would be interesting to code an automatic compensation for these settings. It is not yet clear, though, what such automatic compensation should&nbsp;be.</p> <h2>Improving and Continuing X-Trans&nbsp;support</h2> <p>Though darktable now can read and process X-Trans files, there are plenty of opportunities to improve camera support. In particular, as mentioned in &#8220;<a href="https://www.darktable.org/2012/10/whats-involved-with-adding-support-for-new-cameras/"><span>What&#8217;s involved with adding support for new cameras</span></a>&#8220;, each camera model could benefit from its own <a href="https://www.darktable.org/2013/10/about-basecurves/">basecurve</a>, white balance presets, lens correction, and <a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/">noise profile</a>. Bug reports and ideas for improvement are also most&nbsp;welcome.</p> <p>There has been understandable reluctance to support an exotic image sensor such as the X-Trans. Such support requires much intervention into the darktable code, for a technology which may just be a flash in the pan. But many open source and commercial image processing developers have now either chosen to support X-Trans raw files or are moving towards such support. X-Trans raw handling in darktable allows for enthusiast users of these cameras to enjoy darktable’s finely crafted image processing&nbsp;environment.</p><img src="https://www.darktable.org/2014/08/using-x-trans-cameras-with-darktable/xtrans_21_wide.png" class="hidden-lede">dtoropSat, 02 Aug 2014 08:24:01 +0000tag:www.darktable.org,2014-08-02:2014/08/using-x-trans-cameras-with-darktable/blogdevelopmentupcoming featuredarktabledemosaicingdynamic rangefujifilminterpolationx-transreleased darktable 1.4.2https://www.darktable.org/2014/04/released-darktable-1-4-2/<p>Hello&nbsp;everyone,</p> <p>we released darktable 1.4.2, a point release which consists mostly of bugfixes and newly added camera&nbsp;support.</p> <p>You can find the source tarball&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.tar.xz/download</a></p> <p>The <span class="caps">PGP</span>&nbsp;signature:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.tar.xz.asc/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.tar.xz.asc/download</a></p> <p>The disk image for Mac&nbsp;users:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.dmg/download</a></p> <p>And this one is also&nbsp;signed:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.dmg.asc/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.2.dmg.asc/download</a></p> <p>The key can be obtained from the usual key servers, fingerprint being <code>4BFF7EAD</code>.</p> <p>The release notes are as&nbsp;follows:</p> <p>========================</p> <h2>darktable 1.4.2 Release&nbsp;Notes</h2> <ul> <li>A lot of cleanup was done to allow larger images to be handled by darktable without crashing as&nbsp;often</li> <li>A significant effort has been made to cleanup some of our code, fixing a lot of minor memory leaks and some corner case bugs in the&nbsp;process</li> <li>A bunch of masks corner cases&nbsp;fixed</li> <li>Tonecurve no longer clamps the&nbsp;gamut</li> <li>Assorted <span class="caps">TIFF</span> reader/writer&nbsp;fixes</li> <li>Map view: only connect to the map server when&nbsp;active</li> <li>Use filesystem timestamp for images lacking <span class="caps">EXIF</span></li> <li>Sync <span class="caps">AMAZE</span> code from RawTherapee, now with <span class="caps">SSE2</span> optimization, so it&#8217;s less&nbsp;slow</li> <li>Olympus: lens detection for some Olympus cameras should work better now (requires images to be&nbsp;re-imported)</li> <li>Olympus: focus distance should now be properly displayed for some Olympus cameras (requires images to be&nbsp;re-imported)</li> <li><span class="caps">SONY</span> <span class="caps">ILCE</span>-7(R) garbage pixels are now cut&nbsp;off</li> <li>Experimental support for Nikon&nbsp;D5300</li> <li>Experimental support for Nikon&nbsp;D3300</li> <li>Experimental support for Samsung <span class="caps">NX1100</span></li> <li>Experimental support for Samsung <span class="caps">NX30</span></li> <li>Very experimental support for Olympus E-M10 (color rendering is still subject to future change, and may retroactively affect your image library for this&nbsp;camera)</li> <li> <p>New white balance presets&nbsp;for:</p> <ul> <li>Nikon&nbsp;D610</li> <li>Olympus E-<span class="caps">PL5</span></li> <li>Olympus E-<span class="caps">PM2</span></li> </ul> </li> </ul> <p>For Ubuntu&nbsp;users</p> <p>Users who are using our darktable-release-plus <span class="caps">PPA</span> (which has been deprecated since the previous release) should switch to our darktable-release <span class="caps">PPA</span>:</p> <p><a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-release">https://launchpad.net/~pmjdebruijn/+archive/darktable-release</a></p> <p>1.4.2 is the last release that will be supported for older Ubuntu versions. All future versions of darktable will only be supported for 14.04 “Trusty” (the new Long Term Support release) and&nbsp;onward</p> <p>========================</p> <p>Enjoy and take a lot of&nbsp;photos!</p><img src="https://www.darktable.org/2014/04/released-darktable-1-4-2/dt_shirt_text_wide.jpg" class="hidden-lede">houzTue, 29 Apr 2014 11:54:47 +0000tag:www.darktable.org,2014-04-29:2014/04/released-darktable-1-4-2/announcementdarktable releasereleased darktable 1.4.1https://www.darktable.org/2014/02/released-darktable-1-4-1/<p>hi&nbsp;all,</p> <p>as most of you probably noticed already, we published a point release, 1.4.1. the tarball is&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.tar.xz/download</a></p> <p>make sure you check the&nbsp;signature:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.tar.xz.asc/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.tar.xz.asc/download</a></p> <p>the macintosh computer disk image with signature&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.dmg/download</a> <a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.dmg.asc/download">&nbsp;https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.1.dmg.asc/download</a></p> <p>this is just a point release, so not really any new features. detailed release notes are as&nbsp;follows:</p> <ul> <li>export: consistent names for output&nbsp;formats</li> <li>export to disk: overwrite file&nbsp;option</li> <li>grain plugin now allows smaller coarseness and will display coarseness values half of what they used to be, this is merely a cosmetic change, your images are&nbsp;unaffected.</li> <li>some masks related&nbsp;fixes</li> <li>some lua related&nbsp;fixes</li> <li>tiff writer (32bit float, little endian output, configurable&nbsp;compression)</li> <li>tiff&nbsp;reader</li> <li>subtly nicer scrollbar&nbsp;behavior</li> <li>theme loading cornercase&nbsp;fixups</li> <li>shadow <span class="amp">&amp;</span> highlight module improvements (should be less prone to artifacts when used on new&nbsp;images)</li> <li>allow importing more than 1 style at a&nbsp;time</li> <li>regression was fixed when building darktable against bleeding edge&nbsp;glibc</li> <li>Sony <span class="caps">A77V</span> enhanced color&nbsp;matrix</li> <li>Nikon D5100 updated white balance&nbsp;presets</li> <li>Nikon 1 V2 noise profile (and by extension J3/<span class="caps">AW1</span>)</li> <li>Nikon 1 J1 noise profile (and by extension&nbsp;V1/J2/S1)</li> <li>Pentax K3 noise&nbsp;profile</li> <li>experimental support for Panasonic <span class="caps">DMC</span>-<span class="caps">LF1</span> (we still need samples for the nonstandard aspect&nbsp;ratios)</li> <li>experimental support for <span class="caps">SONY</span> <span class="caps">DSC</span>-<span class="caps">RX100M2</span></li> <li>experimental support for <span class="caps">SONY</span> <span class="caps">NEX</span>-3N</li> <li>still no Nikon D5300/D3300 support, we&#8217;re still looking into&nbsp;that.</li> </ul> <p>the darktable release plus ppa is being phased out: <a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-release-plus">https://launchpad.net/~pmjdebruijn/+archive/darktable-release-plus</a></p> <p>please switch to our regular darktable release ppa: <a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-release">https://launchpad.net/~pmjdebruijn/+archive/darktable-release</a></p> <p>enjoy!</p><img src="https://www.darktable.org/2014/02/released-darktable-1-4-1/paua.jpg.jpg" class="hidden-lede">joSat, 15 Feb 2014 15:56:16 +0000tag:www.darktable.org,2014-02-15:2014/02/released-darktable-1-4-1/announcementdarktable releaseLibre Graphics Meeting 2014 in Leipzig, Germanyhttps://www.darktable.org/2014/02/libre-graphics-meeting-2014-in-leipzig-germany/<p>Yes, it&#8217;s this time of the year again. The annual <a href="https://libregraphicsmeeting.org/2014/">Libre Graphics Meeting</a> is getting closer, and we, that is the whole developer community of your favorite free graphics applications, would like to ask you for your help. Some of you might remember our call for sponsoring from last year. Back then we asked for donations for specific people&nbsp;– a task that didn&#8217;t work out that well in the end. So this year we would just like to ask you for a small donation to the general funding campaign instead. This money is only being used to pay the travel expenses of developers and contributors of free graphics projects. Like us. You can see an incomplete list <a href="https://libregraphicsmeeting.org/2014/projects/">here</a>.</p> <p>If you want to make sure that good things can happen, like having the first-ever real life darktable developer meeting, please consider to spare a coin at the <a href="https://pledgie.com/campaigns/22927">official Pledgie campaign</a>. Thank&nbsp;you.</p> <p>Of course you are also welcome to attend <span class="caps">LGM</span> yourself. Make sure to ping us beforehand so we can meet.&nbsp;:-)</p> <p><a href="https://pledgie.com/campaigns/22927"><img alt="Click here to lend your support to: Libre Graphics Meeting 2014 and make a donation at pledgie.com!" src="https://pledgie.com/campaigns/22927.png?skin_name=chrome" /></a></p> <p><strong>Update:</strong> The <a href="https://libregraphicsmeeting.org/2014/program/">program</a> is now&nbsp;online.</p><img src="https://www.darktable.org/2014/02/libre-graphics-meeting-2014-in-leipzig-germany/mark_wide.jpg" class="hidden-lede">houzTue, 04 Feb 2014 13:09:13 +0000tag:www.darktable.org,2014-02-04:2014/02/libre-graphics-meeting-2014-in-leipzig-germany/blogcommunityuser manual updatedhttps://www.darktable.org/2014/01/user-manual-updated/<p>Dear&nbsp;all,</p> <p>we updated both the English online user manual and the <span class="caps">PDF</span> version to darktable 1.4. The online version can be found at <a href="/usermanual/en/">https://darktable.org/usermanual/en/</a>, the <span class="caps">PDF</span> document is available from <a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-usermanual.pdf/download">here</a>.</p> <p>Many thanks to Ulrich and Jérémy for their outstanding work on keeping our documentation up to&nbsp;date!</p> <p>Another thing worth mentioning is the current status of the user manual translation. We have several contributors working on translating the manual into French and Italian&nbsp;– thanks, Victor and Federico! We&#8217;ll inform you once we have something to&nbsp;release.</p> <p>Enjoy reading the new chapters about Lua, drawn masks and many other&nbsp;improvements.</p> <p>Happy new&nbsp;year!</p> <p>(and yes, we are aware of the fact that in some cultures new year might not have started yesterday&nbsp;&#8230;)</p> <p>/Simon</p><img src="https://www.darktable.org/2014/01/user-manual-updated/IMG_55722_wide.jpg" class="hidden-lede">smnThu, 02 Jan 2014 15:08:28 +0000tag:www.darktable.org,2014-01-02:2014/01/user-manual-updated/websitereleased darktable 1.4https://www.darktable.org/2013/12/released-darktable-1-4/<p>merry&nbsp;christmas!</p> <p>we&#8217;ve got a new release for&nbsp;you:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.tar.xz/download</a></p> <p>since we have quite a lot of new features (masks etc, see below), there is an updated&nbsp;usermanual:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-usermanual.pdf/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-usermanual.pdf/download</a></p> <p>ubuntu packages are already available in the usual place, and there is a new macintosh disk&nbsp;image:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4.dmg/download</a></p> <h2>more detailed release&nbsp;notes:</h2> <ul> <li>darktable now <a href="https://www.darktable.org/2013/09/using-lua-with-darktable/">integrates a lua engine</a> that allows writing scripts to make it easier to use with other image processing software. These scripts can be run when a particular event takes place (for example when a new image is imported) or when a particular keyboard shortcut is used. There are very few scripts available at this point but we expect the community to provide some more during the next release&nbsp;cycle.</li> <li>darktable now <a href="https://www.darktable.org/2013/04/masks/">includes several kinds of drawn masks</a>: brush, circle, ellipse, path and&nbsp;gradients</li> <li>exporting in WebP&nbsp;format</li> <li>serious speed enhancements of lighttable when using large&nbsp;colections</li> <li><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/">focus detection on&nbsp;lighttable</a></li> <li>local cached copies of images for offline&nbsp;files</li> <li>a few new blend mode like &#8220;<span class="caps">HSV</span> lightness&#8221;, &#8220;<span class="caps">HSV</span> color&#8221;, &#8220;Lab lightness&#8221; and &#8220;Lab&nbsp;color&#8221;</li> <li>new modules &#8220;contrast brightness saturation&#8221;, &#8220;color balance&#8221; and &#8220;color mapping&#8221; which replaces the now deprecated &#8220;color transfer&#8221;&nbsp;module</li> <li><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/">new histogram mode&nbsp;&#8220;waveform&#8221;</a></li> <li>added a setting to automatically collapse modules to only have a single one&nbsp;expanded</li> <li>better user experience for bauhaus sliders: the popup now has a blinking cursor to make possible text entry more&nbsp;discoverable</li> <li>the text entry for bauhaus sliders and vimkeys&#8217; <code>:set</code> command can now evaluate mathematical&nbsp;expressions</li> <li>additional logarithmic mode for editing the&nbsp;basecurve</li> <li>many bug fixes and small&nbsp;improvements</li> <li><a href="https://www.darktable.org/2013/10/about-basecurves/">a tool for measuring basecurves from a sample&nbsp;image</a></li> <li>a tool to check the system&#8217;s color management setup. call cmake with -DBUILD_CMSTEST=On to build and install it. packagers probably want&nbsp;that.</li> <li>updated&nbsp;usermanual</li> <li>darktable now requires Gtk+ in version &gt;= 2.24, Glib in version &gt;=&nbsp;2.30</li> </ul> <h1>known&nbsp;bugs</h1> <ul> <li>Ricoh Pentax K-3 PEFs aren&#8217;t supported yet (DNGs work&nbsp;fine)</li> <li>Nikon D5300 isn&#8217;t supported&nbsp;yet</li> </ul> <p>hope you have a couple of days off to enjoy the&nbsp;release!</p><img src="https://www.darktable.org/2013/12/released-darktable-1-4/dt_wide.png" class="hidden-lede">smnThu, 26 Dec 2013 14:25:12 +0000tag:www.darktable.org,2013-12-26:2013/12/released-darktable-1-4/announcementdarktable releaseOf Histograms and Waveformshttps://www.darktable.org/2013/12/of-histograms-and-waveforms/<figure role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/grey.png"><img alt="The gradient test image" src="grey_thumb.png" /></a></span> <figcaption><em>Figure 1:</em> the gradient test image – follow the link, download and play with it in darktable</figcaption></figure> <p>People using image editors or similar (raster) graphics editors are probably familiar with histograms. You also have them in almost all digital cameras. In darktable you can find it very prominently in the top right corner of darkroom mode, but also as a backdrop of modules like <em>levels</em>, <em>tonecurve</em> and&nbsp;similar.</p> <p>From a mathematical point of view they are a diagram displaying the amount of pixels in the image that have a specific colour, lightness, value or similar measure. The horizontal axis represents the brightness while the vertical axis corresponds to the amount of pixels that have that&nbsp;brightness.</p> <h2>From linear&nbsp;…</h2> <figure class="u-pull-left" role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/linear.jpg"><img alt="the linear histogram" src="linear_thumb.jpg" /></a></span> <figcaption><em>Figure 2:</em> the linear histogram</figcaption></figure> <p>Let&#8217;s look at the example picture in <em>figure 1</em>. For a bigger view you can click on all the images in this post. In the lower half it&#8217;s a smooth gradient from black to white. The upper half covers the same range but in bigger steps. When looking at <em>figure 2</em> we see the histogram for that image: a (more or less) constant horizontal line with a few spikes. If we remember that the horizontal axis (x) goes from black (very left) to white (very right) and that the vertical axis (y) goes from “none at all” at the bottom to “quite a few” at the top then we can probably understand why we have this distinct look: breaking the image down we have the lower smooth part which has basically the same amount of pixels for every possible brightness, so we get the same y-value for every x-value&nbsp;– the horizontal line in the histogram. The spikes however come from the upper half of the image. Only 11 colours are represented there, with each bar having the same width. If we add these pixels to the count of the lower half we add quite a few to the score of the 11 brightnesses (i.e., x-values) of the upper colors. Thus we get the spikes since these have way more pixels in their bin than the smooth gradient steps&nbsp;in-between.</p> <h2>… to&nbsp;logarithmic</h2> <figure class="u-pull-left" role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/logarithmic.jpg"><img alt="the logarithmic histogram" src="logarithmic_thumb.jpg" /></a></span> <figcaption><em>Figure 3:</em> the logarithmic histogram</figcaption></figure> <p>If you hover over the histogram you will find four little buttons on the top right. The leftmost can be used to switch the mode of the histogram, the others hide or show colour channels. The one we have seen in <em>figure 2</em> is the so-called <strong>linear mode</strong> where the vertical axis corresponds 1:1 to the number of pixels&nbsp;– double the amount will lead to twice the height. This is handy when you want to see the fluctuation of the values in your image, however when there are a few brightness levels that are really common in an image they will generate a big spike. Due to scaling of the whole histogram (it has to fit into its window after all) you will hardly be able to see the rest of the shades as they will be cramped at the bottom of the histogram. For these cases there is the <strong>logarithmic mode</strong> which accentuates the smaller y-values. You can see the logarithmic histogram of our gradient image in <em>figure 3</em>. The base line coming from the smooth gradient is much higher and the spikes less&nbsp;pronounced.</p> <h2>Say hello to&nbsp;waveforms</h2> <p>As of version 1.4 of darktable there is also a third mode, the <strong>waveform</strong>. While it serves a similar purpose as the histogram&nbsp;– showing you what brightnesses there are in the image&nbsp;– it works a little different. The histogram just counts pixels with a specific value and doesn&#8217;t care about the location of that pixel in the image. The waveform however keeps that information. Therefore the meaning of the axes changes. The horizontal axis no longer denotes brightness but image location. Left in the waveform is left in the image, right in the waveform is right in the image. The vertical axis of the waveform represents the brightness. The third dimension of data, the number of pixels with a given brighness in a given pixel column of the image, is coded in the colour of the pixel in the&nbsp;waveform.</p> <h2>From theory to&nbsp;practice</h2> <figure class="u-pull-left" role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/waveform.jpg"><img alt="the waveform" src="waveform_thumb.jpg" /></a></span> <figcaption><em>Figure 4:</em> the waveform</figcaption></figure> <p>All of this sounds more complicated than it really is. Let&#8217;s look at our grey test image again. You can see its waveform in <em>figure 4</em>. First we are again looking at the bottom half of the image. It has a smooth gradient from black on the left to white on the right. This results in a straight line from the lower left of the waveform to the upper right&nbsp;– on the left all the pixels are black, thus there is a white pixel in the waveform on the lower left. The further we go to the right in the image the brighter the pixels become. Subsequently the white marker in the waveform goes up on the vertical axis. Now for the top part, the steps. Sweeping over the image from left to right we find only black pixels for the first part, thus the corresponding columns in the waveform have white markers in the bottom. Next we see a bunch of slightly brighter pixels, resulting in a step in the waveform, and so on until we reach white on the right end. In theory you should see the waveform of this image in a middle grey with white points where the linear line of the lower part and the steps of the upper part overlap. We are however pushing the lower values a little to make them more visible (similar to the logarithmic histogram) so you see only white pixels in this&nbsp;case.</p> <h2>Time for a real world&nbsp;example</h2> <figure role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/rose.jpg"><img alt="rose" src="rose_thumb.jpg" /></a></span> <figcaption><em>Figure 5:</em> A rose by any other name …</figcaption></figure> <p>Now that you have hopefully understood how histogram and waveform work we will have a look at how to interpret and make use of&nbsp;them.</p> <figure class="u-pull-right" role="group"> <span><a href="https://www.darktable.org/2013/12/of-histograms-and-waveforms/rose_histograms.jpg"><img alt="the rose histograms &amp; waveform" src="rose_histograms_thumb.jpg" /></a></span> <figcaption><em>Figure 6:</em> the rose histograms <span class="amp">&amp;</span> waveform <br/> top: logarithmic <br/> middle: linear <br/> bottom: waveform</figcaption></figure> <p><em>Figure 5</em> shows a real world photo and <em>figure 6</em> its histograms and waveform. Looking at the histogram we first notice that suddenly there are colors. This is because we don&#8217;t work with a monochrome image any longer. So each color channel gets its own histogram overlaid over the others. In the linear histogram you see that most pixels are quite dark with lots of slightly lighter green pixels. Almost all of the middle bright and brighter pixels are red. On the very right side of the histogram we see a red spike which tells us that the red channel has quite a few pixels that are at the maximum value&nbsp;– a sure sign that there was clipping. The logarithmic variant also shows that there are other colours than pure red in the brighter parts of the image. All of that can be seen in the waveform, too. There is a bright band of colours in the lower part, not touching the bottom line though&nbsp;– shadows are not crushed. And then there is the red thing in the middle, even touching the top border. These are the clipped pixels we spotted in the histogram already. But contrary to the former we can now even see where in the image the clipping occured: the middle. Looking at the rose we can confirm that. We can even see the greenish, sun lit twig on the bottom left of the blossom in the waveform as a dim green&nbsp;fog.</p> <h2>Next&nbsp;steps</h2> <p>With this in mind you should maybe browse through your gallery, noticing that low key photos have a big bump on the left of the histogram, high keys have it on the right, high contrast images might even show a peak on the left and right with a lower region in the middle of the histogram. All of which you can already evaluate in the field on the back of your&nbsp;camera.</p> <p>For further reading about histograms refer to <a href="https://en.wikipedia.org/wiki/Image_histogram">Wikipedia</a> or the two articles from <a href="https://www.cambridgeincolour.com/tutorials/histograms1.htm">Cambridge in Colour</a> (and <a href="https://www.cambridgeincolour.com/tutorials/histograms2.htm">part 2</a>).</p><img src="https://www.darktable.org/2013/12/of-histograms-and-waveforms/rose_wide.jpg" class="hidden-lede">houzFri, 06 Dec 2013 16:08:41 +0000tag:www.darktable.org,2013-12-06:2013/12/of-histograms-and-waveforms/blogupcoming featuredarktable 1.4 release candidatehttps://www.darktable.org/2013/12/darktable-1-4-release-candidate/<p>We just packaged darktable 1.4rc1 for more testing before releasing 1.4 proper in a few weeks. We&#8217;ve got&nbsp;tarballs,</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4~rc1.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4~rc1.tar.xz/download</a></p> <p>debian&nbsp;packages,</p> <p><a href="https://packages.debian.org/experimental/darktable">https://packages.debian.org/experimental/darktable</a></p> <p>a Macintosh <span class="caps">DMG</span>,</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4~rc1.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.4/darktable-1.4~rc1.dmg/download</a></p> <p>and Pascal&#8217;s Ubuntu darktable Unstable <span class="caps">PPA</span> has been updated,&nbsp;too:</p> <p><a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-unstable">https://launchpad.net/~pmjdebruijn/+archive/darktable-unstable</a></p> <p>Preliminary release notes are (also see RELEASE_NOTES in&nbsp;git/tarball):</p> <ul> <li>darktable now integrates a lua engine that allows writing scripts to make it easier to use with other image processing software. These scripts can be run when a particular event takes place (for example when a new image is imported) or when a particular keyboard shortcut is used. There are very few scripts available at this point but we expect the community to provide some more during the next release&nbsp;cycle.</li> <li>darktable now include several kinds of drawn masks: brush, circle, ellipse, path and&nbsp;gradients</li> <li>exporting in WebP&nbsp;format</li> <li>serious speed enhancements of lighttable when using large&nbsp;collections</li> <li>focus detection on&nbsp;lighttable</li> <li>local cached copies of images for offline&nbsp;files</li> <li>a few new blend mode like &#8220;<span class="caps">HSV</span> lightness&#8221;, &#8220;<span class="caps">HSV</span> color&#8221;, &#8220;Lab lightness&#8221; and &#8220;Lab&nbsp;color&#8221;</li> <li>new modules &#8220;contrast brightness saturation&#8221;, &#8220;color balance&#8221; and &#8220;color mapping&#8221; which replaces the now deprecated &#8220;color transfer&#8221;&nbsp;module</li> <li>new histogram mode&nbsp;&#8220;waveform&#8221;</li> <li>added a setting to automatically collapse modules to only have a single one&nbsp;expanded</li> <li>better user experience for bauhaus sliders: the popup now has a blinking cursor to make possible text entry more&nbsp;discoverable</li> <li>the text entry for bauhaus sliders and vimkeys&#8217; <code>:set</code> command can now evaluate mathematical&nbsp;expressions</li> <li>many bug fixes and small&nbsp;improvements</li> <li>a tool for measuring basecurves from a sample&nbsp;image</li> <li>updated&nbsp;usermanual</li> <li>darktable now requires Gtk+ in version &gt;= 2.24, Glib in version &gt;=&nbsp;2.30</li> </ul> <p>Thanks to everybody helping out! please double check your credits in the about dialog and the <span class="caps">AUTHORS</span> file and give us a shout if you&#8217;re&nbsp;missing.</p> <p>This is still a testing version, so please report all bugs you find to our bug tracker <a href="https://darktable.org/redmine/projects/darktable/issues">https://darktable.org/redmine/projects/darktable/issues</a> so we can take care of them and make the release an outstanding&nbsp;one.</p> <p>Hope you enjoy the&nbsp;release!</p><img src="https://www.darktable.org/2013/12/darktable-1-4-release-candidate/oasis.png" class="hidden-lede">smnMon, 02 Dec 2013 09:50:21 +0000tag:www.darktable.org,2013-12-02:2013/12/darktable-1-4-release-candidate/announcementdarktable releasedetermining focus in lighttablehttps://www.darktable.org/2013/11/determining-focus-in-lighttable/<p>wouldn&#8217;t it be great if you could judge sharpness of your images in lighttable mode? this mode is limited to small and medium sized thumbnails of your images, so we can deliver the required speed to browse a lot of&nbsp;them.</p> <p>to tell whether or not you got the focus right during the shoot, we would like to look at the full resolution. the most you get out of lighttable mode will look like&nbsp;this:</p> <p><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/image2.jpg"><img alt="image2" src="image2_thumb.jpg" /></a></span></p> <p><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/image1.jpg"><img alt="image1" src="image1_thumb.jpg" /></a></span></p> <p>which one is&nbsp;sharper?</p> <p>if you&#8217;re not using the embedded jpg thumbnail or if you have worked on the history stack, these thumbnails are actually processed through our image pipeline. so depending on what you did with the image, processing the full-resolution can take seconds if not minutes. we really don&#8217;t want to do that for all visible&nbsp;images.</p> <h1>full-res embedded&nbsp;thumbnails</h1> <p>an average raw file stores quite a lot of thumbnails. often there is even a full resolution jpg to be found. couldn&#8217;t we make use of&nbsp;that?</p> <p>now displaying this thumbnail is quite useless (there is a secret backdoor in dt to do it, but i&#8217;m not going to talk about it), as the resolution is usually smaller than what you&#8217;d get from the raw, highlights will look different, there are differences in color management and basecurves. it&#8217;s just different and if nothing else it confuses my perception of colors when looking at the developed raw after&nbsp;that.</p> <p>so even if we don&#8217;t want to look at the thumbnail, we can extract focus information from&nbsp;it.</p> <h1>how it&nbsp;works</h1> <p>i tried simple edge-detection filters, such as the ones used for in-camera focus detection in the excellent <a href="https://magiclantern.fm/">magic lantern firmware</a>. since different lenses have different sharpness and high-iso might make these numbers noisy, dt uses a slightly different&nbsp;approach.</p> <p>we do a two-scale decimated cdf 2,2 wavelet transform and use a threshold on the detail coefficients. the second scale is only computed if the first scale (the sharper one) doesn&#8217;t yield any results. visually, these are displayed as red clusters (first scale, very sharp) and blue clusters (second scale, not quite as&nbsp;sharp).</p> <p>to account for any cropping and lens or keystone correction potentially applied to the image, we transform the clusteres detected on the embedded jpg thumbnail through the image pipeline, as we do with drawn masks. that means you&#8217;ll get sharpness clusters on the correct spot without processing the&nbsp;image.</p> <h1>how to use&nbsp;it</h1> <p>switch on the new gui setting <code>plugins/lighttable/display_focus</code> or <em>indicate focus regions</em> in the gui preferences&nbsp;dialog.</p> <p>if you now select a picture in lighttable mode and press `z&#8217; to switch to full res preview, you should get something&nbsp;like</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/red.jpg"><img alt="red" src="red_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/blue.jpg"><img alt="blue" src="blue_thumb.jpg" /></a></span></span> </span></p> <p>double checking in darkroom mode and zooming to 200% shows that the one with the red boxes is indeed&nbsp;sharper:</p> <p><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/red_closeup.jpg"><img alt="red_closeup" src="red_closeup_thumb.jpg" /></a></span></p> <p><span><a href="https://www.darktable.org/2013/11/determining-focus-in-lighttable/blue_closeup.jpg"><img alt="blue_closeup" src="blue_closeup_thumb.jpg" /></a></span></p> <h1>where to get&nbsp;it</h1> <p>this code is currently in a branch `full-res-preview&#8217; and about to be merged into master, for release in the upcoming 1.4&nbsp;release.</p><img src="https://www.darktable.org/2013/11/determining-focus-in-lighttable/penguin_wide.jpg" class="hidden-lede">joFri, 01 Nov 2013 16:50:01 +0000tag:www.darktable.org,2013-11-01:2013/11/determining-focus-in-lighttable/blogabout basecurveshttps://www.darktable.org/2013/10/about-basecurves/<p>the purpose of the basecurve is to make the otherwise scene-referred linear (linear raw rgb) color look good on your output devices. this is done independently of any color managed transforms which are also done in the pipeline, so we can establish a certain look independent of the devices. this will affect how highlights and shadows are balanced against each other, the overall contrast of the image, as well as color saturation. it basically boils down&nbsp;to:</p> <blockquote> <p>Friends don’t let friends view scene-linear imagery without an “S-shaped” view transform.&nbsp;[0]</p> </blockquote> <p>which is by the way a good reference to read up on, with comparison images between linear, naive gamma mapped, and images with s-curves applied to&nbsp;them.</p> <p>in darktable we try to match approximately how vendors process their images by guessing the basecurves visually/manually. if your camera is not supported yet or you don&#8217;t like the result or just want to play with it, there is also a way to measure the basecurve from a raw and jpg&nbsp;pair.</p> <h1>measuring the&nbsp;basecurve</h1> <p>you&#8217;ll need a raw file and a corresponding jpg from your camera. from this we can try to guess the basecurve applied in the jpg. credits for the initial version of this tool go to torsten&nbsp;bronger.</p> <p>if you think about it it&#8217;s surprising that we can get useful information from this, since there is a lot of processing done on chip on your raw data to create the jpg. for example there is white balancing, a color matrix, and then the basecurve (plus a lot more which we&#8217;re conveniently going to ignore). actually the tool we use to solve for all these things at the same time is ignorance, so for best results you should make sure your input image makes the impact of those factors&nbsp;minimal:</p> <ul> <li>take a blurry shot, to rule out effects of sharpening, noise, and&nbsp;denoising.</li> <li>try to get as much dynamic range as you can, blacks and blown highlights (you probably need to go one or two stops over what you think you need to make the raw overexpose,&nbsp;too).</li> <li>Shoot using the camera&#8217;s default image style (often called &#8220;standard&#8221; <em>not</em> &#8220;neutral&#8221;) if you have special image filters, hipster modes, dynamic light enhancement things in your camera, switch them off (such as <code>Nikon Active D-Light',</code>Canon Auto Lighting Optimizer (<span class="caps">ALO</span>)&#8217;, `Sony Dynamic Range Optimizer (<span class="caps">DRO</span>)&#8217; or Samsung Smart Range,&nbsp;etc).</li> <li>try to make the target appear as black and white as possible (after camera white&nbsp;balancing).</li> </ul> <p>a suitable shot might look like this user contributed shot&nbsp;here:</p> <p><span><a href="https://www.darktable.org/2013/10/about-basecurves/example.jpg"><img alt="example" src="example_thumb.jpg" /></a></span></p> <p>you will need a git checkout of darktable and build and run the tool as follows. note that you don&#8217;t need to compile darktable itself from git, also you don&#8217;t need most build dependencies. in the directory of your local git checkout, navigate <a href="https://github.com/darktable-org/darktable/tree/master/tools/basecurve">to the tools/basecurve subdirectory</a> and execute a few&nbsp;commands:</p> <div class="highlight"><pre>cd tools/basecurve make dcraw -6 -W -g 1 1 -w input.raw # now create the jpg by either /one/ of the two: # use thumbnail dcraw -e input.raw &amp;&amp; mv inputraw_thumb.ppm inputjpg.ppm # use jpg you took in raw+jpg mode convert input.jpg inputjpg.ppm # create basecurve ./basecurve input.ppm inputjpg.ppm gnuplot plot evince basecurve.pdf </pre></div> <p>that should look something&nbsp;like</p> <p><span><a href="https://www.darktable.org/2013/10/about-basecurves/basecurve-0.png"><img alt="basecurve-0" src="basecurve-0_thumb.png" /></a></span></p> <p><span><a href="https://www.darktable.org/2013/10/about-basecurves/basecurve-1.png"><img alt="basecurve-1" src="basecurve-1_thumb.png" /></a></span></p> <p>where the last plot compares the green channel to the fitted spline which will be exported for use in darktable. to improve the fit you can give a third parameter to the basecurve tool to set the number of nodes. 20 is the&nbsp;maximum.</p> <h1>using your measured curve in&nbsp;darktable</h1> <p>to use your newly created curve, all you need to do is to copy/paste the output of the script above into a shell. beware, you&#8217;re altering your database directly! please back it up&nbsp;first!</p> <p>it might look something&nbsp;like:</p> <div class="highlight"><pre>echo &quot;INSERT INTO presets VALUES(&#39;measured basecurve&#39;,&#39;&#39;,&#39;basecurve&#39;,2,X&#39;00000000c2b8d03a2c113f3bfbf7fe3a2c11bf3cc304b33c7c36a13d21750b3e2c113f3e1577ba3ec496ba3e62e7213f7c36213ff4135c3f0000803f0000803f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000020000000000000000000000&#39;,1,X&#39;00000000180000000000C842000000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F00000000000000000000803F0000803F&#39;,7,0,&#39;&#39;,&#39;%&#39;,&#39;%&#39;,&#39;%&#39;,0.0,51200.0,0.0,10000000.0,0.0,100000000.0,0.0,1000.0,0,0,0,0,2);&quot; | sqlite3 ~/.config/darktable/library.db </pre></div> <p>if you restart darktable after doing that, you should have a new preset by the name you gave above (`measured basecurve&#8217;) in the basecurve module.&nbsp;enjoy!</p> <h1>references</h1> <ul> <li> <p>[0] <a href="http://cinematiccolor.com/">Cinematic&nbsp;Color</a></p> <p>From Your Monitor to the Big&nbsp;Screen</p> <p>A <span class="caps">VES</span> Technology Committee White&nbsp;Paper</p> <p>Oct 17,&nbsp;2012</p> </li> </ul><img src="https://www.darktable.org/2013/10/about-basecurves/basecurve-0.png" class="hidden-lede">joMon, 28 Oct 2013 20:56:40 +0000tag:www.darktable.org,2013-10-28:2013/10/about-basecurves/blogfurther readingUsing Lua with darktablehttps://www.darktable.org/2013/09/using-lua-with-darktable/<p>The next major release of darktable will contain multiple features that have been discussed on this blog and that will make it more powerful than ever. These new features will allow you to process your images in new and creative&nbsp;ways.</p> <p>However there is one new feature in the upcoming darktable release that is more about Digital Assets Management and simplifying your workflow: Lua&nbsp;scripting.</p> <!-- more --> <p>Lua is a scripting language that is commonly used to add scripting capabilities to programs. It is a programming language that is particularly simple to&nbsp;learn.</p> <p>This post will give you a brief introduction to Lua in darktable. It is not intended to teach you Lua but to show what Lua will allow you to do and get you to read one of the multiple tutorials on Lua that you will find on the&nbsp;web.</p> <p>The following tutorial will only work with the latest master branch and if Lua was enabled at compile&nbsp;time.</p> <h1>Writing a Lua hello&nbsp;world</h1> <p>When darktable starts it will run a single Lua script called <em>luarc</em> within your configuration directory. This file probably doesn&#8217;t exist, so create it and add the following lines in&nbsp;it:</p> <div class="highlight"><pre>dt = require &quot;darktable&quot; dt.print(&quot;Hello World!&quot;) </pre></div> <p>The first line tells the Lua engine to load all darktable specific functionalities in a variable called <em>dt</em>.</p> <p>The second line tells Lua to display a control message (a small window in the middle of the main area) and display the string &#8220;Hello World!&#8221; in&nbsp;it.</p> <p>Now start darktable. You should see that small window once the darktable window appears. Congratulation, you have run your first Lua&nbsp;script.</p> <h1>Reloading a directory on&nbsp;startup</h1> <p>That was fun, but let&#8217;s do something useful for a&nbsp;change.</p> <p>A common way to organize images is to store them all in subdirectories of a common image directory. A commonly requested feature on the darktable mailing list is to teach darktable about this structure and re-scan that directory on startup. Let&#8217;s do&nbsp;that.</p> <p>This time put the following lines in your <em>luarc</em>&nbsp;file</p> <div class="highlight"><pre><span class="n">dt</span> <span class="o">=</span> <span class="kn">import</span> <span class="s2">&quot;darktable&quot;</span> <span class="n">dt</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">import</span><span class="p">(</span><span class="s2">&quot;&lt;&lt;em&gt;path to your directory&gt;&lt;/em&gt;&quot;</span><span class="p">)</span> </pre></div> <p>And you should automatically reload the directory on&nbsp;startup.</p> <p>If it doesn&#8217;t work, check any message printed by Lua on the console. This is where you will usually see syntax errors and runtime&nbsp;errors.</p> <h1>Making this script a little bit more&nbsp;configurable</h1> <p>Ok, this is nice but we can improve it a little. Writing the path in the script is not very flexible and it would be much better to be able to set the path in darktable&#8217;s configuration menu. Let&#8217;s do&nbsp;that.</p> <div class="highlight"><pre>dt = require &quot;darktable&quot; dt.preferences.register(&quot;myScript&quot;,&quot;load_directory&quot;,&quot;string&quot;,&quot;Image directory&quot;,&quot;A directory that will be automatically reloaded on startup&quot;,&quot;&quot;) dt.database.import(dt.preferences.read(&quot;myScript&quot;,&quot;load_directory&quot;,&quot;string&quot;)) </pre></div> <p>This works… but with a twist. There is an error in the console because the directory isn&#8217;t found. Before fixing this, let&#8217;s analyze the code&nbsp;above.</p> <p><em>dt.preferences.register</em> will add a new preference in the Lua tab of the preference&nbsp;menu.</p> <ul> <li>The first two parameters are a script name and the name of the preference. These two strings are invisible to the user and will uniquely identify the&nbsp;preference.</li> <li>The next parameter is the type of the preference. In our case it is a simple string, so we use <em>&#8220;string&#8221;</em>&nbsp;here.</li> <li>The parameter after that is the text of the preference as it will appear in the preference&nbsp;menu.</li> <li>Then comes a tooltip that will be displayed when the user hovers over the text&nbsp;box.</li> <li>And last is the default value to report when someone attempts to read the preference and the user hasn&#8217;t set it yet. It is also used to reset the preference when the user double-clicks on the preference label in the preference&nbsp;menu.</li> </ul> <p>After that, we read the preference (using the script name and the preference name to identify the preference we want to read) and call <em>dt.database.import</em> to do the real job for&nbsp;us.</p> <p>The default value for our preference is the empty string, and this is causing the problem we see in the console. Lua uses exceptions to report errors. This tutorial won&#8217;t explain exactly what an exception is, but we need to catch it before it goes up to the console and do something about it. Here we will just catch all exceptions and not do anything, since an unknown directory is not really a&nbsp;problem.</p> <p>Let&#8217;s replace the line importing the directory with the following&nbsp;line:</p> <div class="highlight"><pre>pcall(dt.database.import,dt.preferences.read(&quot;myScript&quot;,&quot;load_directory&quot;,&quot;string&quot;)) </pre></div> <p>Note that we don&#8217;t call <em>dt.database.import</em> directly. We pass that function as a parameter to pcall. pcall will catch all exceptions and report them as its own result (which we ignore&nbsp;here).</p> <p>That&#8217;s good enough for importing… let&#8217;s do something a bit&nbsp;different</p> <h1>Playing with the selection and&nbsp;shortcuts</h1> <p>Another common request on the darktable mailing list is to have a way to select images easily according to some criteria. The detail depends on the person asking and the particular workflow needed. Let&#8217;s look at a  way to do that with&nbsp;Lua.</p> <p>First a little feature to make the darktable selection more&nbsp;handy</p> <div class="highlight"><pre>dt = require &quot;darktable&quot; local bounce_buffer = {} local function callback() bounce_buffer = dt.gui.selection(bounce_buffer) end dt.register_event(&quot;shortcut&quot;,callback,&quot;switch the current selection with a temporary buffer&quot;) </pre></div> <p>The second line creates a local variable called <em>bounce_buffer</em> and initializes it to an empty&nbsp;array.</p> <p>The next block of code (until the <em>end</em> keyword) defines a function called <em>callback</em>. This function will switch the current selection and the content of the <em>bounce_buffer</em>&nbsp;variable.</p> <p>To do that it uses a function called <em>dt.gui.selection </em>. This function will return the current selection and will set the selection to its first parameter. An empty array represents the empty&nbsp;selection.</p> <p>Last, the call to <em>dt.register_event</em> tells darktable to register a new event (here a <em>shortcut</em>) and call a function (here <em>callback</em>) when that event happens. The last argument is particular to shortcut events, it&#8217;s the label for the shortcut in the shortcut&nbsp;menu.</p> <p>Now that the code is in place, you will see an entry for this action in the <em>lua</em> section of the shortcut page of the preference window. Set a shortcut, select a couple of images and try it out. Pretty&nbsp;handy.</p> <h1>Selecting images with a given color&nbsp;label</h1> <p>That&#8217;s nice, but let&#8217;s try something different. When I use darktable, each color label has a precise meaning for me and I tend to want to quickly select all images with a given color label. The following code allows me to define a shortcut to do just&nbsp;that.</p> <div class="highlight"><pre><span class="n">dt</span> <span class="o">=</span> <span class="kn">import</span> <span class="s2">&quot;darktable&quot;</span> <span class="n">table</span> <span class="o">=</span> <span class="kn">import</span> <span class="s2">&quot;table&quot;</span> <span class="n">local</span> <span class="n">function</span> <span class="n">callback</span><span class="p">()</span> <span class="n">local</span> <span class="n">selection</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span><span class="n">image</span> <span class="ow">in</span> <span class="n">ipairs</span><span class="p">(</span><span class="n">dt</span><span class="o">.</span><span class="n">database</span><span class="p">)</span> <span class="n">do</span> <span class="k">if</span> <span class="n">image</span><span class="o">.</span><span class="n">red</span> <span class="n">then</span> <span class="n">table</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">selection</span><span class="p">,</span><span class="n">image</span><span class="p">)</span> <span class="n">end</span> <span class="n">end</span> <span class="n">dt</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">selection</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span> <span class="n">end</span> <span class="n">dt</span><span class="o">.</span><span class="n">register_event</span><span class="p">(</span><span class="s2">&quot;shortcut&quot;</span><span class="p">,</span><span class="n">callback</span><span class="p">,</span><span class="s2">&quot;select all red images&quot;</span><span class="p">)</span> </pre></div> <p>With what we know already, this code should be quite readable. The big difference is the new <em>callback</em> function. This one will loop through all our images and build a list of those images before passing that list to <em>dt.gui.selection</em>.</p> <h1>Exporting our images as a&nbsp;mosaic</h1> <p>To finish our little journey into Lua, let&#8217;s use Lua to build a new way to export&nbsp;images.</p> <p>We will use GraphicsMagick to create a mosaic image out of our current&nbsp;selection.</p> <p>GraphicsMagick has an all-purpose command line tool that has the following (simplified)&nbsp;syntax</p> <div class="highlight"><pre>gm montage &lt;input files…&gt; output_file </pre></div> <p>We will integrate this into the existing export user interface so we can use darktable to easily created a tiled image of all the exported&nbsp;images.</p> <p>The following code will do that for&nbsp;us:</p> <div class="highlight"><pre>local function merge_images(storage,image_table)     dt.print_error(&quot;Will try to stitch now&quot;)     command = &quot;gm montage &quot;     for _,v in pairs(image_table) do         command = command..v..&quot; &quot;     end     command = command..dt.configuration.tmp_dir..&quot;/darktable_export.png&quot;     os.execute(command)     dt.print(&quot;Stitching saved to &quot;..dt.configuration.tmp_dir..&quot;/darktable_export.png&quot;) end dt.register_storage(&quot;mosaic&quot;,&quot;mosaic generator&quot;,nil,merge_images) </pre></div> <p>Most of this code should be understandable at this point. The only new functions are <em>os.execute</em> and <em>dt.register_storage</em>.</p> <p><em>os.execute</em> is a standard Lua function that will take a string as a parameter and run the corresponding&nbsp;command.</p> <p><em>dt.register_storage</em> will add a new storage implemented in Lua. Storages are the different methods that darktable can use to store images (facebook, picasa, e-mail or simply as files on the local&nbsp;computer).</p> <ul> <li>The first parameter is a unique name for the&nbsp;storage.</li> <li>The second parameter is the name as it will appear inside&nbsp;darktable.</li> <li>The third parameter is a function to be called once for each image. We don&#8217;t use it here so we set it to <em>nil</em>.</li> <li>The last parameter is a function to be called once all images have been exported. This is where we do the real&nbsp;job.</li> </ul> <p>With this code in your <em>luarc</em> and GraphicsMagick installed, you should have a new entry in the export module allowing you to export the selection and generate a composite image out of&nbsp;it.</p> <p>Simple isn&#8217;t&nbsp;it?</p> <h1>Conclusion</h1> <p>We have only scratched the surface of the Lua language and what can be done with it in darktable, but I hope this article has given you some ideas of new stuff to do using this nice new&nbsp;feature.</p> <p>If you are interested, you can find the Lua reference manual <a href="https://www.lua.org/manual/5.2/manual.html">here</a>.</p> <p>darktable&#8217;s Lua interface is documented <a href="https://darktable.org/redmine/projects/darktable/wiki/LuaAPI">here</a>.</p><img src="https://www.darktable.org/2013/09/using-lua-with-darktable/img_0057.jpg" class="hidden-lede">boucmanTue, 24 Sep 2013 08:22:05 +0000tag:www.darktable.org,2013-09-24:2013/09/using-lua-with-darktable/upcoming featurereleased darktable 1.2.3https://www.darktable.org/2013/09/released-darktable-1-2-3/<p>Dear&nbsp;all,</p> <p>we just released another patch version for the stable branch 1.2. As usual you can find the source tarball&nbsp;here:</p> <ul> <li><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.3.tar.xz/download">source&nbsp;tarball</a></li> <li>The <a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-release">Ubuntu <span class="caps">PPA</span></a> has already been updated by Pascal&nbsp;(thanks!),</li> <li><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.3.dmg/download"><span class="caps">OS</span> X disk&nbsp;image</a></li> <li>builds for other distributions will hit the respective repositories&nbsp;soon</li> </ul> <h2>We collected the following goodies for&nbsp;you:</h2> <ul> <li>Update to RawSpeed&nbsp;r570</li> <li>Canon 70D&nbsp;(preliminary)</li> <li>Olympus E-P5 (incl. preliminary Adobe&nbsp;Coeff.)</li> <li>Samsung <span class="caps">NX2000</span></li> <li>Sony&nbsp;RX100m2</li> <li>Sony <span class="caps">SLT</span>-A58&nbsp;(updated)</li> </ul> <h2>White Balance&nbsp;Presets:</h2> <ul> <li>Sony <span class="caps">NEX</span>-5R</li> <li>Sony <span class="caps">SLT</span>-A58</li> <li>Nikon D3200&nbsp;(updated)</li> <li>Pentax <span class="caps">K20D</span></li> </ul> <h2>Enhanced Color&nbsp;Matrix:</h2> <ul> <li>Pentax <span class="caps">K20D</span></li> </ul> <h2>Noise&nbsp;Profiles:</h2> <ul> <li>Canon <span class="caps">EOS</span> 1100D == Canon <span class="caps">EOS</span> Rebel&nbsp;T3</li> <li>Canon PowerShot&nbsp;S95</li> <li>Canon PowerShot&nbsp;G11</li> <li>Nikon Coolpix&nbsp;P330</li> <li>Sony&nbsp;A580</li> <li>Fuji&nbsp;X10</li> <li>Pentax <span class="caps">K20D</span></li> </ul> <h2>Fixes and&nbsp;improvements:</h2> <ul> <li>Increased maximum cache size to <span class="caps">8GB</span></li> <li><span class="caps">OS</span> X: fix Facebook&nbsp;uploads</li> <li>Adjustments to default lowpass blur&nbsp;settings</li> <li>Adjustments to dithering slider&nbsp;ranges</li> <li>Metadata viewer: fix display of focal length: indicate unit and hide if&nbsp;invalid.</li> <li>Chromatic Aberrations: fix segfault for small&nbsp;buffers</li> <li>Color pickers: fix various issues, e.g.&nbsp;#9482</li> <li>More guides for Crop <span class="amp">&amp;</span>&nbsp;Rotate</li> <li>Improve light table usability: when viewing images in fullscreen wrap around at line end when pressing right arrow&nbsp;key</li> <li>Soften: massive speed improvements by using <span class="caps">SSE</span> and&nbsp;OpenMP</li> <li>Deleting images from camera is not supported anymore for&nbsp;safety.</li> <li>Exposure module now supports multiple&nbsp;instances</li> <li>Support for custom meta data burn in (see <a href="https://github.com/darktable-org/darktable/commit/6ac7ba055440aa27f79f0a67ac112799a0e7785e">commit 6ac7ba055440aa27f79f0a67ac112799a0e7785e</a>)</li> <li>OpenCL support for nVidia GeForce <span class="caps">GT330</span></li> <li><span class="caps">PFM</span>: load timestamp as date <span class="amp">&amp;</span> time&nbsp;taken.</li> <li>Fix bug prohibiting image rating by&nbsp;mouse</li> <li>Update Picasa uploader: references Google+&nbsp;now</li> <li>Some fixes for memory leaks, deadlocks, background&nbsp;jobs</li> <li>Fixes of on-screen handles for Crop&Rotate; and <span class="caps">GND</span>&nbsp;modules</li> <li>0 bytes files will no longer be imported but&nbsp;ignored</li> </ul> <p>As usual: enjoy the&nbsp;release!</p> <p>(and: <a href="https://www.darktable.org/contact/">give feedback</a>, <a href="https://darktable.org/redmine/projects/darktable/issues">report bugs</a>, <a href="/blog/">read our blog</a>, try the <a href="https://github.com/darktable-org/darktable/commits/master">development branch</a>, go out and take photos&nbsp;&#8230;)</p> <p>This might be the last point release of the darktable 1.2 stable branch. Prepare yourselves for some major improvements and new features&nbsp;&#8230;</p><img src="https://www.darktable.org/2013/09/released-darktable-1-2-3/ginko_01_wide.jpg" class="hidden-lede">smnFri, 13 Sep 2013 12:19:52 +0000tag:www.darktable.org,2013-09-13:2013/09/released-darktable-1-2-3/darktable releasehave your lens calibrated!https://www.darktable.org/2013/07/have-your-lens-calibrated/<p>just a quick plug for torsten&#8217;s great new service which allows you to calibrate your lens for lensfun. this will enable you to use darktable&#8217;s lens correction module with your lens if it hasn&#8217;t been calibrated by others for you&nbsp;yet.</p> <p>all you need to do is take some sample images and upload them&nbsp;here:</p> <p><a href="http://wilson.bronger.org/calibration">http://wilson.bronger.org/calibration</a></p> <p>the page contains some more detailed instructions about which images are useful and which&nbsp;aren&#8217;t.</p> <p>enjoy!</p><img src="https://www.darktable.org/2013/07/have-your-lens-calibrated/lens.jpg" class="hidden-lede">joTue, 30 Jul 2013 11:53:16 +0000tag:www.darktable.org,2013-07-30:2013/07/have-your-lens-calibrated/announcementwebsitereleased darktable 1.2.2https://www.darktable.org/2013/06/released-darktable-1-2-2/<p>Dear&nbsp;all,</p> <p>we just released another patch version for the stable branch 1.2. As usual you can find the source tarball&nbsp;here:</p> <ul> <li><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.2.tar.xz/download">source&nbsp;tarball</a></li> <li>The <a href="https://launchpad.net/~pmjdebruijn/+archive/darktable-release">Ubuntu <span class="caps">PPA</span></a> has already been updated by Pascal&nbsp;(thanks!),</li> <li><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.2.dmg/download"><span class="caps">OS</span> X disk&nbsp;image</a></li> <li>other builds will follow&nbsp;soon</li> </ul> <p>We don&#8217;t have too many commits to report but since quite some of those we picked concern support of new hardware we decided to release this version comparatively early making it more or less a &#8220;hardware&nbsp;release&#8221;:</p> <ul> <li>updated rawspeed r553. Support&nbsp;for</li> <li>Canon <span class="caps">EOS</span>&nbsp;700D</li> <li>Nikon Coolpix&nbsp;P330</li> <li>New Olymbus base&nbsp;curve</li> <li>Updated Adobe&nbsp;Coeffs</li> </ul> <h2>Enhanced color&nbsp;matrices:</h2> <ul> <li>Canon 700D (from Canon&nbsp;650D)</li> <li>Canon 100D (from Canon&nbsp;650D)</li> <li>Sony <span class="caps">NEX</span>-7</li> </ul> <h2>White balance&nbsp;presets:</h2> <ul> <li>Some updates from&nbsp;UFRaw</li> <li>Canon&nbsp;100D</li> <li>Canon&nbsp;700D</li> <li>Sony <span class="caps">SLT</span>-A37</li> <li>Nikon Coolpix&nbsp;P330</li> </ul> <h2>Noise&nbsp;profiles:</h2> <ul> <li>Canon <span class="caps">EOS</span>-M</li> <li>Olympus E-600 (from: Olympus&nbsp;E-30)</li> <li>Olympus E-620 (from: Olympus&nbsp;E-30)</li> <li>Samsung <span class="caps">WB2000</span></li> <li>Sony&nbsp;A99v</li> <li>Panasonic <span class="caps">DMC</span>-G10 iso&nbsp;100</li> <li>Nikon&nbsp;D60</li> </ul> <h2>Bug&nbsp;fixes:</h2> <ul> <li>0 star rating working&nbsp;again</li> <li><span class="caps">LT</span>: ctrl+d duplicates per default&nbsp;now</li> <li>Some fixes concerning locale&nbsp;handling</li> <li>double click on film strip jumps to&nbsp;image</li> <li>remember position in&nbsp;collections</li> <li>ctrl+k jumps to previous&nbsp;collection</li> <li>Blending parameters are preserved when module is&nbsp;deactivated</li> <li>In full-preview (alt-1) ratings and labels are only applied to image&nbsp;shown</li> <li>Various OpenCL fixes, e.g. compilation on Mac <span class="caps">OS</span>&nbsp;X</li> <li>libsquish compilation now&nbsp;optional</li> <li>dr: deactivate interpolation at 200%&nbsp;zoom</li> </ul> <p>Enjoy the&nbsp;release!</p> <p>(and as usual: <a href="https://www.darktable.org/contact/">give feedback</a>, <a href="https://darktable.org/redmine/projects/darktable/issues">report bugs</a>, <a href="/blog/">read our blog</a>, try the <a href="https://github.com/darktable-org/darktable/commits/master">development branch</a>, go out and take&nbsp;photos&#8230;)</p><img src="https://www.darktable.org/2013/06/released-darktable-1-2-2/3.jpg" class="hidden-lede">smnFri, 28 Jun 2013 07:24:49 +0000tag:www.darktable.org,2013-06-28:2013/06/released-darktable-1-2-2/announcementdarktable releasereleased darktable 1.2.1https://www.darktable.org/2013/05/released-darktable-1-2-1/<p>Dear&nbsp;all,</p> <p>we just released a patch version for the stable branch 1.2. As usual you can find the source tarball&nbsp;here:</p> <ul> <li><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.1.tar.xz/download">source&nbsp;tarball</a></li> <li>The Ubuntu <span class="caps">PPA</span> has already been updated by Pascal&nbsp;(thanks!),</li> <li>the Mac <span class="caps">OSX</span> image will probably take a little&nbsp;longer.</li> </ul> <p>We collected almost 150 commits on top of the last release from April, 7 which bring you quite some bugfixes, new noise profiles and white balance settings for several cameras&nbsp;etc.</p> <p>One major change concerning the release itself has been made. The development team decided to exclude translations which are not properly finished from releases. The corresponding <span class="caps">PO</span> files will however stay in the git version. The selection has been done based on the percentage of translated and fuzzy strings since we are lacking detailed knowledge about the languages in&nbsp;question.</p> <p>But have a look&nbsp;yourself:</p> <h2>Translation&nbsp;changes</h2> <ul> <li>New translation:&nbsp;Danish</li> <li>Some translations have been removed from the release due to missing&nbsp;strings</li> </ul> <h2>New noise&nbsp;profiles</h2> <ul> <li>Canon <span class="caps">EOS</span> 450D / Kiss&nbsp;X2</li> <li>Canon <span class="caps">EOS</span> 1100D / <span class="caps">REBEL</span>&nbsp;T3</li> <li>Canon <span class="caps">EOS</span> 1D Mark <span class="caps">II</span></li> <li>Canon <span class="caps">EOS</span> 1D Mark <span class="caps">III</span></li> <li>All Canon Model names are now recognized, e.g. Canon <span class="caps">EOS</span> 350D and Canon <span class="caps">EOS</span> 350D <span class="caps">DIGITAL</span> and Canon <span class="caps">EOS</span> <span class="caps">DIGITAL</span> <span class="caps">REBEL</span> <span class="caps">XT</span> and Canon <span class="caps">EOS</span> Kiss Digital N point to the same&nbsp;camera.</li> <li>Olympus&nbsp;E-520</li> <li>Olympus&nbsp;E-1</li> <li>Olympus&nbsp;E-3</li> <li>Olympus&nbsp;E-P2</li> <li>Pentax&nbsp;K-30</li> <li>Panasonic <span class="caps">GH</span>-2</li> <li>Panasonic <span class="caps">DMZ</span>-<span class="caps">FZ18</span></li> <li>Additional data for Pentax K-5 <span class="caps">II</span></li> <li>Nikon&nbsp;D7100</li> <li>Nikon&nbsp;D5200</li> <li>Sony&nbsp;A57</li> </ul> <h2>White balances, color&nbsp;matrices</h2> <ul> <li>Fix issues with different camera model names for various Canon cameras (see&nbsp;above)</li> <li>White balance for Panasonic <span class="caps">DMC</span>-<span class="caps">GH2</span></li> <li>Updates whitebalance list with the latest version of UFRaw&#8217;s cvs&nbsp;version</li> <li>Whitebalances for Samsung <span class="caps">NX5</span>, <span class="caps">NX10</span>, <span class="caps">NX11</span> (copied from <span class="caps">NX100</span>)</li> </ul> <h2>Bugfixes</h2> <ul> <li>new RawSpeed version&nbsp;r537</li> <li>Compatible with openEXR&nbsp;2.0</li> <li>Facebook export now allows <span class="caps">HQ</span> images (up to&nbsp;2048px)</li> <li>Blend mode &#8220;vividlight&#8221; should work for&nbsp;NaNs</li> <li>Fix compile issues for&nbsp;OpenBSD</li> <li>Whitebalance is now relative to daylight, not to camera white balance (this will not change any processing you have done, only the values displayed will&nbsp;differ)</li> <li>Now importing folder via key accelerator is&nbsp;supported.</li> <li>Only one temperature slider in white&nbsp;balance</li> <li>Some fixes to the zoom behaviour in darkroom&nbsp;mode</li> <li>New lensfun geometries now supported (with lensfun &gt;=&nbsp;0.2.7)</li> <li>More coherent bauhaus <span class="caps">UI</span> for the split toning&nbsp;module</li> <li>The color transfer module is now marked as deprecated. Will be superseeded by color mapping in the next major&nbsp;release.</li> <li>Fix some possible deadlocks, memory leaks and null pointer&nbsp;dereferences</li> <li>Status message in top bar should be updated more frequently&nbsp;now</li> <li>Some more elaborate status messages if lens/camera not found in the lens correction module, if export&nbsp;failed</li> <li>Option for parallel export threads removed from config, too&nbsp;dangerous</li> <li>Option for thumbnail cache now specified in <span class="caps">MB</span></li> <li>Updated purge_non_existing_images.sh&nbsp;script</li> <li><span class="caps">CLI</span> option -d nan gives per-module output of NaN&nbsp;values</li> <li>Some minor renamings, typo fixings&nbsp;&#8230;</li> </ul> <p>Thanks to everybody who made this release possible. All developers, translators, proof readers, battle testers and the guys who maintain the great libraries we depend on. Furthermore a big thanks to all users which help to make darktable better by providing noise profiles, color matrices and white balance settings for their cameras, you effort is greatly&nbsp;appreciated!</p> <p>As usual, we have not been lazy, so for those of you which do not need to have a reliable darktable installation all the time: in git master some amazing new features have landed (check the blog &#8230;)&nbsp;– try it&nbsp;out!</p> <p>Cheers,&nbsp;Simon</p><img src="https://www.darktable.org/2013/05/released-darktable-1-2-1/IMG_5490_export2_wide.jpg" class="hidden-lede">smnTue, 28 May 2013 12:21:15 +0000tag:www.darktable.org,2013-05-28:2013/05/released-darktable-1-2-1/announcementdarktable releaseDisplay color management in darktablehttps://www.darktable.org/2013/05/display-color-management-in-darktable/<h2>The general picture on the modern Linux&nbsp;desktop</h2> <p>Modern Linux distros featuring either <span class="caps">GNOME</span>, Unity or <span class="caps">KDE</span> offer fairly easy configuration of color management, this system level configuration mostly pertains to the handling of an <span class="caps">ICC</span> display&nbsp;profile.</p> <p>If you have set a display profile via your system configuration tool (The Color applet in System Settings for <span class="caps">GNOME</span> or Unity), there are a few things to keep in&nbsp;mind.</p> <p>An <span class="caps">ICC</span> display profile consists of two main parts. First the so-called &#8220;vcgt&#8221;, which corrects for whitepoint (this is most noticeable on laptops which shift from being very blueish to a bit more yellowish) and gamma. The &#8220;vcgt&#8221; is loaded into X11 and applied to your whole screen, so all applications automatically benefit. On a <span class="caps">GNOME</span> or Unity desktop this is done by <span class="caps">GNOME</span> Settings Daemon during&nbsp;login.</p> <p>The second is the rest of the <span class="caps">ICC</span> profile, and this has to be processed in color management enabled application (typically via liblcms2). So we need a mechanism to pass the actual <span class="caps">ICC</span> profile to our applications without having to configure them all&nbsp;individually.</p> <p>The oldest mechanism is the _ICC_PROFILE atom, which allows a single display profile to be defined for your system (this obviously fails for dual head configurations). You can check if a profile is setup like&nbsp;so:</p> <div class="highlight"><pre>$ xprop -display :0.0 -len <span class="m">14</span> -root _ICC_PROFILE </pre></div> <p>On a <span class="caps">GNOME</span> or Unity system the _ICC_PROFILE is setup by <span class="caps">GNOME</span> Setting Daemon during&nbsp;login.</p> <p>On some systems there may be a _ICC_PROFILE_1 and _ICC_PROFILE_2 atom to facilitate dual head configurations. While darktable should pick up on those, I&#8217;m not sure how well other applications support this&nbsp;mechanism.</p> <p>The another relatively new mechanism is colord by Richard Hughes, which is an infrastructure daemon, which by it self does very little, as it&#8217;s mostly just an information/configuration store. But modern <span class="caps">GNOME</span>, Unity or <span class="caps">KDE</span> desktops store their display profile setups in colord, so applications can query colord which profile to apply depending on which screen they are displayed on (in case of a dual head configuration). Currently few applications are colord aware however. darktable is one of those&nbsp;few.</p> <p>If you haven&#8217;t setup a display profile yourself that doesn&#8217;t per-se mean there is no display profile active. Modern desktops actually query the display (via <span class="caps">EDID</span>) itself about its advertised color coverage, from which an automatic display profile is generated. An easy way to check if such an automatic profile was&nbsp;generated:</p> <div class="highlight"><pre># ls -l ~/.local/share/icc/edid-*.icc </pre></div> <p>For more in-depth information the following articles are highly&nbsp;recommended:</p> <ul> <li><a href="https://encrypted.pcode.nl/blog/2013/04/14/display-profiles-generated-from-edid/">https://encrypted.pcode.nl/blog/2013/04/14/display-profiles-generated-from-edid/</a></li> <li><a href="https://encrypted.pcode.nl/blog/2012/01/29/color-management-on-linux/">https://encrypted.pcode.nl/blog/2012/01/29/color-management-on-linux/</a></li> </ul> <h2>darktable&#8217;s current (1.0/1.1/1.2)&nbsp;implementation</h2> <p>First off I want to make something very clear, darktable&#8217;s darkroom mode is fully color managed and should always be used in situations where you are evaluating color. Since darktable is colord enabled (and if colord is properly setup) it should even render correct color in dual head&nbsp;configurations.</p> <p>In darktable&#8217;s lighttable mode there are however a few things you need to be aware of. When importing new raw photos into darktable, it will display the raws embedded thumbnail (which has been fully processed by the camera software) and the display profile is currently <span class="caps">NOT</span> being applied to these embedded thumbnails. Keep in mind, that these thumbnails have been processed by the proprietary firmware of the camera, so even if we applied the display profile it would still not match the processing that is done by darktable by default. It is however possible to disable the use of these embedded thumbnails altogether in darktable&#8217;s preferences, forcing all raws to be processed by darktable&#8217;s own imaging pipeline. This will slow down thumbnail generation by a few orders of magnitude, which is why this isn&#8217;t our default&nbsp;behavior.</p> <p>Once you&#8217;ve entered darkroom mode for a raw, the image has been processed in darktable&#8217;s imaging pipeline including the application of the display profile, so this result is now kept as an accurate thumbnail for that particular&nbsp;raw.</p> <p>If you&#8217;ve read that well, you might have noticed that we currently keep the display profile pre-applied in our thumbnail cache. Which is good for performance, and works just fine in most use-cases, but can result in ugly behavior for example when you change/replace your display, since darktable will still show thumbnails applied with the display profile of your previous display. In such a case you can forcibly remove the thumbnail cache like&nbsp;so:</p> <div class="highlight"><pre>$ rm -Iv ~/.cache/darktable/mipmaps-* </pre></div><img src="https://www.darktable.org/2013/05/display-color-management-in-darktable/lego_doctor.jpg" class="hidden-lede">pmjdebruijnFri, 10 May 2013 17:47:54 +0000tag:www.darktable.org,2013-05-10:2013/05/display-color-management-in-darktable/blogmaskshttps://www.darktable.org/2013/04/masks/<p>In darktable, selective editing was a long awaited feature. Our development version now allow limiting module effects to a region of the&nbsp;image.</p> <p>Remember the old times, the red light of the darkroom, the smell of the developing bath&nbsp;&#8230;</p> <p>Remember when you were using your hands or a small piece of cardboard to achieve some masking&nbsp;&#8230;</p> <p>Now you can do that in&nbsp;darktable.</p> <h1>example</h1> <p>let take this photo as an&nbsp;example.</p> <p><span><a href="https://www.darktable.org/2013/04/masks/example_ini.jpg"><img alt="example_ini" src="example_ini_thumb.jpg" /></a></span></p> <p>Here, we will get rid of the fluorescent orange wall. We will use the color zone module to desaturate reds, but doing so would also desaturate the lighthouse railings. We will use masks to avoid&nbsp;that.</p> <p><span><a href="https://www.darktable.org/2013/04/masks/example_desaturate.jpg"><img alt="example_desaturate" src="example_desaturate_thumb.jpg" /></a></span></p> <p>we now add a masks to limit the effect of the module to the wall only. Using the masks combobox from the module, we add a curve&nbsp;shape:</p> <p><span><a href="https://www.darktable.org/2013/04/masks/example_curve.jpg"><img alt="example_curve" src="example_curve_thumb.jpg" /></a></span></p> <p>And here is our final&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2013/04/masks/example_end.jpg"><img alt="example_end" src="example_end_thumb.jpg" /></a></span></p> <h1>masking&nbsp;interfaces</h1> <p>The masks combobox inside modules let you add new shapes, reuse existing shapes. But if you want to perform more complex tasks, you will have to use the masks manager which is in the left&nbsp;panel:</p> <p><span><a href="https://www.darktable.org/2013/04/masks/manager.png"><img alt="manager" src="manager_thumb.png" /></a></span></p> <p>Right-clicking on a shapes will open a popup menu with all the possible&nbsp;actions.</p> <h1>editing&nbsp;shapes</h1> <p>Two shapes types have been implemented: the simple circle (with feathering borders) and the more powerful curve shape. Here&#8217;s some tips to help you in shape&nbsp;creation:</p> <p>circle <span class="amp">&amp;</span>&nbsp;curve:</p> <ul> <li>you can change the radius of the circle by using the mousewheel within the&nbsp;circle.</li> <li>you can set the border size by using the mousewheel between the circle and the&nbsp;border</li> </ul> <p>curve:</p> <ul> <li>you can add control points by shift+clicking on an existing&nbsp;curve</li> <li>you can remove corners by right-clicking on&nbsp;them</li> <li>clicking on an existing control point will select it, allowing you to move it and making control-hooks appear that allow you to change the sharpness of the&nbsp;point</li> <li>right-clicking on a control hook will reset&nbsp;it.</li> <li>when creating a shape, you can press ctrl while adding control-points to add a sharp corner&nbsp;directly</li> <li>you can use the scrollwheel to change the border width of the whole&nbsp;shape</li> <li>the border width can also be set separately at each control point using the available&nbsp;anchors.</li> </ul> <h1>Advanced&nbsp;tips</h1> <ul> <li>combining masks and blendif offers a whole new world of&nbsp;possibilities</li> <li>when a shape is assigned to a module, a group of shapes is automatically created. You can use that group to build complex combinations of&nbsp;shapes</li> <li>shapes can be moved and combined within a group using boolean operators: union, intersection, difference and&nbsp;exclusion</li> <li>opacity can be set per-shape using&nbsp;ctrl+wheel</li> </ul> <h1>Cloning</h1> <p>The spot removal module is not limited to circles anymore. It can use any shape for advanced&nbsp;cloning.</p> <h1>Warning</h1> <p>masks are only available in the development branch of darktable. We wanted to share with you the awesome features that are coming but installing the development version of darktable isn&#8217;t a trivial thing. Do not use this on production&nbsp;work.</p> <p>Masks still have some known&nbsp;limitations</p> <ul> <li>there is no brush painting. masks are currently limited to&nbsp;curves</li> <li>very complex, self-intersecting curves might not render&nbsp;correctly</li> </ul> <p><em>Note: again, great thanks to Jeremy Rosen for his help in the writing of this blog&nbsp;post</em></p><img src="https://www.darktable.org/2013/04/masks/example_end_wide.jpg" class="hidden-lede">alicvbFri, 19 Apr 2013 09:05:43 +0000tag:www.darktable.org,2013-04-19:2013/04/masks/blogdevelopmentupcoming featureColor Mappinghttps://www.darktable.org/2013/04/color-mapping/<p>I&#8217;d like to give a few words on a new module named &#8220;color mapping&#8221; that is currently under development in our master branch. This module is a rework and enhancement of the older &#8220;color transfer&#8221; module. That older module had several issues which made a migration impossible. So we leave the old one behind as deprecated (old history stack still work as before) and for all new history stacks &#8220;color mapping&#8221; should be used&nbsp;instead.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm.jpg"><img alt="cm" src="cm_thumb.jpg" /></a></span></p> <p>The general aim of the module is transferring the look and feel of one image onto another. You can use it if you intend to harmonize the image&#8217;s colors of a photo series&nbsp;– or you may want to completely change the atmoshpere of an image, maybe even into an unnatural, surrealistic look. As its purpose is mainly an artistic one, the new module was put into the effect&nbsp;group.</p> <p>Mathematically &#8220;color mapping&#8221; uses an enhanced model of the groundbreaking work of Eric Reinhard et.al. [0]. The basic idea is to make a statistical match of lightness and colors between images by mapping their mean and variance values in an Lab-like color space. Our enhanced version analyses the color space of the images in form of color clusters to allow for a more fine-grained match of colors. In addition we use histogram equalization for lightness matching instead of the simpler mean/variance&nbsp;method.</p> <p>To use this module two steps are&nbsp;required:</p> <ul> <li> <p>First you open the source image in darkroom mode and acquire its color characteristics by pressing the &#8220;acquire as source&#8221; button. A set of color clusters is generated and displayed in the source clusters area. Each cluster is represented by a set of nine color swatches with the mean value in the center surrounded by swatches indicating the color variance within that cluster. The clusters are sorted in ascending order by their weight, which reflects the relative number of pixels that contribute to the&nbsp;clusters.</p> </li> <li> <p>Next you open your target image in darkroom mode. darktable has remembered the previously collected source clusters; if they are not yet displayed, press the reset button in the module&#8217;s expander bar. You now press the &#8220;acquire as target&#8221; button to generate a corresponding set of color clusters for your target image. It is displayed in the target clusters&nbsp;area.</p> </li> </ul> <p>When both source and target clusters are collected an automatic color mapping is applied to the target image. In its default settings the overall effect can be quite exaggerated. A set of sliders gives you control of the effect&#8217;s strength. You can also use blending operator &#8220;normal&#8221; to tame the effect. As the color mapping module comes early in the pixelpipe, you have a lot of freedom to further finetune the colors with modules like tone curve or color&nbsp;correction.</p> <p>The number of color clusters to apply&nbsp;– from 1 to 5&nbsp;– is a central parameter. In the most simple case only one color cluster is applied to all colors of the target image. This will provide a color cast as if the scene was illuminated with a light in the corresponding color. Sometimes this is what you aim for but frequently the situation is more complex. Often the source and target image contain different dominant colors and you want them to be mapped in a more smooth&nbsp;way.</p> <p>Let&#8217;s look at an example. We will take the following image as our target image. It shows a scene of Valencia&#8217;s Ciudad de las Artes y de las&nbsp;Ciencias.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex1.jpg"><img alt="cm_ex1" src="cm_ex1_thumb.jpg" /></a></span></p> <p>First we go for a grotesque case with strong color shifts to make the effects obvious. I want to transfer the greenish color atmosphere of this image (an abandoned cold war shelter&#8217;s washroom) to our target&nbsp;image.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex2.jpg"><img alt="cm_ex2" src="cm_ex2_thumb.jpg" /></a></span></p> <p>If I only take one cluster I get the following&nbsp;output.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex3.jpg"><img alt="cm_ex3" src="cm_ex3_thumb.jpg" /></a></span></p> <p>All colors are shifted towards the dominant green tint of the source image. The picture changes a bit if I take two&nbsp;clusters.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex4.jpg"><img alt="cm_ex4" src="cm_ex4_thumb.jpg" /></a></span></p> <p>Within the source image a first cluster now represents the greens, the second cluster the more neutral tones. In our target image one cluster represents the more blueish colors and the second the more reddish ones. The cluster mapping will apply the green tones of the source image onto the blue tones of the target image leaving the other colors neutral. This gives the overall impression of a sky with poisoned green clouds. And here finally the image if we take five&nbsp;clusters:</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex5.jpg"><img alt="cm_ex5" src="cm_ex5_thumb.jpg" /></a></span></p> <p>Now the color variety of the target image is much better preserved. Still the greenish tint of the source image has found its way into the target. The overall result is more credible but also less pronounced as in the previous two examples. Generally a higher number of clusters leads to a less pronounced&nbsp;effect.</p> <p>The mapping between source and target clusters is done automatically. Parameter &#8220;color dominance&#8221; gives you a level of control. If this parameter is set to zero, clusters are mapped according to color proximity. Each target cluster is checked against each source cluster and the color adjustment is done with the closest match. Depending on the source and target image this can lead to different target clusters being mapped to the same source cluster. If &#8220;color dominance&#8221; is set to its maximum 100%, the mapping is based on cluster weight. Instead of color proximity now the number of pixels contributing to a cluster plays the major role. The dominant color of the target image will be mapped to the dominant color of the source image. This is a bit similar to using a lower number of color clusters but allows a flexible adjustment without the need to recollect clusters in both source and target&nbsp;image.</p> <p>Typically the colorizing effect at 0% is rather subtle whereas it is quite bold at 100%. In-between values lead to a transition between the extremes. This transition is incremental&nbsp;– the mapping flips at certain threshold values which depend on the source/target&nbsp;images.</p> <p>Let&#8217;s take a new source image: one of the Gehry buildings in Düsseldorf&#8217;s Medienhafen shot shortly after&nbsp;sunset.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex6.jpg"><img alt="cm_ex6" src="cm_ex6_thumb.jpg" /></a></span></p> <p>Obviously the image has two dominant colors: blue and orange. So let&#8217;s take two color clusters. Here is the result if we set parameter &#8220;color dominance&#8221; to&nbsp;0%.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex7.jpg"><img alt="cm_ex7" src="cm_ex7_thumb.jpg" /></a></span></p> <p>The same source and target clusters, now applied with a color dominance of 100% give a much stronger&nbsp;effect.</p> <p><span><a href="https://www.darktable.org/2013/04/color-mapping/cm_ex8.jpg"><img alt="cm_ex8" src="cm_ex8_thumb.jpg" /></a></span></p> <p>In the last two cases I set parameter &#8220;histogram equalization&#8221; to 80%. This parameter controls how strong the tonal contrast of the source image is transferred onto the target&nbsp;image.</p> <p>You need to do some experiments with the number of clusters and the other parameters of this module by yourself to find the best suited settings for your aim. The current status of this module can be found in darktable&#8217;s master branch and will be part of darktable&#8217;s next feature&nbsp;release.</p> <p>[0] Erik Reinhard, Michael Ashikhmin, Bruce Gooch, Peter Shirley, &#8220;Color Transfer between Images&#8221;, <span class="caps">IEEE</span> Computer Graphics and Applications, September/October&nbsp;2001</p><img src="https://www.darktable.org/2013/04/color-mapping/cm_featured.jpg" class="hidden-lede">upegelowSun, 14 Apr 2013 19:54:34 +0000tag:www.darktable.org,2013-04-14:2013/04/color-mapping/blogdevelopmentupcoming featureblendingcolorcolor mappingLabtutorialreleased 1.2https://www.darktable.org/2013/04/released-1-2/<p>we released the next feature release&nbsp;(1.2):</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.tar.xz/download">source&nbsp;tarball</a></p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-usermanual.pdf/download">user&nbsp;manual</a></p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2.dmg/download">macintosh disk&nbsp;image</a></p> <p>as a feature release, it comes with a lot of new&nbsp;goodies:</p> <ul> <li><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/">profiled denoising:</a> adapt to the properties of your camera&#8217;s sensor (72 cameras already profiled for&nbsp;you).</li> <li><a href="https://www.darktable.org/2013/02/importing-lightroom-development/">lightroom import:</a> convert some basic edits from your lightroom collection to darktable&nbsp;operations.</li> <li><a href="https://www.darktable.org/2013/02/multi-instances/">multi instance support:</a> duplicate your modules and apply them more than one time with different&nbsp;settings.</li> <li>improved usability for distorting modules (streamline spot removal in the presence of crop/rotate for&nbsp;example).</li> <li>selective copy/paste of image&nbsp;processing.</li> <li>new more intuitive keystone correction&nbsp;tool.</li> <li>jpeg2000&nbsp;support.</li> <li>graphics magick import (support virtually all input image&nbsp;formats).</li> <li>much faster thumbnail loading (if you can live with crappy embedded&nbsp;thumbnails).</li> <li>incredibly lengthy list of small bug fixes, performance enhancements, and usability&nbsp;improvements.</li> <li>new camera support (decode and color&nbsp;matrices).</li> <li>dithering against&nbsp;banding.</li> <li>sharper thumbnails in lighttable&nbsp;mode.</li> <li>new oauth2 based picasa&nbsp;uploader.</li> <li>updated&nbsp;translations.</li> <li>and a thoroughly overhauled user manual, proof read by natives (thanks heaps&nbsp;guys!).</li> </ul> <p>this is the list of cameras supported for profiled denoising in this&nbsp;tarball:</p> <ul> <li>canon eos-1d mark&nbsp;iv</li> <li>canon eos-1ds mark&nbsp;ii</li> <li>canon eos&nbsp;20d</li> <li>canon eos&nbsp;30d</li> <li>canon eos&nbsp;350d</li> <li>canon eos&nbsp;400d</li> <li>canon eos&nbsp;40d</li> <li>canon eos&nbsp;450d</li> <li>canon eos&nbsp;50d</li> <li>canon eos&nbsp;550d</li> <li>canon eos&nbsp;5d</li> <li>canon eos 5d mark&nbsp;ii</li> <li>canon eos 5d mark&nbsp;iii</li> <li>canon eos&nbsp;600d</li> <li>canon eos&nbsp;60d</li> <li>canon eos&nbsp;650d</li> <li>canon eos&nbsp;6d</li> <li>canon eos&nbsp;7d</li> <li>canon eos rebel&nbsp;t1i</li> <li>canon eos rebel&nbsp;t3i</li> <li>canon eos rebel&nbsp;t4i</li> <li>canon powershot&nbsp;g10</li> <li>canon powershot&nbsp;g12</li> <li>canon powershot&nbsp;s90</li> <li>konica minolta dynax&nbsp;5d</li> <li>nikon&nbsp;d200</li> <li>nikon&nbsp;d300</li> <li>nikon&nbsp;d300s</li> <li>nikon&nbsp;d3100</li> <li>nikon&nbsp;d5000</li> <li>nikon&nbsp;d5100</li> <li>nikon&nbsp;d600</li> <li>nikon&nbsp;d700</li> <li>nikon&nbsp;d7000</li> <li>nikon&nbsp;d80</li> <li>nikon&nbsp;d800</li> <li>nikon&nbsp;d800e</li> <li>nikon&nbsp;d90</li> <li>olympus&nbsp;e-30</li> <li>olympus&nbsp;e-400</li> <li>olympus&nbsp;e-420</li> <li>olympus&nbsp;e-m5</li> <li>olympus&nbsp;e-pl1</li> <li>olympus&nbsp;e-pl5</li> <li>olympus&nbsp;xz-1</li> <li>olympus&nbsp;xz-2</li> <li>panasonic&nbsp;dmc-fz18</li> <li>panasonic&nbsp;dmc-g2</li> <li>panasonic&nbsp;dmc-g3</li> <li>panasonic&nbsp;dmc-g5</li> <li>panasonic&nbsp;dmc-gf1</li> <li>panasonic&nbsp;dmc-gh2</li> <li>panasonic&nbsp;dmc-gx1</li> <li>pentax&nbsp;k100d</li> <li>pentax&nbsp;k10d</li> <li>pentax&nbsp;k200d</li> <li>pentax&nbsp;k-5</li> <li>pentax k-5 ii&nbsp;s</li> <li>pentax&nbsp;k-7</li> <li>pentax&nbsp;k-m</li> <li>pentax&nbsp;k-r</li> <li>pentax&nbsp;k-x</li> <li>samsung&nbsp;nx100</li> <li>sony&nbsp;dsc-rx100</li> <li>sony&nbsp;dslr-a200</li> <li>sony&nbsp;dslr-a230</li> <li>sony&nbsp;dslr-a550</li> <li>sony&nbsp;dslr-a700</li> <li>sony&nbsp;nex-3</li> <li>sony&nbsp;nex-5n</li> <li>sony&nbsp;nex-6</li> <li>sony&nbsp;nex-7</li> <li>sony&nbsp;nex-c3</li> <li>sony&nbsp;slt-a55v</li> <li>sony&nbsp;slt-a65v</li> <li>sony&nbsp;slt-a77v</li> </ul> <p>these are all community contributed noise profiles, we&#8217;re quite happy about this great&nbsp;response!</p> <p>so string freeze is over! that means we&#8217;ll have cool new stuff in git for you to check out soon&nbsp;:)</p> <p>as always, thanks to everybody who made this possible. all the developers, translators, proof readers, battle testers and the guys who maintain the great libraries we depend on. you know who you&nbsp;are!</p><img src="https://www.darktable.org/2013/04/released-1-2/rimutaka.jpg" class="hidden-lede">joSun, 07 Apr 2013 08:18:42 +0000tag:www.darktable.org,2013-04-07:2013/04/released-1-2/announcementdarktable releasereleased 1.2rc2https://www.darktable.org/2013/03/released-1-2rc2/<p>we just released a new tarball for the second release&nbsp;candidate:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc2.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc2.tar.xz/download</a></p> <p>here is the macintosh disk&nbsp;image:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc2.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc2.dmg/download</a></p> <p>and this time it comes with an updated&nbsp;usermanual:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-usermanual.pdf/download">https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-usermanual.pdf/download</a></p> <ul> <li>the changes on top of rc1 are minor, some&nbsp;details:</li> <li>fixed a spurious crash/deadlock when switching images in filmstrip&nbsp;mode</li> <li>fixed a couple of exif strings for profiled&nbsp;denoising</li> <li>fixed gcc 4.8.0&nbsp;build</li> <li>new noise&nbsp;profiles</li> <li>fixed gphoto 2.5&nbsp;issues</li> <li>updated&nbsp;translations</li> <li>updated user&nbsp;manual!</li> </ul> <p>thanks all, and enjoy the&nbsp;release!</p><img src="https://www.darktable.org/2013/03/released-1-2rc2/pohutekawa.jpg" class="hidden-lede">joSat, 30 Mar 2013 10:32:33 +0000tag:www.darktable.org,2013-03-30:2013/03/released-1-2rc2/announcementdarktable releasereleased 1.2rc1https://www.darktable.org/2013/03/released-1-2rc1/<p>we just released a new tarball for the first release candidate in the next feature release&nbsp;(1.2):</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc1.tar.xz/download">source&nbsp;tarball</a></p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.2/darktable-1.2~rc1.dmg/download">mac disk&nbsp;image</a></p> <p>as a feature release, it comes with a lot of new&nbsp;goodies:</p> <ul> <li><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/">profiled denoising:</a> adapt to the properties of your camera&#8217;s sensor (72 cameras already profiled for&nbsp;you).</li> <li><a href="https://www.darktable.org/2013/02/importing-lightroom-development/">lightroom import:</a> convert some basic edits from your lightroom collection to darktable&nbsp;operations.</li> <li><a href="https://www.darktable.org/2013/02/multi-instances/">multi instance support:</a> duplicate your modules and apply them more than one time with different&nbsp;settings.</li> <li>improved usability for distorting modules (streamline spot removal in the presence of crop/rotate for&nbsp;example).</li> <li>selective copy/paste of image&nbsp;processing.</li> <li>new more intuitive keystone correction&nbsp;tool.</li> <li>jpeg2000&nbsp;support.</li> <li>graphics magick import (support virtually all input image&nbsp;formats).</li> <li>much faster thumbnail loading (if you can live with crappy embedded&nbsp;thumbnails).</li> <li>incredibly lengthy list of small bug fixes, performance enhancements, and usability&nbsp;improvements.</li> <li>new camera support (decode and color&nbsp;matrices).</li> <li>dithering against&nbsp;banding.</li> <li>sharper thumbnails in lighttable&nbsp;mode.</li> <li>new oauth2 based picasa&nbsp;uploader.</li> <li>and the final release 1.2 will contain a thoroughly overhauled user manual, proof read by natives (thanks heaps&nbsp;guys!).</li> </ul> <p>translations:</p> <ul> <li>ca: 253 translated messages, 394 fuzzy translations, 912 untranslated&nbsp;messages.</li> <li>cs: 1457 translated messages, 63 fuzzy translations, 39 untranslated&nbsp;messages.</li> <li>de: 1558 translated messages, 1 fuzzy&nbsp;translation.</li> <li>es: 1554 translated messages, 5 fuzzy&nbsp;translations.</li> <li>fi: 623 translated messages, 515 fuzzy translations, 421 untranslated&nbsp;messages.</li> <li>fr: 1558 translated messages, 1 fuzzy&nbsp;translation.</li> <li>gl: 406 translated messages, 561 fuzzy translations, 592 untranslated&nbsp;messages.</li> <li>it: 1458 translated messages, 61 fuzzy translations, 40 untranslated&nbsp;messages.</li> <li>ja: 1548 translated messages, 10 fuzzy translations, 1 untranslated&nbsp;message.</li> <li>nl: 1554 translated messages, 5 fuzzy&nbsp;translations.</li> <li>pl: 1454 translated messages, 62 fuzzy translations, 43 untranslated&nbsp;messages.</li> <li>pt_BR: 1549 translated messages, 6 fuzzy translations, 4 untranslated&nbsp;messages.</li> <li>pt_PT: 1554 translated messages, 5 fuzzy&nbsp;translations.</li> <li>ro: 726 translated messages, 453 fuzzy translations, 380 untranslated&nbsp;messages.</li> <li>ru: 1139 translated messages, 230 fuzzy translations, 190 untranslated&nbsp;messages.</li> <li>sq: 1553 translated messages, 6 fuzzy&nbsp;translations.</li> <li>sv: 1558 translated messages, 1 fuzzy&nbsp;translation.</li> <li>th: 171 translated messages, 203 fuzzy translations, 1185 untranslated&nbsp;messages.</li> <li>uk: 1538 translated messages, 14 fuzzy translations, 7 untranslated&nbsp;messages.</li> <li>zh_CN: 1083 translated messages, 254 fuzzy translations, 222 untranslated&nbsp;messages.</li> </ul><img src="https://www.darktable.org/2013/03/released-1-2rc1/img_0001_27.jpg" class="hidden-lede">joFri, 22 Mar 2013 20:25:29 +0000tag:www.darktable.org,2013-03-22:2013/03/released-1-2rc1/announcementdarktable releasedarktable 1.1.4 releasehttps://www.darktable.org/2013/03/darktable-1-1-4-release/<p>Hi,</p> <p>there is a new point release with a couple of smaller updates. The source tarball and <span class="caps">OSX</span> image can be found&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.4.tar.xz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.4.tar.xz/download</a></p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.4.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.4.dmg/download</a></p> <p>And the usermanual is still the&nbsp;same.</p> <h2>Fixes:</h2> <ul> <li>keep the styles plugin usable after applying a&nbsp;style</li> <li>darktable should now be better able to import some of the data from .xmp&#8217;s from other&nbsp;applications</li> <li>better redraw logic in darkroom&nbsp;mode</li> <li>it should be less likely to get blurry thumbnails in lighttable mode&nbsp;now</li> <li>on low end system use lower quality&nbsp;thumbnails</li> <li>work around some malformed icc&nbsp;profiles</li> <li>add a mandatory cprt tag to our embedded icc&nbsp;profiles</li> <li>prevent adobe rgb related trademark&nbsp;issue</li> <li>some fixes with regard to the&nbsp;colorpicker</li> <li>tooltips should now be more easily&nbsp;distinguisable</li> <li>fix build with new glib&nbsp;versions</li> <li>more assorted small&nbsp;fixes</li> </ul> <h2>Added preliminary camera&nbsp;support:</h2> <ul> <li>Nikon coolpix p7100 blackpoint&nbsp;fix</li> <li>Leica basecurve should apply to more camera models&nbsp;now</li> <li>Pentax k-5 ii&nbsp;(s)</li> <li>Nikon 1&nbsp;j3</li> <li>Nikon 1&nbsp;s1</li> <li>Improved panasonic dmc-g5&nbsp;support</li> <li>Improved panasonic dmc-lx7&nbsp;support</li> </ul> <h2>Improved color&nbsp;rendition:</h2> <ul> <li>Olympus e-m5 enhanced color matrix (frederic&nbsp;crozat)</li> </ul> <h2>New white balance&nbsp;presets:</h2> <ul> <li>Panasonic dmc-g5&nbsp;(thouks)</li> <li>pentax k-5 ii (s) (jack&nbsp;bowling)</li> <li>sony&nbsp;slt-a77v</li> <li>nikon&nbsp;d3200</li> <li>nikon d800 update (wolfgang&nbsp;goetz)</li> </ul> <p>darktable wouldn&#8217;t be where it is now if we weren&#8217;t able to depend on the great work of others, in particular we&#8217;d like to&nbsp;thank:</p> <p>klaus post (rawspeed), dave coffin (dcraw), andreas hugel (exiv2), andrew zabolotny (lensfun), marti maria (lcms), niels kristian bech jensen&nbsp;(ufraw).</p>pmjdebruijnFri, 15 Mar 2013 18:02:27 +0000tag:www.darktable.org,2013-03-15:2013/03/darktable-1-1-4-release/announcementdarktable releaseUpdated user manual onlinehttps://www.darktable.org/2013/03/updated-user-manual-online/<p>Dear&nbsp;all,</p> <p>the online user manual has been updated to reflect the latest release of darktable. This is the html version of the reworked user manual for darktable 1.1 which descibes all major features of darktables and serves as a reference for all image operation&nbsp;modules.</p> <p>The user manual for the upcoming darktable 1.2 is almost finished and is being proofread right now. Still, any changes and additions for the post-1.2 era are more than&nbsp;welcome!</p><img src="https://www.darktable.org/2013/03/updated-user-manual-online/Bildschirmfoto-vom-2013-02-17-232553_wide.png" class="hidden-lede">smnSat, 09 Mar 2013 10:54:43 +0000tag:www.darktable.org,2013-03-09:2013/03/updated-user-manual-online/String freeze for darktable 1.2https://www.darktable.org/2013/03/string-freeze-for-darktable-1-2/<p>Dear&nbsp;all,</p> <p>since March 3 we are in the string freeze phase for the upcoming darktable 1.2 release. This release will be a major new version introducing tons of new features (as you might have guessed by all the blog articles in the last months&nbsp;&#8230;).</p> <p>Please don&#8217;t push or provide patches with any new translatable strings to master or change them (that&#8217;s the ones in _(&#8220;&#8230;&#8221;)&nbsp;).</p><img src="https://www.darktable.org/2013/03/string-freeze-for-darktable-1-2/IMG_8143_export_wide.jpg" class="hidden-lede">smnSat, 09 Mar 2013 10:50:12 +0000tag:www.darktable.org,2013-03-09:2013/03/string-freeze-for-darktable-1-2/announcementdarktable releasemulti-instanceshttps://www.darktable.org/2013/02/multi-instances/<p>One of the upcoming new feature in darktable is the ability to use the same development module several times. By applying the same module multiple times and combining them with blendif it is possible to do some effects that could not be achieved previously without using external tools like the&nbsp;gimp.</p> <p>Modules that can be instantiated multiple times have a new icon in their header, next to the &#8220;reset&#8221; button. Clicking that icon will open a pop-up menu that allows you to create a new instance of the module, change the order in which the different instances are applied, or delete an instance of the module. Each instance can have its own parameters, can be activated or deactivates separately and can use presets. Note that the last instance of a module can&#8217;t be deleted, it can only be&nbsp;deactivated.</p> <p>Keeping with darktable&#8217;s philosophy, you can only rearrange modules of the same kind. The order of modules of different kind is optimized by the darktable developers in order to minimize quality loss. The different modules are, as usual, applied from bottom to&nbsp;top.</p> <h1>first&nbsp;example</h1> <p>To illustrate this new feature, let&#8217;s take a blake&amp;white&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_IMGP0612.jpg"><img alt="mi_IMGP0612" src="mi_IMGP0612_thumb.jpg" /></a></span></p> <p>Now we will add 2 new instances of graduated density. We now have three instances, including the first one. We set up each instance with a different colored&nbsp;gradient.</p> <p>Here is what can be&nbsp;achieve:</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_screen_gnd.jpg"><img alt="mi_screen_gnd" src="mi_screen_gnd_thumb.jpg" /></a></span></p> <h1>real life&nbsp;example</h1> <p>The previous example is nice, but apart for illustrating diffraction, it is not that useful. Multi-instance really shows its power when used with selective adjustments and the next example will show you how to do&nbsp;that.</p> <p>darktable does not currently implement masks, but we have a very powerful alternative, conditional blending, that allows to select region based on their color and luminance rather than their position. So here is another example using conditional blending&nbsp;:</p> <p>Let&#8217;s start from this simple&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_187_Leirhnjukur.jpg"><img alt="mi_187_Leirhnjukur" src="mi_187_Leirhnjukur_thumb.jpg" /></a></span></p> <p>This image is nice but we want to saturate the sand a little more and turn the rest of the image into black and&nbsp;white.</p> <p>First, let&#8217;s work on the sand in the foreground. We will use the colorzone plugin to selectively increase the saturation of the yellow color. The result is shown&nbsp;below</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_image2.jpg"><img alt="mi_image2" src="mi_image2_thumb.jpg" /></a></span></p> <p>Now that the sand is done, let&#8217;s desaturate the&nbsp;background.</p> <p>First we create a second instance of the colorzone plugin using the new icon next to the &#8220;reset&#8221; button. Then we restring the area where that instance will be applied using&nbsp;blendif.</p> <p>Our background is much darker than our foreground, so it is very easy to use blendif to select the&nbsp;background.</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_image3.jpg"><img alt="mi_image3" src="mi_image3_thumb.jpg" /></a></span></p> <p>Now we simply desaturate the image by pulling down the saturation line. This gives us the following final&nbsp;image</p> <p><span><a href="https://www.darktable.org/2013/02/multi-instances/mi_image4.jpg"><img alt="mi_image4" src="mi_image4_thumb.jpg" /></a></span></p> <h1>presets, styles&nbsp;&#8230;</h1> <p>Each instance of a module can be considered like a completely independent module. In particular, each instance can have presets applied to it independently from the other&nbsp;presets.</p> <p>A nice trick is to use a temporary preset to easily copy/paste the settings of a given instance to a new instance. A fine tuned blendif selection can thus be copied from one instance to another (and usually inverted right away) to easily apply different presets to different&nbsp;areas.</p> <p>Styles, on the other hands are applied to images and not to modules. This means that styles contains the information on the number of instances used and how each instance was set. If you create a style from our first image you could easily apply our &#8220;diffraction effect&#8221; to any image you&nbsp;want</p> <p><em>Note : great thanks to Jeremy Rosen for his help in the writing of this blog&nbsp;post</em></p><img src="https://www.darktable.org/2013/02/multi-instances/mi_screen_gnd.jpg" class="hidden-lede">alicvbFri, 15 Feb 2013 20:43:45 +0000tag:www.darktable.org,2013-02-15:2013/02/multi-instances/blogdevelopmentupcoming featurereleased 1.1.3https://www.darktable.org/2013/02/released-1-1-3/<p>hi,</p> <p>there is a new point release with a couple of smaller&nbsp;updates.</p> <p>source&nbsp;tarball:</p> <p>https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.3.tar.xz/download</p> <p>mac disk&nbsp;image:</p> <p>https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.3.2.dmg/download</p> <p>and the usermanual is still the&nbsp;same.</p> <h2>fixes:</h2> <ul> <li>check (on build) if glib 2.28 or higher is&nbsp;present</li> <li>don&#8217;t sanitize exif when creating hdr&nbsp;dngs</li> <li>colorpicker now disappears immediately when disabling&nbsp;it</li> <li>lens correction now uses loose lens matching (ivan&nbsp;tarozzi)</li> <li>konica minolta dynax 5d rotation&nbsp;fix</li> <li>removed an outdated assertion which could cause a crash in rare&nbsp;cases</li> <li>don&#8217;t crash when loading half-corrupted&nbsp;xmps</li> <li>don&#8217;t crash when an imported file contains incomplete gps&nbsp;information</li> <li>libjpeg-turbo workaround (klaus&nbsp;post)</li> </ul> <h2>camera&nbsp;support:</h2> <ul> <li>preliminary support for the new nikon&nbsp;d5200</li> </ul> <h2>white balance&nbsp;presets:</h2> <ul> <li>sony alpha 700 (update to firmware&nbsp;v4)</li> <li>sony alpha 230&nbsp;(new)</li> <li>canon eos 650d&nbsp;(new)</li> <li>canon eos rebel t2i&nbsp;(fixed)</li> <li>canon eos m&nbsp;(fixed)</li> </ul> <h2>enhanced color&nbsp;rendition:</h2> <ul> <li>konica minolta dynax 5d (wolfgang&nbsp;kuehnel)</li> <li>sony nex 3 (wolfgang&nbsp;kuehnel)</li> <li>sony alpha 230 (wolfgang&nbsp;kuehnel)</li> <li>sony rx100 (josef&nbsp;wells)</li> </ul> <p>darktable wouldn&#8217;t be where it is now if we weren&#8217;t able to depend on the great work of others, in particular we&#8217;d like to&nbsp;thank:</p> <p>klaus post (rawspeed), dave coffin (dcraw), andreas hugel (exiv2), andrew zabolotny (lensfun), marti maria (lcms), niels kristian bech jensen&nbsp;(ufraw).</p> <p>cheers-</p><img src="https://www.darktable.org/2013/02/released-1-1-3/img_0012.jpg" class="hidden-lede">joFri, 15 Feb 2013 02:41:01 +0000tag:www.darktable.org,2013-02-15:2013/02/released-1-1-3/announcementdarktable releaseCall for LGM donationshttps://www.darktable.org/2013/02/call-for-lgm-donations/<p>Hello&nbsp;everyone,</p> <p>today we have a request to you, the users of&nbsp;darktable.</p> <p>As you might know there is an annual meeting of developers and users of free and open source graphics applications (like <a href="https://www.gimp.org/"><span class="caps">GIMP</span></a>, <a href="https://www.inkscape.org/">Inkscape</a>, <a href="https://www.blender.org/">blender</a>, <a href="https://www.scribus.net/">scribus</a>, and also darktable), the <a href="https://libregraphicsmeeting.org/2013/">Libre Graphics Meeting</a>. This year it&#8217;s held in Madrid, Spain, and it&#8217;s a great opportunity to discuss things with other developers face-to-face. Last year this has brought us native colord support in&nbsp;darktable.</p> <p>Since traveling around the world can be quite expensive at times we need <span class="caps">YOUR</span> help. If you think that you can spare some coin please consider to donate to <a href="https://pledgie.com/campaigns/18338">this Pledgie campaign</a>. The current status is that every Cent will go to <a href="https://tatica.org/en/2013/01/22/lgm-recaudando-fondos-con-arte/">tatica&#8217;s travel fund</a>.</p> <p>In case you don&#8217;t know who tatica is, she is doing the Spanish translation of darktable and promised to use her time at <span class="caps">LGM</span> to translate the usermanual, too. So we are aware that only Spanish speaking people will directly benefit from her going to <span class="caps">LGM</span>, but everyone else is welcome to show appreciation for her work, too. And maybe it will encourage others to follow her example and also translate the usermanual to your language next.&nbsp;:)</p> <p>Thank you for&nbsp;reading</p> <p>the darktable&nbsp;team</p> <p><span class="caps">PS</span>: If you happen to be in Madrid mid April some of us would love to meet&nbsp;you.</p><img src="https://www.darktable.org/2013/02/call-for-lgm-donations/give_me_your_money_wide.jpg" class="hidden-lede">houzThu, 14 Feb 2013 21:55:46 +0000tag:www.darktable.org,2013-02-14:2013/02/call-for-lgm-donations/communityImporting Lightroom Developmenthttps://www.darktable.org/2013/02/importing-lightroom-development/<p>One of the most time consuming work for any photographer is probably the development process. Lot of time behind a computer screen to adjust the curves, the contrast, the colors, the sharpness&#8230; All these are application specific, that is, the development process done with Lightroom is not compatible with AfterShot Pro or darktable (to name just few raw processing softwares around). This makes it really difficult to move from one software to another. The risk is loosing all the work done so far with a specific tool. After years, when the library contains some ten thousands pictures no one is ready for the&nbsp;switch.</p> <p>Lightroom is a great software but it will probably never run on <span class="caps">GNU</span>/Linux, Adobe does not seem to have any plan for this platform (and not only for Lightroom, but this is not the subject). As a long time user of Lightroom wanting to move to <span class="caps">GNU</span>/Linux (which is my main working platform) I have started working on a Lightroom import support for darktable. Today I have a Windows dual-boot just to run Lightroom, a waste of disk space and a waste of time as I need to reboot when I want to process my&nbsp;pictures.</p> <p>The import support is fully automatic and done in two phases. First when importing pictures the tags are imported, then when entering the darkroom the development process for the picture being edited are imported. This import is based on the Lightroom .xmp sidecar. The chance is that both <span class="caps">XMP</span> can live together as Lightroom ones are named <BASENAME>.xmp whereas darktable ones are named <code>&lt;BASENAME&gt;.&lt;ext&gt;.xmp</code>.</p> <p>What can be imported? Many of the Lightroom developments, but it is not possible to have a 100% accurate conversion process. That&#8217;s why at the moment there is no batch support. Importation is done on the darkroom, one picture at a time as it requires manual&nbsp;adjustments.</p> <p>We can classify the importation support in three&nbsp;categories:</p> <ol> <li> <p>100%&nbsp;accurate:</p> <ul> <li>crop</li> <li>rotation</li> <li>flip</li> <li>tags</li> </ul> </li> <li> <p>Mostly&nbsp;accurate:</p> <ul> <li>exposure /&nbsp;blacks</li> <li>grain</li> <li>tone curve (only lightness&nbsp;supported)</li> <li>color&nbsp;zones</li> <li>local&nbsp;contrast</li> </ul> </li> <li> <p>Needs&nbsp;tweaking:</p> <ul> <li>vignette&nbsp;– The forms are not imported (rounded box&nbsp;effect).</li> <li>spots removal&nbsp;– There is two kind of processing on Lightroom (clone,&nbsp;heal).</li> </ul> </li> </ol> <p>The work on this import module will continue, trying to be more accurate where it can be. At least I feel that this makes the migration less painful by giving the photographers an good help to quickly recover the development work done with&nbsp;Lightroom.</p> <p>But let&#8217;s look at an example, first the image as imported on Lightroom without any&nbsp;modifications:</p> <p><span><a href="https://www.darktable.org/2013/02/importing-lightroom-development/1-initial-picture.jpg"><img alt="1-initial-picture" src="1-initial-picture_thumb.jpg" /></a></span></p> <p>Then the picture as developed on Lightroom (crop, tone curve, blacks and local&nbsp;contrast):</p> <p><span><a href="https://www.darktable.org/2013/02/importing-lightroom-development/2-lr-develop.jpg"><img alt="2-lr-develop" src="2-lr-develop_thumb.jpg" /></a></span></p> <p>Then the picture as imported in&nbsp;darktable:</p> <p><span><a href="https://www.darktable.org/2013/02/importing-lightroom-development/3-dt-import.jpg"><img alt="3-dt-import" src="3-dt-import_thumb.jpg" /></a></span></p> <p>Note that to be closer to the Lightroom rendering I found that decreasing the saturation to 0.90 in the color correction module and adding 0.10 in exposure is a good starting point. This is not done by the exporting module as it is really a matter of&nbsp;taste.</p><img src="https://www.darktable.org/2013/02/importing-lightroom-development/2-lr-develop.jpg" class="hidden-lede">pascalobrySat, 02 Feb 2013 11:44:22 +0000tag:www.darktable.org,2013-02-02:2013/02/importing-lightroom-development/blogdevelopmentupcoming featureimportLighroomXMPReleased darktable 1.1.2https://www.darktable.org/2013/01/released-darktable-1-1-2/<p>Dear&nbsp;all,</p> <p>we just released darktable 1.1.2, a point release (so nothing too fancy) with a couple of bugfixes and better camera support. Additionally it comes with an updated usermanual which is available&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual-1.1.2.pdf/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual-1.1.2.pdf/download</a></p> <p>The tarball can be found&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.2.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.2.tar.gz/download</a></p> <p>and a new disk image for Mac users is provided as&nbsp;well:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.2.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.2.dmg/download</a></p> <p>The various packages for your favourite distro are already on their way. The Ubuntu <span class="caps">PPA</span> should be updated already for example, and the opensuse package is available from <a href="https://software.opensuse.org/package/darktable">https://software.opensuse.org/package/darktable</a> and will be included in the upcoming opensuse 12.3 thanks to Togan&nbsp;Muftuoglu.</p> <h2>Changelog:</h2> <ul> <li>Fix export resolution rounding issue (as in previous version it could be&nbsp;off-by-one)</li> <li>Correctly set output dimension in exif instead of passing the raw resolution&nbsp;verbatim</li> <li>Local average green eq. was fixed (it now works on high <span class="caps">ISO</span> images as well, and should no longer produce hot&nbsp;pixels)</li> <li>Use ordered arrays in <span class="caps">XMP</span>&nbsp;files</li> <li>Disable export parallelism for flickr/picasa&nbsp;export</li> <li>Don&#8217;t enter tethering mode when there is no camera attached (this made darktable look as if it was hung, even though that wasn&#8217;t the&nbsp;case)</li> <li>Bring back the pin for map&nbsp;thumbnails</li> <li>Improved <span class="caps">TIFF</span>&nbsp;support</li> <li>Vignetting now has a dithering option (to mitigate occasional&nbsp;banding)</li> <li>Read Nikon subject distance&nbsp;properly</li> <li>Assorted FreeBSD&nbsp;fixes</li> <li>Various OpenCL&nbsp;fixes</li> <li>Usermanual&nbsp;updates</li> </ul> <h2>Support for the following camera&#8217;s with either preliminarily added or&nbsp;updated:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;6D</li> <li>Canon PowerShot&nbsp;s110</li> <li>Canon PowerShot&nbsp;g15</li> <li>Canon PowerShot sx50&nbsp;hs</li> <li>Nikon 1&nbsp;v2</li> <li>Nikon&nbsp;D600</li> <li>Nikon Coolpix&nbsp;P7700</li> <li>Olympus E&nbsp;Pl5</li> <li>Olympus E <span class="caps">PM2</span></li> <li>Olympus <span class="caps">XZ</span>&nbsp;2</li> <li>Panasonic <span class="caps">DMC</span> <span class="caps">GH3</span></li> <li>Panasonic <span class="caps">DMC</span> <span class="caps">LX7</span></li> <li>Pentax&nbsp;K5ii</li> <li>Samsung&nbsp;EX2f</li> <li>Sony <span class="caps">RX1</span></li> <li>Sony <span class="caps">NEX</span>&nbsp;6</li> <li>Sony <span class="caps">SLT</span>&nbsp;A99</li> <li>Sony <span class="caps">NEX</span> c3 blackpoint/greenshift&nbsp;fix</li> </ul> <h2>White balance preset&nbsp;updates:</h2> <ul> <li>Canon <span class="caps">EOS</span>&nbsp;550D</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">III</span></li> <li>Olympus <span class="caps">XZ</span>&nbsp;1</li> <li>Sony <span class="caps">NEX</span>&nbsp;C3</li> <li>Sony <span class="caps">SLT</span>&nbsp;A57</li> <li>Sony nex&nbsp;5N</li> <li>Panasonic <span class="caps">DMC</span> <span class="caps">GH3</span></li> </ul> <p>This stable release was mostly brought to you by Pascal says the hall-of-fame&nbsp;script:</p> <ul> <li>30 Pascal de&nbsp;Bruijn</li> <li>29 Ulrich&nbsp;Pegelow</li> <li>13&nbsp;parafin</li> <li>6 Tobias&nbsp;Ellinghaus</li> <li>5 johannes&nbsp;hanika</li> <li>4 Pascal&nbsp;Obry</li> <li>4 Jean-Sébastien&nbsp;Pédron</li> <li>2 Roman&nbsp;Lebedev</li> <li>2 Jose Carlos Garcia&nbsp;Sogo</li> <li>1&nbsp;tatica</li> <li>1 Simon&nbsp;Spannagel</li> <li>1 Roland&nbsp;Riegel</li> <li>1 Richard&nbsp;Tollerton</li> <li>1 Richard&nbsp;Levitte</li> <li>1 Olivier&nbsp;Tribout</li> <li>1 Michal&nbsp;Babej</li> <li>1 Ger&nbsp;Siemerink</li> <li>1 Chris&nbsp;Mason</li> <li>1&nbsp;Boucman</li> </ul> <p>Enjoy!</p><img src="https://www.darktable.org/2013/01/released-darktable-1-1-2/flamingos.png" class="hidden-lede">smnMon, 14 Jan 2013 23:24:16 +0000tag:www.darktable.org,2013-01-14:2013/01/released-darktable-1-1-2/announcementdarktable releasereleased 1.1.1https://www.darktable.org/2012/12/released-1-1-1/<p>we released a patch&nbsp;release:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.1.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.1.tar.gz/download</a></p> <p>along with an updated&nbsp;usermanual:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual-1.1.1.pdf/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual-1.1.1.pdf/download</a></p> <p>this resolves a couple of issues with 1.1. so no new features here,&nbsp;but:</p> <ul> <li>minor reordering of lighttable mode modules (geotagging, keywords and recent&nbsp;collections)</li> <li>cleaned up the default visible plugins when first starting&nbsp;darktable</li> <li>in most cases raw files will now show thumbnails in the import dialog (thanks to Mattias&nbsp;Eriksson)</li> <li>a curve related crash was fixed (#9906 thanks to James C.&nbsp;McPherson)</li> <li>comma seperated tags should work everywhere now (#9006 thanks to Tobias&nbsp;Ellinghaus)</li> <li>Ulrich Pegelow fixed a huge amount of opencl related issues, particularly for <span class="caps">AMD</span>&nbsp;GPUs</li> <li>we now deal better with hybrid <span class="caps">GPU</span> machines (#9074 by Ulrich&nbsp;Pegelow)</li> <li>a deadlock in the lens correction module was fixed (#9106 thanks to Ulrich&nbsp;Pegelow)</li> <li>we don&#8217;t delete module presets when cancelling the dialog anymore (#9108 thanks to Tobias&nbsp;Ellinghaus)</li> <li>we now have better default memory usage settings (which are set upon starting darktable the first&nbsp;time)</li> <li>initial support for <span class="caps">SONY</span> <span class="caps">NEX</span>&nbsp;5R</li> <li>preliminary/experimental Canon <span class="caps">EOS</span> 6D and Sony <span class="caps">RX1</span> support (future changes for these camera&#8217;s may (for the time being) retroactively affect your&nbsp;images)</li> <li>Canon <span class="caps">EOS</span> 6D white balance presets (thanks to&nbsp;no_maam_)</li> <li>lots of updates for the usermanual (make sure you <a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual-1.1.1.pdf/download">download a new copy from here</a>)</li> <li>and for our 1.1 the ubuntu packages from the PPAs were built without facebook export support, this has been fixed for&nbsp;1.1.1</li> </ul> <p>darktable wouldn&#8217;t be where it is now if we weren&#8217;t able to depend on the great work of others, in particular we&#8217;d like to&nbsp;thank:</p> <p>Klaus Post (RawSpeed), Dave Coffin (dcraw), Andreas Hugel (Exiv2), Andrew Zabolotny (Lensfun), Marti Maria (lcms), Niels Kristian Bech Jensen&nbsp;(ufraw).</p> <p>have a lot of&nbsp;fun!</p><img src="https://www.darktable.org/2012/12/released-1-1-1/threerocks_wide.jpg" class="hidden-lede">joTue, 11 Dec 2012 07:02:17 +0000tag:www.darktable.org,2012-12-11:2012/12/released-1-1-1/announcementprofiling sensor and photon noisehttps://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/<h1>&#8230; and how to get rid of&nbsp;it.</h1> <p><strong>[update 20/12/2012: ‘how to profile your camera’ includes instructions with the new gen-profile&nbsp;script]</strong></p> <p><strong>[update 15/12/2012: no more recompile needed, updated the instructions in the benchmark section and how to run&nbsp;make.sh.]</strong></p> <p>to summarize the current situation in dt: we have a lot of cool tools wrapped around great algorithms with almost all the knobs you need to get perfect results. while you can actually get really great results it’s this sheer number of knobs that makes finding a good parameter set quite a time consuming task. even creating per-iso presets is not straight forward, as most of the current modules depend on a lot more stuff early on in the pipe (whitebalance, exposure, basecurve,&nbsp;etc).</p> <p>in the following, i’d like to look into automating this process and (after some calibration work, which could be optional, but less optimal) then something closer to a single-click solution. the plan&nbsp;is:</p> <ul> <li>design a module where the denoising performance only depends on camera and iso&nbsp;setting.</li> <li>profile (camera, iso) pairs and store presets for each one of those (can be interpolated&nbsp;potentially).</li> <li>auto-apply them in switched-off state, so you can enable the right thing by just clicking the module’s ‘off button’&nbsp;once.</li> </ul> <p><strong>[update 20/12/2012: this work is now in git&nbsp;master]</strong></p> <h1>background</h1> <p>a lot of research is centered around denoising images corrupted by additive white gaussian noise. this means that your input signal x is observed&nbsp;as</p> <div class="math">$$y = x + n, n \sim \mathcal{N}(0, \sigma^2).$$</div> <p>unfortunately, digital cameras don’t follow that pattern, so the noise is mostly dominated by some sort of signal-independent sensor noise and signal-dependent photon noise (or ‘shot noise’). this non uniform noise follows a poissonian-gaussian distribution&nbsp;[2]</p> <div class="math">$$y = \alpha p_i + n_i, p_i \sim \mathcal{P}(x), n_i \sim \mathcal{N}(0, \sigma^2).$$</div> <p>a poissonian is a discrete distribution, emerging from quantized photon behaviour. alpha converts this to a number range we use in image processing ([0, 1] with extrapolated hdr headroom in the case of dt). to be able to apply general denoising procedures, we need to stabilize this noise via a transform&nbsp;[0].</p> <p>denoising is then done in three&nbsp;steps:</p> <ol> <li>transform to map variance to unity uniformly all over the&nbsp;image,</li> <li>denoise with a generic method against additive white gaussian&nbsp;noise,</li> <li>backtransform</li> </ol> <p>academia seems to fight additive white gaussian noise with current king-of-the-hill bm3d [6] and extensions. dt uses bilateral filters or non-local means [5]. the latter combined with a relatively simple extension [4] has been shown to perform quite well (fast, next to no implementation overhead for&nbsp;us).</p> <p>there are very elegant wavelet based methods, too [3], so i also tried to drop in our wavelet code using bayes-shrink with an overcomplete wavelet transform, i.e. do a soft threshold shrinkage with&nbsp;threshold:</p> <div class="math">$$T = \sigma^2/\sigma_x = \sigma^2/\sqrt{\max\left\{0, \sigma_y^2-\sigma^2\right\}}.$$</div> <p>the results had certain wavelety artifacts, so the following is using our nlmeans code to remove additive gaussian&nbsp;noise.</p> <h1>example</h1> <p>to illustrate the above noise model, here’s a plot of noise standard deviation sigma vs. brightness from a canon eos 5dm2 at iso&nbsp;3200:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso_3200_02-1.jpg"><img alt="iso_3200_02-1" src="iso_3200_02-1_thumb.jpg" /></a></span></p> <p>note how noise increases at higher brightness (caused by the poissonian distribution) and has a global offset (caused by the additive gaussian). only the green channel is saturated, the other two channels absorb too much of the light to go all the way to the&nbsp;right.</p> <p>noise is estimated via mad (median of absolute deviations) on the finest hh coefficients of a wavelet transform, assuming zero mean. this is why the calibration shot needs to be out of focus, we want to minimize the spill of edge information into the hh coefficients. the median estimator is robust to a few outliers, but we still want to violate the assumption that the finest wavelet coefficients only contain noise as little as&nbsp;possible.</p> <p>to fit an analytical model to these curves, we&nbsp;approximate</p> <div class="math">$$\mathcal{P}(x) \approx \mathcal{N}(x, x)$$</div> <p>and fit this noise model to it&nbsp;[2]:</p> <div class="math">$$\sigma(y) = \sqrt{\max\left\{0, a\cdot y + b \right\}}.$$</div> <p>note that our fit in the above graph (smooth curve, green) goes below zero, which can be caused by the black level (which is subtracted in these input&nbsp;numbers).</p> <p>these fits can be used to construct conversion curves [1], which look as&nbsp;follows:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso_3200_02_flat-2.jpg"><img alt="iso_3200_02_flat-2" src="iso_3200_02_flat-2_thumb.jpg" /></a></span></p> <p>applying those to an image, and then computing the noise levels vs. brightness again, we get this nice flat graph that mostly shows sigma=1 (which indicates white additive gaussian noise,&nbsp;yay!):</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso_3200_02_flat-0.jpg"><img alt="iso_3200_02_flat-0" src="iso_3200_02_flat-0_thumb.jpg" /></a></span></p> <p>this is easy to process with your favourite denoising filter (wiener filter and dct, bm3d, wavelet-based methods, nlmeans&nbsp;etc).</p> <p>all that remains to be done is to map the values back to their original range. note that the algebraic inverse of the mapping is the wrong thing to do; we want an unbiased inverse&nbsp;[1].</p> <h1>results</h1> <p>this table shows some numerical results in terms of peak signal to noise ratio before and after denoising. the reference image is the mean of two iso 100 shots. <table > <tbody > <tr class="even" ></p> <td >iso </td> <td >psnr noisy </td> <td >psnr denoised </td> <td >psnr handtuned </td> <p></tr> <tr class="odd" ></p> <td >100 </td> <td >41.3101 </td> <td >41.9915 </td> <p></tr> <tr class="even" ></p> <td >100 </td> <td >40.6879 </td> <td >41.3296 </td> <p></tr> <tr class="odd" ></p> <td >400 </td> <td >34.5583 </td> <td >38.4054 </td> <p></tr> <tr class="even" ></p> <td >800 </td> <td >31.0149 </td> <td >33.6109 </td> <p></tr> <tr class="odd" ></p> <td >1600 </td> <td >29.5853 </td> <td >33.9332 </td> <p></tr> <tr class="even" ></p> <td >3200 </td> <td >25.8187 </td> <td >29.4477 </td> <p></tr> <tr class="odd" ></p> <td >6400 </td> <td >23.5462 </td> <td >28.7782 </td> <td >28.5843 </td> <p></tr> <tr class="even" ></p> <td >12800 </td> <td >20.4019 </td> <td >25.5775 </td> <td >25.6052/25.629 (*) </td> <p></tr> <tr class="odd" ></p> <td >25600 </td> <td >17.1598 </td> <td >24.7214 </td> <p></tr> </tbody> </table> (*) handtuned using old nlmeans/equalizer and handtuned using the new&nbsp;module.</p> <p>interestingly, i get better results out of iso 1600 than from 800. this can have a lot of causes and it would have been a good idea to measure the camera’s native iso levels instead of powers of&nbsp;two.</p> <p>here are a couple of 1:1 screen grabs to illustrate the numbers. from top to bottom: iso 3200, 6400, 12800 and 25600 with one-click denoise&nbsp;results:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso3200_denoised.jpg"><img alt="iso3200_denoised" src="iso3200_denoised_thumb.jpg" /></a></span></p> <p><img alt="iso6400_denoised" src="iso6400_denoised.jpg" /></p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso12800_denoised21.jpg"><img alt="iso12800_denoised21" src="iso12800_denoised21_thumb.jpg" /></a></span></p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/iso25600_denoised3.jpg"><img alt="iso25600_denoised3" src="iso25600_denoised3_thumb.jpg" /></a></span></p> <p>iso 25600 seems to have trouble with the black level, judging by the color cast (lifting the black level manually helps a little, fixing whitebalance instead of using auto made things worse). apart from that i’m still not going to recommend it for everyday use, but maybe downsized resolutions will be useful for some purposes at&nbsp;times.</p> <h1>how to profile your&nbsp;camera</h1> <p>the parameters (a, b) have to be found for each (camera, iso) pair. these are then stored in a preset for a new denoising module. there is a generic (poissonian only) preset, but you can’t dial in these values manually, you have to create a preset for your camera and iso (if it doesn’t already&nbsp;exist).</p> <p>to generate a profile, dt ships a couple of scripts and tools in tools/noise/. it will create presets as well as a couple of detailed data plots used to verify the usefulness of the result, such as the curves seen&nbsp;above.</p> <p>the steps in&nbsp;detail:</p> <h2>taking noise profile&nbsp;images</h2> <p>take one shot per iso. it has to be out-of-focus and have a widespread histogram, i.e. be over- and underexposed at the same time (see example image below). if you want to be thorough, take 2–3 to verify the numbers. this image looks very green, because the ‘raw linear’ style has been applied to it (find it in <code>darktable/tools/noise</code>). this makes sure we get linear camera raw rgb with no basecurves, no whitebalance, etc in the way. it is essential that you apply this&nbsp;style.</p> <p>you can either take those shots manually or&nbsp;have</p> <p><code>~/darktable/tools/noise/gen-profile</code></p> <p>take them for you via gphoto2. you need gphoto2, exiv2 and gnuplot installed to run the script (well, plus various&nbsp;coreutils).</p> <p>your images should look something like&nbsp;this:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/example_profile.jpg"><img alt="example_profile" src="example_profile_thumb.jpg" /></a></span></p> <h2>generate plots and&nbsp;fits</h2> <p>open a terminal, go to the directory you just exported your images to. from there,&nbsp;type</p> <p><code>~/darktable/tools/noise/gen-profile -d .</code></p> <p>this will create a ton of informative pdf files, which should look like the above examples. if the fit doesn’t match the curves, or the curves look wildly different than the general shape in the plots above, something went wrong (most likely your image wasn’t overexposed enough, so check the histogram). this script will output a file <code>presets.txt</code> with copy/pastable presets for your camera, to be shipped with dt. one line will look something&nbsp;like:</p> <p><code>{n_("canon eos 5dm2 iso 3200"), "Canon", "EOS 5D Mark 2", 3200, {1.0f, 1.0f, {4.494e-05, 4.494e-05, 4.494e-05}, {-1.063e-06, -1.063e-06, -1.063e-06}}},</code></p> <p>the exif data (model, maker, and iso) is used to do automatic matching of the correct preset, so you only need to enable the&nbsp;module.</p> <p>additionally, this script will copy your darktable database, inject the newly created presets for you to test, and instruct you how to run dt with that library for a&nbsp;test.</p> <h2>run a benchmark&nbsp;(optional)</h2> <p>this requires additional shots. since we want to verify what we did was reasonable, we want (and need) independent&nbsp;input.</p> <p>to test the presets you just created, you have to run darktable as instructed at the end of the script, something&nbsp;like:</p> <p><code>darktable --library /tmp/library.db</code></p> <p>take one image for each iso setting you’re interested in (same iso sequence as above). for iso 100, take 2–3 of them. it is essential that these images only differ in iso and exposure time (take them with a sturdy tripod and aperture priority&nbsp;mode).</p> <p>create a reference image (use the ‘create hdr’ button in lighttable mode with a couple of iso 100&nbsp;shots).</p> <p>you don’t need to apply any styles this time, leave the images as natural as possible (but all the&nbsp;same).</p> <p>export your images as float pfm to the same directory (filename <code>iso$(EXIF_ISO)</code> is a good idea), also put the reference as <code>reference.pfm</code> in&nbsp;there.</p> <p>apply the newly created presets to your images, export them in that directory too (float pfm, use <code>iso$(EXIF_ISO)_denoised</code> as a filename for&nbsp;example).</p> <p>then&nbsp;run</p> <p><code>~/darktable/tools/noise/benchmark.sh</code></p> <p>to verify that the psnr values are reasonable. the denoised version should always have a higher psnr than the input (even for iso 100), the values should be in the range of the above&nbsp;table.</p> <h2>ship&nbsp;it!</h2> <p>send your new presets to one of our mailing lists, or upload them to some pastebin or similar and let us know in irc. we might also be interested in the pdf files with the plots, to verify your fits worked out and everything looks&nbsp;fine.</p> <h1>using the new ‘denoise (profiled)’&nbsp;module</h1> <p>the goal of this work was to give you a simple, single-click denoiser that always just works (tm). there are still a few options exposed for your tweaking pleasure, though these affect how the nlmeans core works. the conversion curves are not exposed to the user, but there is a generic preset for non-profiled cameras which will try to roughly do something&nbsp;reasonable.</p> <ul> <li>patch size: 0 will degenerate to a bilateral filter. increasing the number will increase sharpness in your output, but you might have to increase ‘strength’ to counter balance the&nbsp;effect.</li> <li>strength: make denoising stronger (&gt; 1) or weaker (&lt; 1). mostly a matter of taste. the default setting was chosen to maximize psnr in my tests (with a patch size of 1)&nbsp;.</li> </ul> <h1>future&nbsp;work</h1> <p>it seems that the fit parameters (a, b) behave quite nicely with iso, so it might be possible to interpolate them for your exact iso setting. see for example this plot of the parameter a (poissonian component) for a canon eos 5dm2 indicating that simple linear interpolation will be&nbsp;enough:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/plot.jpg"><img alt="plot" src="plot_thumb.jpg" /></a></span></p> <p>it should also be easy to auto-create this graph as a quick sanity check for new&nbsp;presets.</p> <p>the influence of exposure time on the gaussian part is another thing to take into account, especially the case when the black frame is subtracted in&nbsp;camera.</p> <p><strong>[update 23/12/2012: this interpolation is now happening automatically in git master when you enable or reset the&nbsp;module]</strong></p> <h1>the bottom&nbsp;line</h1> <p>if you’re not into signal processing and don’t like to profile your gear, just hope someone already measured your camera, enable the new denoising module and enjoy parameter free optimal denoising. it’s&nbsp;magic!</p> <h1>references</h1> <ul> <li>[0] paul prucnal, bahaa saleh: transformation of image-signal-dependent noise into image-signal-independent noise, optics letters, vol. 6, no. 7,&nbsp;1981.</li> <li>[1] markku makitalo, alessandro foi: optimal inversion of the generalized anscombe transformation for poisson-gaussian noise, ieee trans. image&nbsp;process.</li> <li>[2] alessandro foi et al.: practical poissonian-gaussian noise modeling and fitting for single-image raw-data, ieee trans. image process. vol. 17, no. 10,&nbsp;2008.</li> <li>[3] frolian luisier, thierry blu: a new sure approach to image denoising: interscale orthonormal wavelet thresholding, ieee trans. image process. vol.16, no. 3,&nbsp;2007.</li> <li>[4] charles kervrann and jerome boulanger: optimal spatial adaptation for patch-based image denoising. ieee trans. image process. vol. 15, no. 10,&nbsp;2006.</li> <li>[5] antoni buades, bartomeu coll, jean-michel morel: a non-local algorithm for image denoising. proc. cvpr&nbsp;2005.</li> <li>[6] k. dabov, a. foi, v. katkovnik, and k. egiazarian: image denoising with block-matching and 3d filtering. proc. spie electronic&nbsp;imaging, 2006.</li> </ul> <h1>appendix</h1> <p>in this short time, you guys contributed presets&nbsp;for:</p> <ul> <li>canon eos-1ds mark&nbsp;ii</li> <li>canon eos&nbsp;20d</li> <li>canon eos&nbsp;30d</li> <li>canon eos&nbsp;350d</li> <li>canon eos&nbsp;400d</li> <li>canon eos&nbsp;40d</li> <li>canon eos&nbsp;450d</li> <li>canon eos&nbsp;50d</li> <li>canon eos&nbsp;550d</li> <li>canon eos 5d mark&nbsp;ii</li> <li>canon eos 5d mark&nbsp;iii</li> <li>canon eos&nbsp;600d</li> <li>canon eos&nbsp;60d</li> <li>canon eos&nbsp;7d</li> <li>canon powershot&nbsp;g10</li> <li>canon powershot&nbsp;s90</li> <li>konica minolta dynax&nbsp;5d</li> <li>nikon&nbsp;d300</li> <li>nikon&nbsp;d3100</li> <li>nikon&nbsp;d5000</li> <li>nikon&nbsp;d5100</li> <li>nikon&nbsp;d600</li> <li>nikon&nbsp;d7000</li> <li>nikon&nbsp;d80</li> <li>nikon&nbsp;d800</li> <li>nikon&nbsp;d90</li> <li>olympus&nbsp;e-30</li> <li>olympus&nbsp;e-400</li> <li>olympus&nbsp;e-420</li> <li>olympus&nbsp;e-m5</li> <li>olympus&nbsp;e-pl1</li> <li>panasonic&nbsp;dmc-fz18</li> <li>panasonic&nbsp;dmc-g3</li> <li>panasonic&nbsp;dmc-g5</li> <li>panasonic&nbsp;dmc-gf1</li> <li>panasonic&nbsp;dmc-gx1</li> <li>pentax&nbsp;k100d</li> <li>pentax&nbsp;k10d</li> <li>pentax&nbsp;k200d</li> <li>pentax&nbsp;k-5</li> <li>pentax&nbsp;k-7</li> <li>pentax&nbsp;k-x</li> <li>sony&nbsp;dslr-a200</li> <li>sony&nbsp;dslr-a230</li> <li>sony&nbsp;dslr-a550</li> <li>sony&nbsp;dslr-a700</li> <li>sony&nbsp;nex-3</li> <li>sony&nbsp;nex-6</li> <li>sony&nbsp;nex-7</li> <li>sony&nbsp;nex-c3</li> <li>sony&nbsp;slt-a55v</li> <li>sony&nbsp;slt-a65v</li> </ul> <p>which seem to work great, thanks for&nbsp;that!</p> <p>this also enables us to do nice cross-camera noise comparisons, like&nbsp;so:</p> <p><span><a href="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/noise_iso_1600.png"><img alt="noise_iso_1600" src="noise_iso_1600_thumb.png" /></a></span></p> <p>lower would be better for both axes, but note that lower gaussian noise level might just mean higher black level. so i wouldn’t base my camera purchase on these plots just&nbsp;yet.</p> <p>note how the four versions of the eos 400d gather around almost the same spot. three of those have been taken at almost the same time, and one of them comes from a different day with different lighting. this shows that the method can produce consistent results (and that you might gain some accuracy by averaging a few runs). it would now be interesting to see how far away from that cluster a different device of the same type is, to verify using someone else’s presets is a good&nbsp;idea.</p> <p>someone noted that, at times, noise still stays in your image, visible as large color blotches (not fine grained anymore). these can be alleviated by the equalizer, using something <a href="https://darktable.org/redmine/attachments/download/351/suppress%20color%20blotches.dtstyle">similar to this style</a>.</p> <script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) { var align = "center", indent = "0em", linebreak = "false"; if (false) { align = (screen.width < 768) ? "left" : align; indent = (screen.width < 768) ? "0em" : indent; linebreak = (screen.width < 768) ? 'true' : linebreak; } var mathjaxscript = document.createElement('script'); mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#'; mathjaxscript.type = 'text/javascript'; mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; mathjaxscript[(window.opera ? "innerHTML" : "text")] = "MathJax.Hub.Config({" + " config: ['MMLorHTML.js']," + " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," + " jax: ['input/TeX','input/MathML','output/HTML-CSS']," + " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," + " displayAlign: '"+ align +"'," + " displayIndent: '"+ indent +"'," + " showMathMenu: true," + " messageStyle: 'normal'," + " tex2jax: { " + " inlineMath: [ ['\\\\(','\\\\)'] ], " + " displayMath: [ ['$$','$$'] ]," + " processEscapes: true," + " preview: 'TeX'," + " }, " + " 'HTML-CSS': { " + " styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," + " linebreaks: { automatic: "+ linebreak +", width: '90% container' }," + " }, " + "}); " + "if ('default' !== 'default') {" + "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "}"; (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript); } </script><img src="https://www.darktable.org/2012/12/profiling-sensor-and-photon-noise/denoise_teaser.jpg" class="hidden-lede">joTue, 11 Dec 2012 06:48:50 +0000tag:www.darktable.org,2012-12-11:2012/12/profiling-sensor-and-photon-noise/blogdevelopmentupcoming featurereleased darktable 1.1https://www.darktable.org/2012/11/released-darktable-1-1/<p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1.tar.gz/download</a></p> <p>this is a feature release, so there is a lot of new&nbsp;stuff:</p> <h1>general</h1> <ul> <li>new camera support, new whitebalance presets, etc., including canon eos m support and samsung nx&nbsp;fix</li> <li>similarity matching search for images that look&nbsp;alike.</li> <li>geotagging, complete with map view (thanks to dinamic for starting that ages ago and to houz for actually bringing it home): &#8220;<a href="https://www.darktable.org/2012/09/geotagging-in-darktable/"><span>Geotagging in darktable</span></a>&#8221;</li> <li>mac os package: &#8220;<a href="https://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/"><span>Bringing current darktable to <span class="caps">OS</span> X</span></a>&#8221;</li> <li>a lot of bugfixes (mainly thanks to ulrich for his meticulous&nbsp;work)</li> <li>facebook exporter (for those who have an account&nbsp;there)</li> </ul> <h1>ui</h1> <ul> <li>reworked the much hated `more plugins&#8217; widget (thanks to&nbsp;boucman)</li> <li>image grouping: &#8220;<a href="https://www.darktable.org/2012/09/grouping/"><span>Grouping</span></a>&#8221;</li> <li>command line interface! &#8220;<a href="https://www.darktable.org/2012/07/exporting-images-on-the-command-line/"><span>Exporting images on the command line</span></a>&#8221;</li> <li>tone and base curves got a new user interface to better support fine grained workflow as in: &#8220;<a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/"><span>Mastering color with Lab tone curves</span></a>&#8221;</li> <li>visually low-profile controls with finetuning: &#8220;<a href="https://www.darktable.org/2012/03/bauhaus-widgets/"><span>bauhaus widgets</span></a>&#8221;</li> <li>color correction module (&#8220;<a href="https://www.darktable.org/2012/03/color-correction/"><span>color correction</span></a>&#8220;) got a <span class="caps">GUI</span> update since the blog post (two circles indicating shadows and highlights instead of the&nbsp;quad).</li> <li>live view for tethered shooting! &#8220;<a href="https://www.darktable.org/2012/05/live-view/"><span>Live view</span></a>&#8221;</li> </ul> <h1>darkroom</h1> <ul> <li>extensive use of edge-aware filtering techniques to suppress noise, halos and ringing all around darktable: &#8220;<a href="https://www.darktable.org/2012/09/edge-aware-image-development/"><span>edge aware image development</span></a>&#8221;</li> <li>conditional blending, and a lot of goodies around it! &#8220;<a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/"><span>Some enhancements to conditional blending</span></a>&#8221;</li> <li>magenta highlights: &#8220;<a href="https://www.darktable.org/2012/07/magenta-highlights/"><span>magenta highlights</span></a>&#8221; improved on high-contrast edges to overexposed areas (should get rid of purple highlights on tiny water waves and purple fringes around tree leaves for&nbsp;example)</li> <li>much improved sharpness for both export and darkroom view, especially for downsampled images and if you use lens corrections or rotations/perspective corrections. check the new options in the preferences dialog, also one more than mentioned in the blog (&#8220;demosaicing for zoomed out darkroom mode&#8221; to trade performance for even more sharpness): &#8220;<a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/"><span>Upcoming features: New interpolation modes and better resize</span></a>&#8221;</li> </ul> <h1>color&nbsp;management</h1> <ul> <li>improved per-screen color management (should reload the screen profile&nbsp;automatically)</li> <li>more compatible embedded color profiles (should fix problems on windows viewing our images, if that&nbsp;matters)</li> <li>read embedded color profiles from&nbsp;jpg</li> </ul> <h1>opencl</h1> <ul> <li>most of our modules now can take advantage of your computer&#8217;s gpu&nbsp;power</li> <li>caching for compiled opencl kernels (even in case the driver doesn&#8217;t do it) for faster startup&nbsp;times</li> </ul> <h1>usermanual</h1> <ul> <li>find a pdf snapshot here: <a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual.pdf/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-usermanual.pdf/download</a></li> <li>is reasonably up to date&nbsp;again</li> <li>not translated so&nbsp;far</li> </ul> <h1>translations</h1> <ul> <li>two new translations (both portuguese &#8230; ;)&nbsp;)</li> <li>well translated: cs de es fr it ja nl pl pt_BR pt_PT&nbsp;sv</li> <li>half translated: ca fi gl ro ru sq th&nbsp;zh_CN</li> </ul> <p>enjoy!</p><img src="https://www.darktable.org/2012/11/released-darktable-1-1/panda.jpg" class="hidden-lede">joSun, 25 Nov 2012 20:17:08 +0000tag:www.darktable.org,2012-11-25:2012/11/released-darktable-1-1/announcementreleased 1.1rc2https://www.darktable.org/2012/11/released-1-1rc2/<p>i just uploaded the tarball for the second release candidate for&nbsp;1.1:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc2.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc2.tar.gz/download</a></p> <p>packages for your favourite distros should be in the usual place, mac dmg is&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc2.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc2.dmg/download</a></p> <p>i know there are still translations coming, but something has to be left for the final release after all&nbsp;:)</p> <p>changes since rc1 aren&#8217;t many as to be expected, but we&#8217;ve&nbsp;got:</p> <ul> <li>canon eos m support (new rawspeed, also includes samsung nx&nbsp;fix)</li> <li>usermanual is&nbsp;progressing</li> <li>two new translations (both portuguese &#8230; ;)&nbsp;)</li> <li>reworked the much hated `more plugins&#8217; widget (thanks to&nbsp;boucman)</li> <li>a lot of bugfixes (mainly thanks to ulrich for his meticulous&nbsp;work)</li> </ul> <p>enjoy!</p><img src="https://www.darktable.org/2012/11/released-1-1rc2/lotus.jpg" class="hidden-lede">joWed, 14 Nov 2012 23:41:13 +0000tag:www.darktable.org,2012-11-14:2012/11/released-1-1rc2/announcement1.1 release candidate 1https://www.darktable.org/2012/11/1-1-release-candidate-1/<p>as commits are easing down a little lately it seems appropriate to push out the first release candidate of the new&nbsp;version:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc1.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc1.tar.gz/download</a></p> <p>[update: mac package is available from <a href="https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc1.dmg/download">https://sourceforge.net/projects/darktable/files/darktable/1.1/darktable-1.1~rc1.dmg/download</a> ]</p> <p>That doesn&#8217;t mean this tarball is final or perfect by any means. we&#8217;ll probably go on releasing a couple of these on our way to the final release in a few weeks. This will be a feature release, as opposed to the bug fixing point release series 1.0.x, so we&#8217;ve got a huge bunch of changes for you this time. The changelog is not the final one either, but here it&nbsp;is:</p> <ul> <li>new camera support, new whitebalance presets,&nbsp;etc.</li> <li>similarity matching search for images that look&nbsp;alike.</li> <li>geotagging, complete with map view (thanks to dinamic for starting that ages ago and to houz for actually bringing it home): &#8220;<a href="https://www.darktable.org/2012/09/geotagging-in-darktable/"><span>Geotagging in darktable</span></a>&#8221;</li> <li>image grouping: &#8220;<a href="https://www.darktable.org/2012/09/grouping/"><span>Grouping</span></a>&#8221;</li> <li>extensive use of edge-aware filtering techniques to suppress noise, halos and ringing all around darktable: &#8220;<a href="https://www.darktable.org/2012/09/edge-aware-image-development/"><span>edge aware image development</span></a>&#8221;</li> <li>mac os package: &#8220;<a href="https://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/"><span>Bringing current darktable to <span class="caps">OS</span> X</span></a>&#8221;</li> <li>conditional blending, and a lot of goodies around it! &#8220;<a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/"><span>Some enhancements to conditional blending</span></a>&#8221;</li> <li>magenta highlights: &#8220;<a href="https://www.darktable.org/2012/07/magenta-highlights/"><span>magenta highlights</span></a>&#8221; improved on high-contrast edges to overexposed areas (should get rid of purple highlights on tiny water waves and purple fringes around tree leaves for&nbsp;example)</li> <li>command line interface! &#8220;<a href="https://www.darktable.org/2012/07/exporting-images-on-the-command-line/"><span>Exporting images on the command line</span></a>&#8221;</li> <li>much improved sharpness for both export and darkroom view, especially for downsampled images and if you use lens corrections or rotations/perspective corrections. check the new options in the preferences dialog, also one more than mentioned in the blog (&#8220;demosaicing for zoomed out darkroom mode&#8221; to trade performance for even more sharpness): &#8220;<a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/"><span>Upcoming features: New interpolation modes and better resize</span></a>&#8221;</li> <li>live view for tethered shooting! &#8220;<a href="https://www.darktable.org/2012/05/live-view/"><span>Live view</span></a>&#8221;</li> <li>tone and base curves got a new user interface to better support fine grained workflow as in: &#8220;<a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/"><span>Mastering color with Lab tone curves</span></a>&#8221;</li> <li>visually low-profile controls with finetuning: &#8220;<a href="https://www.darktable.org/2012/03/bauhaus-widgets/"><span>bauhaus widgets</span></a>&#8221;</li> <li>color correction module (&#8220;<a href="https://www.darktable.org/2012/03/color-correction/"><span>color correction</span></a>&#8220;) got a <span class="caps">GUI</span> update since the blog post (two circles indicating shadows and highlights instead of the&nbsp;quad).</li> <li>Facebook exporter (for those who have an account&nbsp;there)</li> </ul> <h2>color&nbsp;management:</h2> <ul> <li>improved per-screen color management (should reload the screen profile&nbsp;automatically)</li> <li>more compatible embedded color profiles (should fix problems on windows viewing our images, if that&nbsp;matters)</li> <li>read embedded color profiles from&nbsp;jpg</li> </ul> <h2>OpenCL</h2> <p>most of our modules now can take advantage of your computer&#8217;s gpu power. caching for compiled opencl kernels (even in case the driver doesn&#8217;t do it) for faster startup&nbsp;times.</p> <p>Furthermore there are tons of updates to the usermanual and many updated&nbsp;translations:</p> <ul> <li>french: perfect! thanks to Olivier&nbsp;Tribout!</li> <li>italian: all done, thanks to&nbsp;Eugenio!</li> <li>japanese: great, thanks&nbsp;a3novy!</li> <li>nl: Ger Siemerink got it all covered&nbsp;:)</li> <li>sv: Henrik and Richard Levitte (all done in&nbsp;git)</li> <li> <p>es: thanks to tatica! (git is&nbsp;good)</p> </li> <li> <p>de: 1400 translated messages, 64 fuzzy translations, 45 untranslated&nbsp;messages.</p> </li> </ul> <p>and those lag behind a little more. any&nbsp;takers?</p> <ul> <li>ca: 261 translated messages, 371 fuzzy translations, 877 untranslated&nbsp;messages.</li> <li>cs: 1107 translated messages, 224 fuzzy translations, 178 untranslated&nbsp;messages.</li> <li>fi: 639 translated messages, 478 fuzzy translations, 392 untranslated&nbsp;messages.</li> <li>gl: 418 translated messages, 531 fuzzy translations, 560 untranslated&nbsp;messages.</li> <li>pl: 1122 translated messages, 210 fuzzy translations, 177 untranslated&nbsp;messages.</li> <li>ro: 747 translated messages, 417 fuzzy translations, 345 untranslated&nbsp;messages.</li> <li>ru: 1118 translated messages, 215 fuzzy translations, 176 untranslated&nbsp;messages.</li> <li>sq: 1104 translated messages, 219 fuzzy translations, 186 untranslated&nbsp;messages.</li> <li>th: 180 translated messages, 176 fuzzy translations, 1153 untranslated&nbsp;messages.</li> <li>zh_CN: 1116 translated messages, 205 fuzzy translations, 188 untranslated&nbsp;messages.</li> </ul> <p>enjoy!</p><img src="https://www.darktable.org/2012/11/1-1-release-candidate-1/cloud.jpg" class="hidden-lede">joFri, 02 Nov 2012 02:04:00 +0000tag:www.darktable.org,2012-11-02:2012/11/1-1-release-candidate-1/announcementWhat’s involved with adding support for new camerashttps://www.darktable.org/2012/10/whats-involved-with-adding-support-for-new-cameras/<p><em>Update: This post is a few years old by now, and while most things are still valid there is at least one change: darktable doesn&#8217;t use dcraw/libraw and&nbsp;more.</em></p> <p>Say you&#8217;re running darktable, you&#8217;ve just bought a brand spanking new camera and it&#8217;s not supported yet by darktable. Here is a list of things that need to be done (typically we&#8217;d recommend to check this <em>before</em> actually buying anything, often you&#8217;ll be able to find sample raw files&nbsp;online):</p> <h2>Raw format&nbsp;support</h2> <p>darktable uses two libraries to read raw files. Most common raw formats are read via the RawSpeed library (by Klaus Post), more esoteric raw formats not supported by RawSpeed are read via LibRaw (which in turn is based on Dave Coffin&#8217;s dcraw). While most vendors have only a single raw format there are camera to camera&nbsp;variations.</p> <p>So if darktable isn&#8217;t recognizing your raw files at all (or they show up as corrupted images), it is always a good idea to check if darktable&#8217;s development version (git master) does read them (before running darktable git master, please do backup your database and&nbsp;images).</p> <p>If it still doesn&#8217;t work, it&#8217;s a good idea to check if the latest dcraw (the version that comes with the distros tends to lag behind) can handle the&nbsp;files:</p> <p>Install the build dependancies liblcms-dev(el) libjpeg-dev(el) and libjasper-dev(el) (or whatever your distro calls&nbsp;them)</p> <div class="highlight"><pre># wget https://www.cybercom.net/~dcoffin/dcraw/dcraw.c # gcc -o dcraw -O4 dcraw.c -lm -ljasper -ljpeg -llcms # ./dcraw -v -w -o 1 -f -T IMG_0000.RAW </pre></div> <p>If it doesn&#8217;t work you may want to supply Dave Coffin with sample raw files. Also, please mail the raw samples to our devel mailing list so we can take a&nbsp;look.</p> <h2>Sensor&nbsp;support</h2> <p>darktable currently only supports regular Bayer style sensors (which probably accounts for 99% of available cameras). This means darktable will not be able to handle Sigma <span class="caps">FOVEON</span> based cameras. A lot of Fuji cameras have weird variations of the standard Bayer scheme which make them incompatible with darktable, too. We currently have no plans to support these cameras&nbsp;either.</p> <h2>Black and White&nbsp;levels</h2> <p>Take a sample raw. Convert it to <span class="caps">DNG</span> via Adobe <span class="caps">DNG</span> Converter (make sure you have the latest version, assuming Adobe updated the converter for your particular camera model). The Blacklevel usually corrects for a green or purplish color&nbsp;cast:</p> <div class="highlight"><pre>exiv2 -pt MY.DNG | grep BlackLevel Exif.SubImage1.BlackLevel Rational 4 37376/256 37376/256 37376/256 37376/256 </pre></div> <p>This effectively means the blacklevel is 37376/256 = 146, expected values are usually well below 1000. On the other hand the whitelevel influences highlight&nbsp;handling:</p> <div class="highlight"><pre>exiv2 -pt MY.DNG | grep WhiteLevel Exif.SubImage1.WhiteLevel Short 1 3956 </pre></div> <p>Expected values ranges commonly range from about 3000 to&nbsp;17000.</p> <h2>Panasonic Aspect&nbsp;Ratio&#8217;s</h2> <p>Most modern cameras which output raw files, also allow the user to set non sensor native aspect ratio&#8217;s. So even if the sensor has a real world aspect ratio of 4:3, you can have the camera automatically center crop your images to for example 3:2. This usually only affects <span class="caps">JPEG</span> output, leaving the output raw still at an uncropped full resolution at it&#8217;s original aspect ratio&nbsp;4:3.</p> <p>Panasonic cameras are different however, they actually seem to crop the raw images themselves, which means every aspect ratio mode needs it&#8217;s each set of&nbsp;parameters.</p> <p>For most Panasonic cameras we have data for the 4:3 mode, but often not for the other modes. When we don&#8217;t have data for the other modes darktable falls back to use LibRaw, which may or may not work&nbsp;properly.</p> <p>If you own a Panasonic camera, please check the file below, if your camera has defined support for all four aspect ratio modes&nbsp;(4:3/3:2/16:9/1:1):</p> <p><a href="https://github.com/darktable-org/rawspeed/blob/develop/data/cameras.xml">https://github.com/darktable-org/rawspeed/blob/develop/data/cameras.xml</a></p> <p>If they are defined please do test them, and if they are either undefined or you&#8217;re getting weird behavior (like pixel artifacts in the right hand image border) we&#8217;d very much be interested in a set of <span class="caps">RW2</span>&nbsp;samples.</p> <h2>Basecurve</h2> <p>By default raw files are more or less linear, meaning they look fairly dark/murky by default. So one needs to apply a curve to make it look decent. For darktable we try to get a ballpark match with the camera&#8217;s <span class="caps">JPEG</span> output with regard to tonality, to do this we use the so-called basecurve, which we manually derived from raw+<span class="caps">JPG</span> samples. Typically the basecurves seem to be vendor specific (but less so camera model specific). That said, in some cases there can still be some camera model specific differences, in which case you might want to take a look at <a href="https://www.darktable.org/2013/10/about-basecurves/">this post</a>.</p> <p>That said, dynamic image processing technologies like Nikon&#8217;s Active D-light, Canon&#8217;s Auto Lighting Optimizer, Samsung&#8217;s Smart Range, Sony&#8217;s Dynamic Range Optimizer, etc do throw a monkey wrench into raw converters ability to approximate camera output in any way. So when doing comparisons make sure you&#8217;ve turned the above off, and also don&#8217;t forget to keep <a href="https://www.darktable.org/2013/05/display-color-management-in-darktable/">this</a> in&nbsp;mind.</p> <h2>Color&nbsp;Matrices</h2> <p>The plain red, green and blue values we get straight from the sensor are never a good representation of color. This is fixed by characterizing the sensor&#8217;s behavior in a so called <span class="caps">XYZ</span> matrix (often referred to as a color matrix). There are two kinds in darktable (and you need at least one of those to get decent color rendition in&nbsp;darktable):</p> <p>The standard color matrix is a color matrix we get from dcraw (which in turn gets most of them via Adobe&#8217;s <span class="caps">DNG</span>&nbsp;Converter).</p> <p>Take a sample&nbsp;raw</p> <p>Convert it to <span class="caps">DNG</span> via Adobe <span class="caps">DNG</span> Converter (make sure you have the latest version, assuming Adobe updated the converter for your particular camera&nbsp;model)</p> <div class="highlight"><pre>exiv2 -pt MY.DNG 2&gt;/dev/null | grep CalibrationIlluminant2 # Exif.Image.CalibrationIlluminant2 Short 1  21 </pre></div> <p>Assuming the above is&nbsp;21:</p> <div class="highlight"><pre># exiv2 -pt MY.DNG 2&gt;/dev/null | grep ColorMatrix2 Exif.Image.ColorMatrix2 SRational 9  7798/10000 -2562/10000 -740/10000 -3879/10000 11584/10000 2613/10000 -1055/10000 2248/10000 5434/10000 </pre></div> <p>The enhanced color matrix which we calculate from user submitted color&nbsp;charts.</p> <p><a href="https://encrypted.pcode.nl/blog/2010/06/28/darktable-camera-color-profiling/">https://encrypted.pcode.nl/blog/2010/06/28/darktable-camera-color-profiling/</a></p> <p>Neither of the above color matrices have the goal of emulating the camera&#8217;s <span class="caps">JPEG</span> color rendition. So even though the basecurve will in most cases give you similar tonality, the colors are unlikely to&nbsp;match.</p> <h2>White balance&nbsp;presets</h2> <p>darktable gets a library of white balance presets from the UFRaw project. This means you can select camera white balance presets in darktable&#8217;s user interface. Having white balance presets for your camera is a convenience, it&#8217;s not critical. But if they are missing, you can contribute&nbsp;them:</p> <p>Upgrade the camera firmware (use a full, known reliable battery), be aware that it can brick your camera if done improperly. (having the latest firmware is preferable, but not critical, if you are uncomfortable with the risks involved in upgrading your camera you should not attempt&nbsp;it)</p> <p>Shoot a single raw file for each of the camera&#8217;s white balance presets (make sure you don&#8217;t have any white balance finetuning enabled) (image content doesn&#8217;t matter) (these are usually 5-10 shots). Make sure you have a recent version of ExifTool installed (if not, you need to edit wb_extract.pl and point it to your updated&nbsp;copy).</p> <p>Download <a href="http://ufraw.cvs.sourceforge.net/viewvc/ufraw/ufraw/wb_extract.pl">http://ufraw.cvs.sourceforge.net/viewvc/ufraw/ufraw/wb_extract.pl</a></p> <div class="highlight"><pre>perl wb_extract.pl  2&gt;/dev/null </pre></div> <p>(If you are adept at Perl, you could help us/UFRaw by revising the above&nbsp;script)</p> <p>Some cameras optionally offer the ability to tune their white balance presets. You can include these as well (but the numbers of shots increase rapidly, as there are typically 5-10 base presets, offering as much as 19 steps of finetuning per preset). For the time being you need to shoot either all or none of the finetuning steps as darktable hasn&#8217;t implemented finetuning interpolation yet. If you do, use only the blue-amber axis, leave the green-purple axis centered&nbsp;(0).</p> <p>When contributing your white balance presets please do include your camera&#8217;s firmware version (for future&nbsp;reference).</p> <h2><span class="caps">EXIF</span> support <span class="amp">&amp;</span> Lens&nbsp;Recognition</h2> <p>darktable uses the Exiv2 library to read <span class="caps">EXIF</span> data from image files. As with all raw formats, while there is common ground, there can be camera to camera&nbsp;differences.</p> <p>You can check what Exiv2 can (or can&#8217;t) read from your raw file using the exiv2 command line&nbsp;utility:</p> <div class="highlight"><pre># exiv2 -pt IMG_0000.RAW </pre></div> <p>A common problem is lenses not being recognized. Most raw files store the lens identifiers as a number, which Exiv2 translates into a lens name via a lookup table. Vendors don&#8217;t advertise these numbers, so this lookup table is put together from community submissions. Another problem that arises is that the main camera vendors don&#8217;t account for third party lenses. So a Canon and a Sigma lens can end up reported as the same number in which case it&#8217;s hard to tell for Exiv2 which is which. I think a heuristic is used where focal lengths are compared to see which matches best (assuming both variants are&nbsp;known).</p> <p>If you have any issues with <span class="caps">EXIF</span> you can report these to the Exiv2 project, don&#8217;t forget to include sample files. Also when reporting issues with lens detection, <strong>always</strong> include the <strong>full</strong> lens name in the bug report, so &#8220;Canon 18-55&#8221; isn&#8217;t useful (as there are 4 (or whatever) variants of that lens). Even if there aren&#8217;t variants, still include the full/proper lens&nbsp;name.</p> <p>While darktable doesn&#8217;t use ExifTool for anything, it&#8217;s still a good idea to check if ExifTool handles your files well, too, and if not report this to the ExifTool&nbsp;project.</p> <p>Many distros ship older versions of Exiv2/Exiftool. Be very careful when updating your system copies of these libraries as you may inadvertently break other applications and/or create problems with future operating system&nbsp;upgrades.</p> <h2>Lens&nbsp;correction</h2> <p>Assuming Exiv2 translated the LensID in <span class="caps">EXIF</span> in to a proper lens name. The Lensfun project may or may not have correction information for your lens. For the lenses that do have correction information this is typically limited to distortion correction. If there isn&#8217;t any correction information for your lens yet, you can calibrate it yourself (don&#8217;t forget to submit the results to the Lensfun project, assuming they work well, please do verify this before&nbsp;submitting):</p> <p>These articles might be&nbsp;helpful:</p> <ul> <li>darktable blog: &#8220;<a href="https://www.darktable.org/2013/07/have-your-lens-calibrated/"><span>have your lens calibrated!</span></a>&#8221;</li> <li><a href="http://libregraphicsworld.org/blog/entry/creating-lens-distorsion-models-with-hugin-lens-calibrator">http://libregraphicsworld.org/blog/entry/creating-lens-distorsion-models-with-hugin-lens-calibrator</a></li> <li><a href="http://lensfun.sourceforge.net/calibration/">http://lensfun.sourceforge.net/calibration/</a></li> <li><a href="http://wilson.bronger.org/lens_calibration_tutorial/">http://wilson.bronger.org/lens_calibration_tutorial/</a></li> </ul> <h2>Final&nbsp;notes</h2> <p>If the above doesn&#8217;t help you in assessing your problem and you need to contact us, please do keep the following in&nbsp;mind:</p> <p>Where appropriate include raw samples so developers can check your problem (please use English language file sharing&nbsp;services)</p> <p>For some issues it&#8217;s useful to upload screenshots, however please make screenshots of darktable using an English <span class="caps">GUI</span>:</p> <div class="highlight"><pre># LANG=C darktable </pre></div><img src="https://www.darktable.org/2012/10/whats-involved-with-adding-support-for-new-cameras/camera.jpg" class="hidden-lede">pmjdebruijnTue, 23 Oct 2012 20:12:25 +0000tag:www.darktable.org,2012-10-23:2012/10/whats-involved-with-adding-support-for-new-cameras/blogString freeze for darktable 1.1https://www.darktable.org/2012/10/string-freeze-for-darktable-1-1/<p>Yes.</p> <p>As of today we are in string freeze for the next darktable version. Version 1.1 will not only contain bug fixes (that too) but a lot of new features. Some of them long-wanted, some of them you haven&#8217;t even dreamed&nbsp;about.</p> <p>As usual we follow our release&nbsp;procedure:</p> <ul> <li>String freeze (as of now). Translators get time to catch up and it&#8217;s a good means to stop overly crazy development to be merged into&nbsp;master</li> <li>A couple of weeks of translating and bug&nbsp;hunting</li> <li>Then we&#8217;ll release release candidates again, to enable bread testing even from users who aren&#8217;t comfortable with &#8220;unstable&#8221; packages or&nbsp;git.</li> <li>&#8230;&nbsp;and finally there will be a new stable version of&nbsp;darktable.</li> </ul> <p>Please help us to make this release another success, translate if there is something to translate, test, find bugs and report them to our <a href="https://darktable.org/redmine/projects/darktable/issues">bug tracker</a>. If you have any questions, <a href="https://www.darktable.org/contact/">join us on <span class="caps">IRC</span> or the mailing lists</a>.</p><img src="https://www.darktable.org/2012/10/string-freeze-for-darktable-1-1/IMG_5206_export.jpg" class="hidden-lede">smnThu, 11 Oct 2012 22:14:48 +0000tag:www.darktable.org,2012-10-11:2012/10/string-freeze-for-darktable-1-1/announcementProcess HDR images using darktable.https://www.darktable.org/2012/10/process-hdr-images-using-darktable/<h3>Introduction</h3> <p>This blog post will go through a simple workflow when working with high dynamic ranged images using darktable and the modules for processing, you need use darktable 1.<span class="caps">1RC</span> for this guide. The example image used in the screenshots can be downloaded at following link: <a href="https://www.mpi-inf.mpg.de/resources/hdr/img_hdr/AtriumMorning.exr">AtriumMorning</a></p> <h2>How to make an <span class="caps">HDR</span>&nbsp;image</h2> <p>I&#8217;m not going into details of the process of making an <span class="caps">HDR</span> image, there are many guides out there describing manual methods or automatic ones which some cameras have, but basically, take a bracket shot of your scene and import them into darktable and do no processing at all, export to 16bit tiff and import the tiff files into luminance hdr where you use its align and merge <span class="caps">HDR</span> functionality, when <span class="caps">HDR</span> is merged and cooked just save the image as <span class="caps">EXR</span> image format which you load into darktable for further&nbsp;processing.</p> <h2>Processing the <span class="caps">HDR</span> image using&nbsp;darktable</h2> <h3>Step&nbsp;1</h3> <p>load your <span class="caps">HDR</span> image into darktable, and enter darkroom, the image will probably look very strange and the first thing is disable all auto applied modules by selecting the &#8220;active group&#8221; and turn off all&nbsp;modules.</p> <h3>Step&nbsp;2</h3> <p>the first thing to do now is to settle a base for further processing correcting the image exposure, the approach differs between processing a day or night shoot. If you have a night shot with a few light sources you should now correct the exposure of the light source to bring back as much detail into light source without lowering its intensity so it end up looking dull. If you process a daylight shoot for example a room with windows where you have a indoor scene and sunlit outdoor scene, the approach will be to adjust exposure so the darkest part of the image eg. shadows contains details and have a nice dark tone. This is just a starting point for both night and day shoots, you will likely get back to this step for fine tuning the end result so don&#8217;t spend too much time on this step for now, just do a rough estimation of what you think you want according to the 2 approaches described&nbsp;above.</p> <p><span><a href="https://www.darktable.org/2012/10/process-hdr-images-using-darktable/exposure.jpg"><img alt="exposure" src="exposure_thumb.jpg" /></a></span></p> <h3>Step&nbsp;3</h3> <p>we should now apply a tone map operator, which purpose is to compress a high dynamic ranged image into a lower range suitable for display on screen etc. There are 2 variants of tone map operators, global and local, local tone map operators tries to preserve contrast, some is better than others but in general will make the image look unrealistic and are commonly used to do &#8220;artistic&#8221; <span class="caps">HDR</span> images. This blog post is not about doing cartoons and therefore i will not go though a process of doing such thing. At our hands we have &#8216;global tonemap&#8217; module in darktable which has 3 standard implementations of tonemappers, reinhard, filmic response curve and drago. The choice of operator is just a choice of what get closest to what you want. All three of them have their own pros and cons but is usable in both day and night shoots, I use all three of them depending of what result I&#8217;m after. Choose a global tone map operator and tune available controls to your like, if you processing a day shot you want to bring details in highlights and if you are on a night shot the shadows are what you aim to bring back. You will probably depending on tone map operator choice and its controls go back to step 2 to fine tune the exposure. The detail slider within the global tonemap module will try to recover some contrast details which is lost in the tonemap&nbsp;operation.</p> <p><span><a href="https://www.darktable.org/2012/10/process-hdr-images-using-darktable/tonemap.jpg"><img alt="tonemap" src="tonemap_thumb.jpg" /></a></span></p> <h3>Step&nbsp;4</h3> <p>the image can sometimes look somewhat dull and local contrast enhancement comes to the rescue, darktable have 2 approaches of local contrast, the equalizer can enhance contrast locally and the module named local contrast which at the time writing only is available in the source repo but will be available in the next release of&nbsp;darktable.</p> <p><span><a href="https://www.darktable.org/2012/10/process-hdr-images-using-darktable/localcontrast.jpg"><img alt="localcontrast" src="localcontrast_thumb.jpg" /></a></span></p> <p>Additionally, you can use any module to enhance the image in the way you want. Play around and you will find how to get closer to the end result you are searching for, but remember not to touch exposure slider when you archived the result from above steps, that will ruin the process and you will have to start over from&nbsp;begin.</p><img src="https://www.darktable.org/2012/10/process-hdr-images-using-darktable/img_0001.jpg" class="hidden-lede">Henrik AnderssonSat, 06 Oct 2012 17:16:03 +0000tag:www.darktable.org,2012-10-06:2012/10/process-hdr-images-using-darktable/blogHDRprocessingworkflowGeotagging in darktablehttps://www.darktable.org/2012/09/geotagging-in-darktable/<figure class="u-pull-left" role="group"> <span><a href="https://www.darktable.org/2012/09/geotagging-in-darktable/geotagging_module.jpg"><img alt="Geotagging module" src="geotagging_module_thumb.jpg" /></a></span> <figcaption>Geotagging module</figcaption></figure> <p>For quite some time people have asked us for a way to geotag their images from within darktable. While that is a nifty feature for sure and really helpful when you take pictures outside of a studio we always had to say something along the lines of “sorry, we don&#8217;t have that yet”. Some day however Henrik decided to give it a try and started work in his <em>geo</em> branch. Things started to come together nicely and everything looked really promising, but unfortunately he was a little short in free time so the progress stalled and the code started to bitrot. Since it would be a pity to throw away all the great work Henrik did I kind of adopted the branch and set sails to add the missing bits and pieces to make geotagging a new feature of&nbsp;darktable.</p> <p>Granted, a few details are still missing and I wouldn&#8217;t be surprised if a few quirks and bugs can be found, too, but nevertheless I decided that the code was ready for prime time and merged it back into master. So everyone using either the experimental builds from Pascal&#8217;s <span class="caps">PPA</span>, compiles darktable from git or has some other way to run the latest and greatest development version of darktable can try all of this&nbsp;stuff.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/geotagging-in-darktable/gps_devices.jpg"><img alt="A full fledged GPS receiver and a small logger" src="gps_devices_thumb.jpg" /></a></span> <figcaption>A full fledged <span class="caps">GPS</span> receiver and a small logger</figcaption></figure> <p>While the easiest way to get geotagged images is using a camera with a built-in <span class="caps">GPS</span> receiver (or an external receiver attached to the camera) most people don&#8217;t have that. So we somehow have to assign geo locations to the images. Basically there are two ways to do that: for one you can do it manually for every image or you can use a <span class="caps">GPS</span> receiver to record a <span class="caps">GPX</span> track while you take your pictures (you can either use a cheap <span class="caps">GPS</span> logger or a full fledged <span class="caps">GPS</span> receiver, maybe even your phone). If you just want to try this you can take the manual route but if you plan to geotag thousand of pictures taken during your vacation I would advice to spend a little money on some&nbsp;hardware.</p> <h2>Some background&nbsp;information</h2> <p>If you are lucky enough to have a camera which already stores coordinates in the <span class="caps">EXIF</span> data of the images you can skip this paragraph and also the next one. If you want to tag the images manually you can skip the next two paragraphs, too. Or just keep reading, it might be interesting after all.&nbsp;;)</p> <p>So, let me explain the intended workflow to assign geo locations to your images making use of the <span class="caps">GPX</span> file stored by your <span class="caps">GPS</span> tracker. First of all let me explain what these <span class="caps">GPX</span> files are. The <span class="caps">GPS</span> receiver calculates its current position based on the information it receives from some satellites and stores them in a <span class="caps">GPX</span> file, together with the current date and time (and some other data which we are not interested in). Basically it is a mapping between time and position, telling us where the device has been at a given time. As you probably know, the <span class="caps">EXIF</span> data of the images also contains a time stamp. So all we have to do is take the time stamp of the image, look-up the position of the <span class="caps">GPS</span> tracker at that point in time and assume that camera and <span class="caps">GPS</span> device were in close proximity. Easy. Well, at least in theory. In reality there are a few problems which you need to keep in&nbsp;mind.</p> <p>First, most cameras don&#8217;t have the exact time (<span class="caps">GPS</span> devices however have it, they are basically showing the time from atomic clocks sent by the <span class="caps">GPS</span> system). At least my camera is almost always off a little. Maybe you are better in taking care of setting the embedded clock. Anyway, if the time of camera and <span class="caps">GPS</span> tracker differs the location will also be wrong. So we might need to fix the time stored with the&nbsp;image.</p> <p>The second problem is more systematical. The time stored in the <span class="caps">EXIF</span> data doesn&#8217;t contain a time zone. At least on all cameras I have seen so far. So what exactly does a time stamp of “12:00:00” mean? Well, it&#8217;s noon, but where? Most people set it to their local time, but what is that? The image doesn&#8217;t tell us. All we know is that the <span class="caps">GPX</span> file uses <span class="caps">UTM</span> time (at least with my Garmin) or contains the time zone used if it doesn&#8217;t. In order to correctly find the position of the image we need to know if it&#8217;s noon in London (<span class="caps">UTM</span>), New York, Berlin, Sydney or any other place of the&nbsp;world.</p> <h2>Adding coordinates to the&nbsp;images</h2> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/geotagging-in-darktable/geotagging_offset.jpg"><img alt="Calculating the time offset" src="geotagging_offset_thumb.jpg" /></a></span> <figcaption>Calculating the time offset</figcaption></figure> <p>As we have just seen we need to take care of the time in two places: the offset in the images and the time zone needed to make sense of the <span class="caps">EXIF</span> data. That is also the order in which you have to tackle them: first the offset, then the time zone. To fix the drift of the camera assigned time stamp you can either enter it manually into the offset input field in the geotagging module in lighttable mode or let darktable help you. All you need is a picture taken of a reliable time source. This can be any precise clock or even better the time displayed on your <span class="caps">GPS</span> device&nbsp;– provided it has a display to show you the time. When you have such an image selected you can click on the button next to the offset entry (currently it has a looking glass as its icon, that might change though) and darktable will present you an entry box at the bottom of the window. Just enter the time that is shown on the clock or <span class="caps">GPS</span> device that you took a picture of and hit enter (or click <span class="caps">OK</span>). As a result you will get the difference between the time you entered and the one associated with the image in its <span class="caps">EXIF</span> data entered into the offset field on the right. Now all you have to do is selecting all the images you want to geotag (and that are probably suffering from the same time offset) and click the apply button (currently represented by a check mark). This will alter the time in darktable&#8217;s internal database for these pictures, so you will also see the change in the image information module on the left. However, in the current state darktable will <span class="caps">NOT</span> attach this changed time to your exported images&nbsp;– they will still use the original value the camera wrote, but that is supposed to&nbsp;change.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/geotagging-in-darktable/geotagging_gpx.jpg"><img alt="Loading a GPX file" src="geotagging_gpx_thumb.jpg" /></a></span> <figcaption>Loading a <span class="caps">GPX</span> file</figcaption></figure> <p>Now that you have a bunch of images with a corrected time you can apply a <span class="caps">GPX</span> track. Click the corresponding button in the geotagging module and navigate to the <span class="caps">GPX</span> file. Before confirming that dialog you should make sure that the time zone selector is showing the right one for your camera. Once that is confirmed you can click on Open. Should you ever make a mistake with the time zone selection you can just come back and reapply the <span class="caps">GPX</span> file with a different time&nbsp;zone.</p> <h2>Watching the images on the&nbsp;map</h2> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/geotagging-in-darktable/geotagging_map.jpg"><img alt="Map mode" src="geotagging_map_thumb.jpg" /></a></span> <figcaption>Map mode</figcaption></figure> <p>At this point I suppose that your pictures have a location assigned&nbsp;– either by a nifty camera which does it on its own or by you loading a <span class="caps">GPX</span> file&nbsp;– or that you want to add that information manually. In any case you should switch to the map mode by selecting it in the header of the window (top right hand, maybe you have to expand the top panel and/or hit <em>ctrl-h</em> to see it). You should now see a map in the center and some new modules on the right. Make sure to display the film strip on the bottom of the window (expand the bottom panel and/or hit <em>ctrl-f</em>). If your images are already tagged with a location you can now double click them in the film strip and the map will be zoomed to the image. You can also pan the map by clicking and dragging the mouse and zoom it using the mouse wheel (yes, we will add keyboard shortcuts). If you want to geotag an image manually or are not happy with the location that it currently has you can put them on the map by dragging them from the filmstrip and dropping them on the map. Currently it&#8217;s not possible to drag them around on the map, you always have to take them from the filmstrip! In order to help you finding the place on earth where you want to put the image to there is a location module on the right hand with which you can search for city names, points of interest,&nbsp;…</p> <h2><span class="caps">TL</span>;<span class="caps">DR</span></h2> <p>First adjust the time offset of the images, then import the <span class="caps">GPX</span> file and make sure to use the correct time zone. Drag&amp;drop images from the film strip to the map afterwards when you think that you have&nbsp;to.</p><img src="https://www.darktable.org/2012/09/geotagging-in-darktable/IMG_6337_export.jpg" class="hidden-lede">houzSun, 23 Sep 2012 22:30:34 +0000tag:www.darktable.org,2012-09-23:2012/09/geotagging-in-darktable/upcoming featureGroupinghttps://www.darktable.org/2012/09/grouping/<p>People following the development of darktable might have heard that we added a grouping feature. Everyone who hasn&#8217;t heard of that yet: We added a grouping&nbsp;feature.</p> <p>Now that everybody knows about it I should try to explain what it actually is and how it works/how to use it. For the technical specification you can have a look at <a href="https://github.com/darktable-org/darktable/blob/master/doc/grouping.txt">the design specs</a>.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/grouping/grouping_off.jpg"><img alt="Grouping turned off" src="grouping_off_thumb.jpg" /></a></span> <figcaption>Grouping turned off</figcaption></figure> <p>The first change in the <span class="caps">GUI</span> that can be noticed is a little ‘G’ button. Well, first of all we have to notice that there are two kinds of ‘G’ in the <span class="caps">GUI</span>: one in the top toolbar, next to the preferences wheel. The other kind is on images frames which are part of a group, next to the yin-yang-edited&nbsp;symbol.</p> <p>With the G in the toolbar you can change if images are shown in groups or not. This corresponds to the “‘G’ on” and “‘G’ off” sections in the grouping.txt file. The interesting case is when the toolbar G is turned on. Now you can expand grouped images by clicking on the G in the thumbnail frame and collapse the group again with another click. Once a group is expanded you can change the representative of the group by clicking its G. This will be the image that is shown when the group is&nbsp;collapsed.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/grouping/grouping_on.jpg"><img alt="Grouping turned on" src="grouping_on_thumb.jpg" /></a></span> <figcaption>Grouping turned on</figcaption></figure> <p>If you want to play with that you obviously need grouped images in the first place. You get them either by importing files with the same base name and just different extensions (like “img_0001.<span class="caps">CR2</span>” and “img_0001.<span class="caps">JPG</span>”) or by duplicating an image. You can also just put images into a group manually by selecting them and hitting ctrl-g. If you expanded a group before hitting these keys the selected images will be added to the expanded group, otherwise a new group is created. Removing images from a group is done by selecting them and hitting&nbsp;ctrl-shift-g.</p> <p>To select all images in an expanded group you can ctrl-click or shift-click the G of one image of the&nbsp;group.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/09/grouping/group_expanded.jpg"><img alt="Grouping turned on and one group expanded" src="group_expanded_thumb.jpg" /></a></span> <figcaption>Grouping turned on and one group expanded</figcaption></figure> <p>So at the end of the day it all boils down to keep your lighttable nice and tidy by only allowing you to only see a single thumbnail for a logical group of images. Please keep in mind however that changes done to the representative of a group (by opening it in darkroom mode and working on it) are only applied to that one image, not all images in the&nbsp;group!</p> <p>I know that this explanation is a little hard to follow if you didn&#8217;t play with the functionality in darktable yet. So just go and try&nbsp;it.</p><img src="https://www.darktable.org/2012/09/grouping/IMG_6375_export.jpg" class="hidden-lede">houzSun, 23 Sep 2012 22:11:45 +0000tag:www.darktable.org,2012-09-23:2012/09/grouping/upcoming featureedge aware image developmenthttps://www.darktable.org/2012/09/edge-aware-image-development/<p>in an ideal world, an image is piecewise smooth. it has soft gradients, some detail and edges. in particular there&#8217;s no noise and the edges are sharp. given these assumptions, you can do a lot of cool things to your pictures, using techniques like frequency space editing, wavelets, or local&nbsp;histograms.</p> <p>darktable&#8217;s <a href="https://www.darktable.org/2011/11/darktable-and-research/">equalizer module</a> demonstrates some of this, using the wavelet approach. you can use it to sharpen and denoise, enhance or attenuate certain frequencies in your image, while keeping the edges&nbsp;intact.</p> <p>today&#8217;s blog post is about a different technique which does similar things, and i&#8217;ll demonstrate a few usecases in our new&nbsp;pipeline.</p> <h2>bilateral&nbsp;filter</h2> <p>a bilateral filter is basically a high dimensional gaussian blur, which can be evaluated very quickly at reasonable memory cost (and with a simple implementation) if you limit yourself to 3d (pixel position and brightness) [0]. this is what it looks like (left: original, right: bilateral filter&nbsp;applied):</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bilateral_original_crop.jpg"><img alt="bilateral_original_crop" src="bilateral_original_crop_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bilateral_baselayer_crop.jpg"><img alt="bilateral_baselayer_crop" src="bilateral_baselayer_crop_thumb.jpg" /></a></span></span> </span></p> <p>a bit boring, eh? while we actually use this filter for denoising in one of our modules (in 5d and using the permutohedral lattice [1] instead of the grid), it&#8217;s mainly useful as a building block (base layer for local contrast enhancement&nbsp;etc).</p> <h2>importance of&nbsp;edges</h2> <p>take local contrast enhancement as an example. it works much like the standard `unsharp mask sharpening&#8217; filter. first you blur your picture to get a smooth base layer, subtract it from the original, and add back the difference (containing all the small detail) multiplied with a contrast boost value &gt;&nbsp;1.</p> <p>let&#8217;s do this on a one dimensional line. the following graphs show a 1d signal <strong>I</strong> (red), the blurred base layer <strong>B</strong> (green), the detail <strong>D</strong> (difference between the two, blue), and the signal after local contrast enhancement <strong>B + 2 D</strong>&nbsp;(magenta):</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/halo.jpg"><img alt="halo" src="halo_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/gradientrev.jpg"><img alt="gradientrev" src="gradientrev_thumb.jpg" /></a></span></span> </span></p> <p>the left graph shows an overblurred base layer, the right one is too sharp (the edge is almost a step function, no smooth gradient). for local contrast enhancement we&#8217;d actually like to keep the edges as they are, so these curves should all line up perfectly (and detail should be zero), we only want to enhance small structures, not change&nbsp;edges.</p> <p>so what happens is the left picture will produce large halos (bright sky will get too bright close to the edge, and then too dark on the other side before averaging out), while the right one shows ugly gradient reversals, which will show up as a double line close to&nbsp;edges.</p> <p>this problem has been described and solved automatically by [2], and our equalizer module has the `sharpness&#8217; curve for you to take care of this manually. but there&#8217;s also a possibility to make the bilateral filter a little more well-behaved with respect to this, while actually making the implementation faster [3]. there are other/newer techniques to fix this, but these are somewhat more heavy weight (local&nbsp;laplacians).</p> <h1>implementation</h1> <p>our implementation of the 3d unnormalized bilateral grid is straight forward, not particularly optimized and very fast. especially for large sigma the number of grid points is very low and thus the blur step doesn&#8217;t have a lot of work to&nbsp;do.</p> <p>the only difference to a regular bilateral grid is the third blur step, which blurs along the dimension of brightness. instead of blurring it with a gaussian, a kernel that looks very similar to the derivative of a gaussian is used. this leads to what is better described in [3], that the effect of the filter is toned down at the edges instead of being normalized to a weight of 1.0, leading in a slightly uninformed result. more precisely, take the bilateral filter <span class="math">\(B_p\)</span> at pixel&nbsp;p:</p> <div class="math">$$B_p = \frac{1}{W_p} \sum_q I_q G_{\sigma_r}(|| I_q - I_p ||) G_{\sigma_s}(||q-p||)$$</div> <div class="math">$$\mbox{ with } W_p = \sum_q G_{\sigma_r}(|| I_q - I_p ||) G_{\sigma_s}(||q-p||),$$</div> <p>and the unnormalized&nbsp;variant:</p> <div class="math">$$B'_p = I_p + \sum_q (I_q-I_p) G_{\sigma_r}(|| I_q - I_p ||) G_{\sigma_s}(||q-p||).$$</div> <p>pulling <span class="math">\(I_p\)</span> out of the sum is just a no-op. the interesting part is leaving away the division by the weight. for small values of the two gaussians, this results in a very low magnitude of the sum overall, effectively leaving the input image <span class="math">\(I_p\)</span> unchanged. this happens near edges, where only half the neighbourhood is considered close by with respect to the range sigma. the awesome side effect is that we don&#8217;t have to compute <span class="math">\(W_p\)</span>.</p> <p>during the first phase, splatting, we need to rasterize the 3d points in the input image into the downsampled grid. this turns out to be a synchronization problem when using a lot of threads (on the gpu). this still results in underwhelming performance after some shared memory tricks. our opencl implementation thus detects the gpu at compile time and uses inline ptx assembly for nvidia&#8217;s floating point atomics in global memory. as a reference for all the poor guys who need the same instruction in opencl and don&#8217;t feel like digging through the manuals, here it&nbsp;is:</p> <p><code>asm volatile ("atom.global.add.f32 %0, [%1], %2;" : "=f"(res) : "l"(val), "f"(delta));</code></p> <p>with that, my <span class="caps">GT</span> 540M achieves an acceptable 2-3x speedup over my core i7 @2GHz (note: totally unoptimized non-<span class="caps">SIMD</span> implementation), depending on input parameters (sigma totally change the way sync problems&nbsp;arise).</p> <h1>examples</h1> <p>now for some pictures. i said it&#8217;s going to be useful as a building block, here are some use&nbsp;cases.</p> <h2>monochrome</h2> <p>in this Lab colorspace module, L is multiplied with a color filter value based on the ab channels. the problem here is noisy input and unstable color channels around very dark or very bright areas, or even worse at the transition between those. effectively, the noisy L channel is multiplied by correlated noise in the ab channels, which literally multiplies noise (left image below). the new code computes color filter values, smoothes them (in an edge aware way) and then applies the rest of the filter as before (right&nbsp;image).</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bw_master.jpg"><img alt="bw_master" src="bw_master_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bw_bilateral.jpg"><img alt="bw_bilateral" src="bw_bilateral_thumb.jpg" /></a></span></span> </span></p> <h2>tone&nbsp;mapping</h2> <p>the module `global tonemapping&#8217; has lost the meaning of its title, and got an additional slider to add more local detail. please don&#8217;t push it all the way to the right (or else we delete your&nbsp;image).</p> <p>this example has been treated with the `filmic response curve&#8217; and lost a lot of contrast in the process. the right version has some of it added back, and will result in this common cheap hdr look that you&#8217;ll find everywhere around the web if you push it any more (just ours comes without the halos i&nbsp;guess).</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/tonemap_master.jpg"><img alt="tonemap_master" src="tonemap_master_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/tonemap_bilat.jpg"><img alt="tonemap_bilat" src="tonemap_bilat_thumb.jpg" /></a></span></span> </span></p> <h2>shadows/highlights</h2> <p><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/">this module</a> makes use of a lowpass filter to achieve a consistent shadow recovery operation. on high contrast edges, it can suffer from halos, so it now has the option to switch from pure lowpass (gaussian) to edge aware (bilateral filter). the difference is illustrated in the following three pictures (original, gaussian,&nbsp;bilateral):</p> <p><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/halos_0001_05.jpg"><img alt="halos_0001_05" src="halos_0001_05_thumb.jpg" /></a></span></p> <p><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/halos_0001_03.jpg"><img alt="halos_0001_03" src="halos_0001_03_thumb.jpg" /></a></span></p> <p><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/halos_0001_02.jpg"><img alt="halos_0001_02" src="halos_0001_02_thumb.jpg" /></a></span></p> <p>this image had the highlights toned down quite a bit to exaggerate the effect. note the strong halos around the roof and the darkening of the top of this pole at the&nbsp;left.</p> <p>we left you with a choice between the two mainly for backwards compatibility (quite a big difference). but it is also worth noting that sometimes the bilateral filtering fails in the sense that it doesn&#8217;t correctly detect coloured edges (chromatic aberrations anyone?) or sometimes still results in oversharpening as described above. all of that is mainly visible if you push your highlights/shadows so hard that the image will be destroyed for that reason already (like my example above), but you never know. if working with the bilateral option, be sure to double check your&nbsp;edges.</p> <h1>more</h1> <p>this might be useful to increase the stability of blend-if masks in the future. i&#8217;m not aware of any problems there, but if they arise we know what to&nbsp;do.</p> <p>there is the possibility of a standalone bilateral local contrast tool with a reasonably low amount of edge artifacts. it currently sits in the `bilateral&#8217; branch because we already have so many modules and i&#8217;m not sure how useful it is. as a teaser, you can do the following to a 1Mpix image in 20ms on an&nbsp;i7:</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bilateral_original_crop.jpg"><img alt="bilateral_original_crop" src="bilateral_original_crop_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/09/edge-aware-image-development/bilateral_localcontrast_crop.jpg"><img alt="bilateral_localcontrast_crop" src="bilateral_localcontrast_crop_thumb.jpg" /></a></span></span> </span></p> <h1>references</h1> <ul> <li>[0] Real-Time Edge-Aware Image Processing with the Bilateral Grid. Jiawen Chen, Sylvain Paris, Frédo Durand,&nbsp;2007.</li> <li>[1] Fast High-Dimensional Filtering Using the Permutohedral Lattice. Andrew Adams, Jongmin Baek, Abe Davis.&nbsp;2010.</li> <li>[2] Smoothed Local Histogram Filters. Michael Kass, Justin Solomon.&nbsp;2010.</li> <li>[3] Fast and Robust Pyramid-based Image Processing. Mathieu Aubry, Sylvain Paris, Samuel Hasinoff, Jan Jautz, Frédo Durand.&nbsp;2011.</li> </ul> <script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) { var align = "center", indent = "0em", linebreak = "false"; if (false) { align = (screen.width < 768) ? "left" : align; indent = (screen.width < 768) ? "0em" : indent; linebreak = (screen.width < 768) ? 'true' : linebreak; } var mathjaxscript = document.createElement('script'); mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#'; mathjaxscript.type = 'text/javascript'; mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; mathjaxscript[(window.opera ? "innerHTML" : "text")] = "MathJax.Hub.Config({" + " config: ['MMLorHTML.js']," + " TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," + " jax: ['input/TeX','input/MathML','output/HTML-CSS']," + " extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," + " displayAlign: '"+ align +"'," + " displayIndent: '"+ indent +"'," + " showMathMenu: true," + " messageStyle: 'normal'," + " tex2jax: { " + " inlineMath: [ ['\\\\(','\\\\)'] ], " + " displayMath: [ ['$$','$$'] ]," + " processEscapes: true," + " preview: 'TeX'," + " }, " + " 'HTML-CSS': { " + " styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," + " linebreaks: { automatic: "+ linebreak +", width: '90% container' }," + " }, " + "}); " + "if ('default' !== 'default') {" + "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" + "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" + "VARIANT['normal'].fonts.unshift('MathJax_default');" + "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" + "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" + "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" + "});" + "}"; (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript); } </script><img src="https://www.darktable.org/2012/09/edge-aware-image-development/pink.jpg" class="hidden-lede">joSun, 02 Sep 2012 00:56:42 +0000tag:www.darktable.org,2012-09-02:2012/09/edge-aware-image-development/blogdevelopmentupcoming featureExperimental darktable OS X imagehttps://www.darktable.org/2012/08/experimental-darktable-os-x-image/<p>After the progress reported in the <a href="https://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/">latest blog post</a> on the <span class="caps">OS</span> X port of darktable we now have something new for the Mac&nbsp;users:</p> <p><a href="{author}parafin">parafin</a> just released an experimental <span class="caps">DMG</span> image of&nbsp;darktable!</p> <p>Please be aware of this being an experimental <span class="caps">OS</span> X build as well as experimental software in general&nbsp;– it&#8217;s based on the latest development version of darktable that will be darktable 1.1 someday in the&nbsp;future.</p> <p>You can grab the file from&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/">https://sourceforge.net/projects/darktable/files/darktable/</a> (look for the most recent .dmg&nbsp;file)</p> <p>Just as a reminder (see the blog post for more information): There&#8217;s an issue with gphoto on <span class="caps">OS</span> X, which prevents a plugged-in camera from appearing in darktable. To fix it simply run <code>killall PTPCamera</code> command after connecting the&nbsp;camera.</p> <p>Please report back any issues you have with it to help improving this software. Use our bug tracker for reporting, that makes it easier for us to keep track of your problems: <a href="https://darktable.org/redmine/projects/darktable/issues/new">file new&nbsp;bug</a></p> <p>Enjoy&nbsp;it!</p> <p>Edit: disk image updated to support older than Mountain Lion <span class="caps">OS</span> X versions (but at least as new as Snow&nbsp;Leopard).</p><img src="https://www.darktable.org/2012/08/experimental-darktable-os-x-image/spider.jpg" class="hidden-lede">smnMon, 20 Aug 2012 21:33:34 +0000tag:www.darktable.org,2012-08-20:2012/08/experimental-darktable-os-x-image/announcementdarktable releaseBringing current darktable to OS Xhttps://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/<p>darktable has been software of my choice for raw photo development for quite some time now, I&#8217;ve occasionally submitted bug reports and patches and kept an eye on current development by using git master version. My main operating system is Linux, which is the priority target of darktable support, but recently I bought MacBook Air to take with me on trips and such. Also my current project at work consists of porting a library to <span class="caps">OS</span> X, so this presented to me as a great opportunity to contribute to one of my favorite open-source projects and make darktable work reliably on Macs. Some work has already been done in the past, there&#8217;s even a package of an old darktable version for <span class="caps">OS</span> X, but of course I was interested in bringing the latest darktable experience to <span class="caps">OS</span>&nbsp;X.</p> <h1>How things were at the beginning of my&nbsp;work</h1> <p>Since <span class="caps">OS</span> X support was present in some way in current codebase, compiling darktable wasn&#8217;t a problem. All I had to do is install dependencies via macports, checkout git repository and run cmake and make. darktable even successfully started, at least sometimes :) That was a good start&nbsp;actually.</p> <h1>Killed&nbsp;bugs</h1> <p>First problem I noticed was reproducible crash when switching to darkroom mode. Using gdb I traced it back to text rendering in bauhaus code. On Linux fontconfig considers &#8220;sans&#8221;, &#8220;sans serif&#8221; and &#8220;sans-serif&#8221; as aliases to default font from Sans family, but <span class="caps">OS</span> X isn&#8217;t so accepting and chokes on &#8220;sans-serif&#8221; spelling, which was used in bauhaus. Changing it to &#8220;sans&#8221; solved this&nbsp;problem.</p> <p>Second reproducible crash was triggered by attaching/detaching any <span class="caps">USB</span> devices. This time it wasn&#8217;t anything darktable code did wrong, but libgphoto&#8217;s fault. It was dynamically loading and unloading libusb-0.1, which left usb event handling threads running even after library with thread&#8217;s main function code was unloaded from the memory. Workaround I used to circumvent this issue is to link darktable itself against libusb, thus making sure it stays in the memory. Hopefully gphoto will soon finally migrate to libusb-1 backend (it&#8217;s already there, but needs more work and isn&#8217;t a default choice yet) which has a proper exit function for stopping such threads before&nbsp;unloading.</p> <p>Third crash was more tricky since it was happening almost randomly and in different functions. All of them though were in sqlite3 library. When I tried to build and install sqlite3 with debugging symbols to better understand what was happening, I realized that darktable was using system libsqlite3 instead of macports version. Forcing build system to link against libsqlite3 in /opt/local/lib directory helped (<span class="caps">OS</span> X dynamic linker/loader works differently than Linux one, it allows to prefer one library from /opt/local/lib and another from default system path). So <span class="caps">OS</span> X ships an old/buggy version of libsqlite3, something to watch out for if you&#8217;re writing for Mac&nbsp;platform.</p> <p>Next improvement was enabling OpenCL support on <span class="caps">OS</span> X. Apple began including it since Snow Leopard, so it would be a shame not to take advantage of that fact. OpenCL library is installed as a &#8220;framework&#8221; on <span class="caps">OS</span> X, this concept was new to me, and first I thought that there was no way to load it dynamically how it&#8217;s done on Linux. I rewrote code so that darktable would link against OpenCL framework on <span class="caps">OS</span> X, but after some discussion and help on <span class="caps">IRC</span>, I&#8217;ve managed to find where exactly dynamic library resided&nbsp;– /System/Library/Frameworks/OpenCL.framework/Versions/Current/OpenCL. Now OpenCL library successfully loads, but I can&#8217;t do any further testing, since my laptop doesn&#8217;t have discrete <span class="caps">GPU</span>.</p> <p>Next issue was that function keys weren&#8217;t recognized by darktable and so most common shortcuts didn&#8217;t work. This turned out to be a bug in <span class="caps">GTK</span>, that was already fixed and just updating <span class="caps">GTK</span> from outdated macports version helped (use at least&nbsp;2.24.11).</p> <p>All other fixes were about <span class="caps">GUI</span> appearance. Font subsystem on <span class="caps">OS</span> X has different idea about what font size numbers mean, &#8220;Sans 8&#8221; on Linux looks something like &#8220;Sans 13&#8221; on Mac. So font sizes had to be changed for <span class="caps">OS</span> X in several places. This fact though exposed an issue with bauhaus widgets (they are quite new after all) that wasn&#8217;t specific to <span class="caps">OS</span> X&nbsp;– code made assumption that ratio between font size and its height in pixels is constant. This isn&#8217;t true even for Linux systems with different <span class="caps">DPI</span> settings, but since cairo by default doesn&#8217;t pay attention to monitor&#8217;s <span class="caps">DPI</span>, everything looked fine. This all has been fixed, now bauhaus is correctly rendered on Linux and <span class="caps">OS</span> X systems with any <span class="caps">DPI</span>&nbsp;setting.</p> <p>Lastly there was a mismatch in <span class="caps">GUI</span> colors, which made darktable look somewhat ugly. It was probably the most hard problem to debug and fix. It turned out to be caused by use of different functions to set color space in cairo and gtk quartz backends. Apple documentation wrongly stated though that both variants are actually equivalent, so it took some time for me and <span class="caps">GTK</span>+ developers to figure out what was happening. Details and patch can be found in <a href="https://bugzilla.gnome.org/show_bug.cgi?id=681784"><span class="caps">GNOME</span> bugzilla</a>.</p> <h1>To be&nbsp;done</h1> <p>OpenMP is still disabled on <span class="caps">OS</span> X. System compiler is too old to support it and I&#8217;m still to experiment with other&nbsp;options.</p> <p>Creating application bundle is obviously the final target of this process, there&#8217;s a script for that already in git repository, but it needs to be tested and most likely&nbsp;adjusted.</p> <h1>Feedback&nbsp;required</h1> <p>Though darktable appears to run stably on my system, I haven&#8217;t actually processed any considerable number of photos with it on <span class="caps">OS</span> X yet. Also I use Mountain Lion, and obviously other <span class="caps">OS</span> X versions differ, which can expose more bugs. So you are welcome to try darktable on your Mac and report any crashes or bugs using <a href="https://www.darktable.org/redmine/projects/darktable/issues">our bug tracker</a>. <span class="caps">OS</span> X saves backtraces of all segfaults, you can find them in Console application (Diagnostic And Usage Information/User Diagnostic Reports), so please attach them to your bug&nbsp;reports.</p> <p>To build darktable on <span class="caps">OS</span> X follow these&nbsp;steps:</p> <ol> <li>Install MacPorts (instructions and prerequisites can be found on <a href="https://www.macports.org/install.php">official website</a>), please use default installation path&nbsp;(/opt/local)</li> <li>Add <code>+no_gnome +no_x11 +quartz -x11 -gnome</code> to&nbsp;/opt/local/etc/macports/variants.conf</li> <li>Install required dependencies: <code>sudo port install git exiv2 libgphoto2 gtk-engines2 gtk-osx-application-gtk2 lensfun librsvg libsoup openexr json-glib flickcurl GraphicsMagick openjpeg15 lua webp libsecret</code></li> <li>Clone darktable git repository: <code>git clone git://github.com/darktable-org/darktable.git</code></li> <li>Finally build and install darktable: <code>cd darktable ; mkdir build ; cd build ; cmake .. ; make ; sudo make install</code></li> </ol> <p>After this darktable will be installed in /usr/local directory and can be started by typing &#8220;darktable&#8221; in&nbsp;terminal.</p> <p><strong><span class="caps">P.S.</span></strong></p> <p>There&#8217;s an issue with gphoto on <span class="caps">OS</span> X, which prevents a plugged-in camera from appearing in darktable&nbsp;– <span class="caps">OS</span> X starts PTPCamera daemon when it detects a camera, which blocks the access to the device from any other application. To fix it simply run <code>killall PTPCamera</code> command after connecting the camera. An automated solution also exists (I haven&#8217;t tried it myself, so no warranties): <a href="https://micro-manager.org/wiki/GPhoto">https://micro-manager.org/wiki/GPhoto</a> (scroll to the&nbsp;bottom).</p> <p><span><a href="https://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/dtonosx.png"><img alt="darktable on OS X" src="dtonosx_thumb.png" /></a></span></p><img src="https://www.darktable.org/2012/08/bringing-current-darktable-to-os-x/dtonosx.png" class="hidden-lede">parafinTue, 14 Aug 2012 19:44:11 +0000tag:www.darktable.org,2012-08-14:2012/08/bringing-current-darktable-to-os-x/blogdevelopmentbugfixesdarktablegitmacportsos xdarktable 1.0.5 releasedhttps://www.darktable.org/2012/07/darktable-1-0-5-released/<p>It&#8217;s our pleasure to announce that darktable-1.0.5 has been released. Find the tarball on&nbsp;sf.net:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.5.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.5.tar.gz/download</a></p> <p>The Ubuntu PPAs have been built already, you should get them with your next update automatically if you subscribed to Pascal&#8217;s <span class="caps">PPA</span>.</p> <p>This has a good chance of being the last one in a series of stable releases (with stuff backported from our latest and greatest). Thanks to Pascal for maintaining it! As such, it comes with a short list of maintenance things as change&nbsp;log:</p> <ul> <li>Update to RawSpeed&nbsp;r438</li> <li>Update to LibRaw&nbsp;0.14.7</li> <li>White balance presets for Nikon Coolpix P7100 and Panasonic <span class="caps">GF3</span></li> <li>White balance preset updates for Canon <span class="caps">EOS</span> 7D, Canon <span class="caps">EOS</span>&nbsp;350D</li> <li>Standard Color Matrices for Canon <span class="caps">EOS</span> 650D, Canon <span class="caps">EOS</span> 5D Mark <span class="caps">III</span>, Canon <span class="caps">EOS</span> 1D X, Canon PowerShot G1 X, Canon PowerShot <span class="caps">SX220</span>, Nikon D3200, Nikon D4, Nikon D800, Olympus E-M5, Panasonic <span class="caps">GF5</span>, Sony <span class="caps">SLT</span>-A37/A57, Leica X1/X2, Sony <span class="caps">DSC</span>-<span class="caps">RX100</span></li> <li>A few memory leaks were&nbsp;resolved</li> <li>A few generic bugs were&nbsp;resolved</li> </ul> <p>We&#8217;d like to take the opportunity this time to thank some other projects we depend on, and their authors for being&nbsp;awesome:</p> <ul> <li><strong>RawSpeed</strong>: Klaus&nbsp;Post</li> <li><strong>LibRaw</strong>: Alex&nbsp;Tutubalin</li> <li><strong>UFraw</strong>: (white balance presets), Niels Kristian Bech Jensen, Udi&nbsp;Fuchs</li> <li><strong>DCraw</strong>: Dave&nbsp;Coffin</li> <li><strong>Adobe</strong> (standard&nbsp;matrices)</li> <li><strong>Exiv2</strong>: Andreas&nbsp;Hugel</li> <li><strong>Lensfun</strong>: Andrew Zabolotny, Sebastian&nbsp;Kraft</li> </ul> <p>Commits on top of 1.0.4 proudly brought to you&nbsp;by:</p> <p>Pascal de Bruijn, Tobias Ellinghaus, Simon Spannagel, johannes hanika, Christian Tellefsen, Richard Wonka, Olivier Tribout, Ger Siemerink, Ulrich Pegelow, Petr Styblo, madanyang, Jesper Pedersen, James C. McPherson, Boucman, Bastien&nbsp;Bouclet.</p> <p>Thanks for playing&nbsp;everyone!</p> <p>All the rest: hope you enjoy the release and bear with us while we prepare git master for 1.1&nbsp;&#8230;</p><img src="https://www.darktable.org/2012/07/darktable-1-0-5-released/ladybugs.jpg" class="hidden-lede">joTue, 24 Jul 2012 09:34:47 +0000tag:www.darktable.org,2012-07-24:2012/07/darktable-1-0-5-released/announcementdarktable releaseSome enhancements to conditional blendinghttps://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/<p>Conditional blending, also known as &#8220;blend if&#8221;, is a feature which is currently under development in our master branch. A general description of the idea together with some examples can be found <a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/">here</a>. In short, conditional blending allows you to limit the effect of a module to certain pixels of an image, determined by their color coordinates. For modules in Lab space, you can restrict the effect of a module depending on the pixel’s L, a, and b value. For modules in <span class="caps">RGB</span> space, you can restrict the effect of a module depending on color channels Red, Green, and Blue plus a Gray&nbsp;value.</p> <p>Today I’d like to describe a few recent extensions to conditional blending. All of them have the aim to give users better control to which of the pixels a module should be applied and to which not. These extensions can be found in branch <em>blendif</em> and should soon be merged into&nbsp;master.</p> <h1>New channels with chroma and hue&nbsp;characteristics</h1> <p>Although images normally only have three real data channels (L, a, b and R, G, B, respectively) we can define additional virtual channels and use them to better select a range of pixels. These virtual channels are calculated on a per-pixel basis only for the purpose of conditional blending. The already existing Gray channel in conditional blending of <span class="caps">RGB</span> modules is an&nbsp;example.</p> <p>Modules in Lab color space now got two additional channel tabs &#8220;C&#8221; and &#8220;h&#8221;. They stand for chroma (saturation) and hue in the <em>LCh</em> color space&nbsp;– a color space closely linked to Lab. Chroma C goes from 0 (unsaturated) to 100 (maximum saturation). In real images you will hardly find pixels with a C value above 50. Hue is a parameter which describes a color circle with all possible colors at a given lightness and saturation. We express it in degrees from 0 to 360. The gradient of the slider will tell you where a certain color is to be found. You can also use the color picker to take up chroma and hue from any spot of your&nbsp;image.</p> <p>Modules in <span class="caps">RGB</span> color space received three additional tabs &#8220;hue&#8221;, &#8220;chroma&#8221; and &#8220;value&#8221;, coming from an <span class="caps">HSL</span> color description. H (= hue) goes from 0 to 360 degrees and S (= chrom/saturation) from 0 to 100. Please note that measures for hue and chroma in <em><span class="caps">HSL</span></em> are different from the ones in LCh. A high value for S (close to 100) is not uncommon for <span class="caps">RGB</span> images; that’s different from parameter C in Lab modules. Channel &#8220;value&#8221; is just another parameter for lightness&nbsp;– it’s added here for convenience&nbsp;reasons.</p> <h1>New option to toggle&nbsp;polarity</h1> <p>In the previous implementation of conditional blending it was easy to select a (narrow) range of values where a module should be blended in, while all other pixels are being left alone. However, it was difficult or impossible to do the opposite&nbsp;– define a band of values, where a module should not be blended&nbsp;in.</p> <p>Now you can change the polarity of each slider by an additional toggle button. A positive polarity is equivalent to the already known behavior. Switching to a negative polarity allows you to define a band of values where a module is not blended; all pixels which do not fall into this range can take effect from the&nbsp;module.</p> <h1>A poppy&nbsp;blossom</h1> <p>Let’s go for an example. I took this photo of a poppy blossom because I liked the strong color contrast effect. As the flower grows in front of a pile sun-bleached dead wood, it receives a strong accent to its intense, lively&nbsp;red.</p> <p><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/IMG_4287x_0001.jpg"><img alt="IMG_4287x_0001" src="IMG_4287x_0001_thumb.jpg" /></a></span></p> <p>On the problematic side remains a somewhat low contrast within the blossom. The petals appear a bit like a red blob, a typical problem of unprocessed raw images. The droplets, which the last shower of rain has left behind, are hardly discernible. Admittedly the blossom is a bit soft too, probably due to sloppy focusing on my&nbsp;side.</p> <p><span class="caps">OK</span>, there are a few modules in darktable which we could take to improve the image. darktable’s swiss knife <em>equalizer</em> comes to mind, or module <em>highpass</em> combined with a suited blend&nbsp;mode.</p> <p>I took highpass with blend mode <em>soft light</em> in this case as it will increase contrast and sharpness, easily controlled with only two sliders. As described, I want to apply the module only to the red petals of the poppy flower; that’s why I need conditional&nbsp;blending.</p> <p>Module highpass works in Lab mode and it would certainly be possible to select the right part of the images with the L, a, and b sliders. However, this is much easier done with channels C and h. Just take the color picker to identify the hue of the blossom and select a narrow band around this hue value. Then in addition limit the effect in chroma channel to the more saturated&nbsp;colors.</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/blendif2-1.jpeg"><img alt="blendif2-1" src="blendif2-1_thumb.jpeg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/blendif2-2.jpeg"><img alt="blendif2-2" src="blendif2-2_thumb.jpeg" /></a></span></span> </span></p> <p>With the recently added <em>display mask</em> option, it’s now very easy to see what gets blended and what not. The yellow color shows you that we really only selected the petals of the poppy, everything else remains&nbsp;unaffected.</p> <p><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/blendif2-3.jpeg"><img alt="blendif2-3" src="blendif2-3_thumb.jpeg" /></a></span></p> <p>Here is the resulting image with some additional contrast&nbsp;enhancement.</p> <p><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/IMG_4287x_0002.jpg"><img alt="IMG_4287x_0002" src="IMG_4287x_0002_thumb.jpg" /></a></span></p> <p>Now let’s assume we would want to turn this natural almost-colorkey image into a full colorkey (just for demonstration purposes; personally I do not like colorkey in most&nbsp;cases).</p> <p>If we want to gray out all parts of the image except of the petals, we can use our monochrome module and use blendif’s new polarity option. Again we define a narrow band around the red hue of the blossom but this time with inverted&nbsp;polarity.</p> <p><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/blendif2-4.jpeg"><img alt="blendif2-4" src="blendif2-4_thumb.jpeg" /></a></span></p> <p>Here is the result of our&nbsp;exercise:</p> <p><span><a href="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/IMG_4287x_0003.jpg"><img alt="IMG_4287x_0003" src="IMG_4287x_0003_thumb.jpg" /></a></span></p> <p>When exporting images with highly saturated colors like this&nbsp;– where colors are relevant for the message of the image&nbsp;– you might experience some disappointment. If you have a wide gamut monitor like me and then export into a <span class="caps">JPEG</span> in sRGB color space, part of the color variation you achieved may get lost again. That’s because saturated colors may be well within the gamut of your monitor, but are already out of gamut for sRGB. Choosing AdobeRGB as output profile combined with a different output intent (like <em>relative colorimetric</em> instead of perceptual) in darktable’s <em>output color</em> module can help to improve the&nbsp;situation.</p><img src="https://www.darktable.org/2012/07/some-enhancements-to-conditional-blending/IMG_4287x_0004_wide.jpg" class="hidden-lede">upegelowWed, 11 Jul 2012 17:08:50 +0000tag:www.darktable.org,2012-07-11:2012/07/some-enhancements-to-conditional-blending/blogcommunitydevelopmentblendingcolorconditional blendingdarktableLabmonochromesaturationmagenta highlightshttps://www.darktable.org/2012/07/magenta-highlights/<p>false color highlights seem to be an issue frequently, so here&#8217;s some quick faq about it. alexandre, please excuse all the outward references&nbsp;;)</p> <h2>why are my highlights&nbsp;magenta?</h2> <p>that&#8217;s how the sensor works. it collects a couple of photons, at some point it fills up and rejects to deliver any more useful information past this point. unfortunately that doesn&#8217;t happen at the same time for all color&nbsp;channels.</p> <h2>how does the sensor&nbsp;work?</h2> <p>usually digital cameras come with a <a href="https://en.wikipedia.org/wiki/Color_filter_array">color filter array (<span class="caps">CFA</span>)</a> of <a href="https://en.wikipedia.org/wiki/Filter_(optics)">absorptive filters</a> in front of an array of <a href="https://en.wikipedia.org/wiki/Charge-coupled_device"><span class="caps">CCD</span></a> or <a href="https://en.wikipedia.org/wiki/CMOS_sensor"><span class="caps">CMOS</span></a> sensor which collect electrons proportional to the incoming photons according to the <a href="https://en.wikipedia.org/wiki/Photoelectric_effect">photoelectric effect</a>.</p> <p>most cameras use some simple variation of an <span class="caps">RGGB</span> layout in 2x2 blocks for these color filters, and we must take care to reconstruct three color channels per pixel out of these one different color per pixel formats (<a href="https://en.wikipedia.org/wiki/Demosaicing">demosaicing</a>). some manufacturers choose to give their cameras more esoteric&nbsp;layouts.</p> <h2>so that&#8217;s why my foveon/fuji camera is not&nbsp;supported!</h2> <p>yes.</p> <h2>what about black/white digital&nbsp;cameras?</h2> <p>these don&#8217;t have a <span class="caps">CFA</span> and can thus collect more photons (none are absorbed) and don&#8217;t need demosaicing. should result in more sharpness and higher useful&nbsp;iso.</p> <p>however, some of the rest here still applies to these models too, if you whitebalance to compensate for&nbsp;illumination.</p> <h2>back to highlights&nbsp;though</h2> <p>once a photon comes past the absorptive filter, it is converted to an electron and stored until it is read out to form the image. maybe your chip has a full well capacity of 90000 electrons. after that it overflows and still returns 90000 (it&#8217;s saturated, your value&nbsp;clips).</p> <p>this is in turn converted to a value between 0 and 4096 (say, if your camera supports 12 bits. note that this is also the reason why setting your camera to high iso makes sense as compared to just cranking up exposure in post. you lose this precision on-chip). then you <a href="https://en.wikipedia.org/wiki/Color_balance">whitebalance</a> your image. this is just a multiplication with a scalar value per channel, and meant to compensate both the different absorption in the color filters, and the colorful illumination. this can make a photograph of a grey patch look grey in your image&nbsp;again.</p> <p>typically your whitebalance coefficients will be something like (2.0, 1.0, 1.4), normalized to 1.0 for green. this means that an overexposed picture of the sun will fill up all your sensors and result in a value of (2.0, 1.0, 1.4) in your final image, which is&nbsp;magenta.</p> <h2>wait, doesn&#8217;t that confuse&nbsp;demosaicing?</h2> <p>yes, at high contrast edges (mountain ridge against overexposed sky). this typically results in <a href="https://en.wikipedia.org/wiki/Purple_fringing">purple fringing</a>.</p> <h2>what can we do about&nbsp;it?</h2> <p>the obvious thing to do is to clip all three values at the minimum clipping threshold (the channel that fills up quickest after white balancing dictates what value will give you fully saturated white). for instance whitebalance coefficients (2.0, 1.0, 1.4) will clip at 1.0 (green) and thus potentially waste half the photons collected for the red&nbsp;channel.</p> <p>there&#8217;s also the old ufraw-style trick to `reconstruct&#8217; some contrast in Lab color space. this works by converting the unclipped (false color) pixel to LCh, and discarding the saturation (C) and hue (h). actually we let you choose what to discard and by what&nbsp;percentage.</p> <p>find these two options in the `highlight reconstruction&#8217; plugin in the basic&nbsp;group.</p> <h2>how is hdr&nbsp;different</h2> <p>the clipping threshold is determined during hdr construction <a href="https://en.wikipedia.org/wiki/Bracketing">(merging a couple of exposures together)</a>, and bracketing might expose issues with a slightly off value much more&nbsp;gravely.</p> <h2>where is the clipping&nbsp;threshold</h2> <p>in theory it only depends on your sensor&#8217;s full well capacity. choose this value right once and you&#8217;re done. you would think. these values are in rawspeeds cameras.xml file for example, and very carefully chosen and most of time they&#8217;re right. it turns out that some of these might be conservative (clipping too late) to preserve more information. this is a good thing and will give you most data out of your camera. but apparently there are a couple of edge-case pictures that will show the magenta problem&nbsp;nevertheless.</p> <p>this is especially an issue for some hdr shots and in case the basecurve is switched off (which will usually push values closer to white by making them all brighter). so, whatever, in current git you now have a slider for this value. keep in mind you should never need to touch this (highlight reconstruction/clipping threshold, basic&nbsp;group).</p><img src="https://www.darktable.org/2012/07/magenta-highlights/highlights.jpg" class="hidden-lede">joThu, 05 Jul 2012 15:51:08 +0000tag:www.darktable.org,2012-07-05:2012/07/magenta-highlights/blogExporting images on the command linehttps://www.darktable.org/2012/07/exporting-images-on-the-command-line/<p>Recent builds from git will bring you a new executable, “darktable-cli”. With this tool you can export images using the processing power of darktable on the command&nbsp;line.</p> <p>The simplest way to call the utility&nbsp;is</p> <div class="highlight"><pre>darktable-cli &lt;input&gt; &lt;output&gt; </pre></div> <p>This will take the <em>input</em> image, look for the <span class="caps">XMP</span> file associated with it, process it at maximal resolution and write the output to <em>output</em>, trying to guess the output format from the output filename. You can also explicitly give a <span class="caps">XMP</span> file by&nbsp;running</p> <div class="highlight"><pre>darktable-cli &lt;input&gt; &lt;xmp&gt; &lt;output&gt; </pre></div> <p>When a scaled down output is needed you can overwrite the default 0x0 size by adding one or both&nbsp;of</p> <div class="highlight"><pre>--width &lt;max x size&gt; --height &lt;max y size&gt; </pre></div> <p>These settings work the same as in the darktable gui. There is also a&nbsp;setting</p> <div class="highlight"><pre>--bpp &lt;max bitdepth&gt; </pre></div> <p>which is not working at the time of writing this, so currently the highest possible bit depth for the chosen output format is&nbsp;used.</p> <p>All of this is subject to change so expect more options to be added in the future. To be on the safe side darktable-cli will not overwrite files but just terminate when <em>output</em> already&nbsp;exists.</p> <p>As always, play with it, use it, break it, and report back. Preferably on the mailing lists or in <span class="caps">IRC</span>.</p><img src="https://www.darktable.org/2012/07/exporting-images-on-the-command-line/dtcli_wide.jpg" class="hidden-lede">houzThu, 05 Jul 2012 14:13:10 +0000tag:www.darktable.org,2012-07-05:2012/07/exporting-images-on-the-command-line/blogdevelopmentFixed: darktable crashing Unityhttps://www.darktable.org/2012/07/fixed-darktable-crashing-unity/<p>Some Ubuntu 12.04 (Precise) users who use Ubuntu&#8217;s default Unity desktop environment may have noticed that it&#8217;s commonplace for Unity to crash when closing darktable. It so happens that darktable is exposing a <a href="https://bugs.launchpad.net/ubuntu/+source/unity/+bug/851982">bug in Unity</a>, which got fixed upstream with a <a href="https://code.launchpad.net/~andyrock/unity/fix-851982/+merge/112440/+preview-diff/+files/preview.diff">one-liner patch</a>.</p> <p>The above fix will be available in the next major update of Unity (5.14), but in the meanwhile I cherry picked the relevant patch to the current released version of Unity (5.12). The fixed version of Unity is available from a special temporary <span class="caps">PPA</span>:</p> <p><a href="https://launchpad.net/~pmjdebruijn/+archive/unity-testing">https://launchpad.net/~pmjdebruijn/+archive/unity-testing</a></p><img src="https://www.darktable.org/2012/07/fixed-darktable-crashing-unity/SAM_1890.jpg" class="hidden-lede">pmjdebruijnSun, 01 Jul 2012 13:45:16 +0000tag:www.darktable.org,2012-07-01:2012/07/fixed-darktable-crashing-unity/announcementubuntuunitydarktable 1.0.4 releasedhttps://www.darktable.org/2012/06/darktable-1-0-4-released/<p>Pascal was so kind to tend to a stable branch, the next incarnation of which we have the good fortune to&nbsp;announce.</p> <p>The changes over darktable 1.0.3&nbsp;are:</p> <ul> <li>More robust OpenMP compiler detection&nbsp;code</li> <li>New warming/cooling filter presets for color correction&nbsp;plugin</li> <li>Lighttable thumbnails should be slightly faster and&nbsp;sharper</li> <li>Correctly restore panels when using&nbsp;Tab.</li> <li>Checking if an export target directly is&nbsp;read-only</li> <li>Writing of hierarchical tags in our .xmp has been&nbsp;improved</li> <li>Don&#8217;t list system display profile for anything but the display profile&nbsp;selection</li> <li>We disabled scrollwheel scrolling in darkroom mode as it&nbsp;sometimes</li> <li>conflicts with widget&nbsp;behavior</li> <li>Lighttable thumbnails are now color managed with some caveats&nbsp;(1)</li> <li> <p>Improved color&nbsp;rendition:</p> <ul> <li>Nikon&nbsp;D800</li> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">III</span></li> </ul> </li> <li> <p>White balance&nbsp;presets:</p> <ul> <li>Canon <span class="caps">EOS</span> 5D Mark <span class="caps">III</span></li> <li>Canon <span class="caps">EOS</span> 7D&nbsp;(updated)</li> <li>Olympus&nbsp;E-M5</li> <li>Samsung <span class="caps">NX100</span>&nbsp;(updated)</li> <li>Olympus E-<span class="caps">PL1</span>&nbsp;(updated)</li> <li>Olympus E-<span class="caps">PL2</span>&nbsp;(updated)</li> <li>Olympus E-<span class="caps">PL3</span>&nbsp;(updated)</li> </ul> </li> </ul> <p>(1) Lighttable color management&nbsp;caveats:</p> <p>Our previous releases didn&#8217;t have any color management in lighttable mode (and the filmstrip), in this release we have a quick-fix implementation of color management for lighttable mode. For 1.0.4, newly imported files use the Preview <span class="caps">JPEG</span> by default for the thumbnail, in that case it&#8217;s still not color managed. After entering darkroom mode (after which the thumbnail is regenerated in case you changed the history stack) it will be color managed. Without changed history stack the thumbnail will always be the embedded <span class="caps">JPEG</span>. If you need lighttable mode to be color managed all the time you can disable reading of the Preview JPEGs in our Preferences dialog &#8220;don&#8217;t use embedded preview jpeg but half-size raw&#8221;, do note that this will significantly slow down thumbnail generation and consequently will slow down new imports. To have darktable regenerate all old previews (in a color managed fashion) you can delete the <code>~/.cache/darktable/mipmaps*</code> files.</p> <p>And the log tells we have to thank the following people for making this release&nbsp;possible:</p> <p>Pascal de Bruijn, johannes hanika, Tobias Ellinghaus, Raphael Manfredi, Ulrich Pegelow, James C. McPherson, parafin, Olivier Tribout, Moritz Lipp, Joao Trindade, Christian&nbsp;Tellefsen</p> <p>You can grab the new source package from&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.4.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.4.tar.gz/download</a></p> <p><span class="caps">PPA</span> updates are available&nbsp;already.</p> <p>The Solaris 11 package is available&nbsp;from</p> <p><a href="http://www.jmcp.homeunix.com/Packages/Darktable.1.0.4.p5p.gz">http://www.jmcp.homeunix.com/Packages/Darktable.1.0.4.p5p.gz</a></p> <p>Enjoy the new&nbsp;release.</p><img src="https://www.darktable.org/2012/06/darktable-1-0-4-released/20110428_IMG_3966_export.jpg" class="hidden-lede">smnMon, 04 Jun 2012 00:13:47 +0000tag:www.darktable.org,2012-06-04:2012/06/darktable-1-0-4-released/announcementdarktable releaseCommunity contributions to the projecthttps://www.darktable.org/2012/06/community-contributions-to-the-project/<p>We heard quite some voices from users requesting better possibilities to contribute to the project. Here they&nbsp;are.</p> <p>In our dev meeting (or if you had a closer look: even before) we decided to ditch the old bug tracker in favor for a new one: Redmine, hosted by PolarFox, just on the same server as our website lives. This comes with some long-wanted features&nbsp;– and more liberty in&nbsp;configuration.</p> <p>Two of the new features might be particularly interesting for&nbsp;you:</p> <ol> <li> <p>We now have a dedicated <strong>User&#8217;s Wiki</strong> for tutorials, guides and detailed descriptions of modules. The wiki lives now at <a href="https://darktable.org/redmine/projects/users/wiki">https://darktable.org/redmine/projects/users/wiki</a> but will probably change soon to a shorter <span class="caps">URL</span>, I&#8217;ll keep you up to&nbsp;date.</p> <p>Feel free to edit, add and move stuff just as you like. Some users (mostly asdkant) already started a users-driven &#8220;documentation&#8221; of darktable&#8217;s modules. The efforts have been ported as well and you&#8217;ll find them&nbsp;there.</p> </li> <li> <p>Quite some users requested a <strong>forum for darktable</strong>. This is quite a delicate topic for us. Let me elaborate on this a bit more in&nbsp;detail:</p> </li> </ol> <p>darktable is a spare time project&nbsp;– completely. So no one of us is paid even for a little time he/she is spending to develop and improve darktable. But since it&#8217;s fun, we do it. On the other hand this means we invest quite some share of our spare time to write code. To stay in contact with the others we prefer the mailing list and <span class="caps">IRC</span>. We don&#8217;t have time to run and maintain a forum beside those communication channels&nbsp;– doing this would mean: no time for developing at all, and no fun for the developers (since coding is fun, you know&nbsp;&#8230;)</p> <p>Having said&nbsp;this:</p> <p>We understand the user&#8217;s need for a place to hang out and discuss usage and problems with darktable&nbsp;– and we understand that this place might look different, just as a forum. So we decided to provide forums to you but without any &#8220;support&#8221; from our&nbsp;side.</p> <ul> <li>Don&#8217;t expect us to hang out there all the&nbsp;time.</li> <li>Don&#8217;t expect us to read through the threads and help you with&nbsp;problems.</li> </ul> <p>For these things we have the tracker, the mailing list and <span class="caps">IRC</span>.</p> <p>So what we need is users that are willed to invest time, to moderate the forums, to create a structure that suits the needs. Anyone stands up? Contact me or write to the mailing lists. The forum can be found in Redmine: <a href="https://darktable.org/redmine/projects/users/boards">https://darktable.org/redmine/projects/users/boards</a>. As you can see: we didn&#8217;t set up any structure of the boards&nbsp;– it&#8217;s up to you &#8230;&nbsp;:)</p> <p>So that&#8217;s&nbsp;it.</p> <p>We hope this will be a further step to build an active community around darktable. Of course we&#8217;re always open to discuss your ideas and needs with&nbsp;you.</p><img src="https://www.darktable.org/2012/06/community-contributions-to-the-project/IMG_6030_export.jpg" class="hidden-lede">smnSat, 02 Jun 2012 15:57:15 +0000tag:www.darktable.org,2012-06-02:2012/06/community-contributions-to-the-project/blogcommunitycommunitycontributionforumswikiNew screencasts for darktable 1.0https://www.darktable.org/2012/06/new-screencasts-for-darktable-1-0/<p>Pascal recorded some new screencasts using the latest stable version of darktable,&nbsp;1.0.4.</p> <p>The first is (one can start speaking of &#8220;as usual&#8221;) dedicated to the changes and new features of darktable 1.0, giving an overview over improvements, new <span class="caps">UI</span> elements and workflow&nbsp;changes.</p> <p>The second one is a bit more general. Pascal elaborates on raw file archiving and backups, about the pros and cons of <span class="caps">DNG</span> and Vendor formats and whether you want to embed your metadata or&nbsp;not.</p> <p>Find them either on our <a href="/resources/#screencast-tutorials">resource page</a> or on <a href="https://encrypted.pcode.nl/blog/2012/06/02/darktable-1-0-screencast-library-addition/">Pascal&#8217;s website</a>.</p> <p>Enjoy watching them, thanks to&nbsp;Pascal!</p><img src="https://www.darktable.org/2012/06/new-screencasts-for-darktable-1-0/Bildschirmfoto-vom-2012-06-02-182519.png" class="hidden-lede">smnSat, 02 Jun 2012 15:41:48 +0000tag:www.darktable.org,2012-06-02:2012/06/new-screencasts-for-darktable-1-0/further readingUpcoming features: New interpolation modes and better resizehttps://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/<p>darktable is all about providing you the best tools in order to get the most out of your photographies. This blog entry will explain how an existing feature can help you get more detailed exports and it will try to give you a glimpse of what is cooking in an unscheduled but upcoming version of darktable for even better detail&nbsp;preservation.</p> <h1>Make sure to enable High Quality Resampling for exporting your&nbsp;photographies</h1> <p>In darktable, the pixel pipeline is responsible for processing your photography from demosaic up to the point it is passed over to the output subsystem (saving in tiff,&nbsp;jpeg&#8230;).</p> <p>The option <em>“Do high quality resampling &#8230;”</em>, available in the core preferences panel, controls when the photo is resized to its final dimensions during the export&nbsp;process.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/dt-uipref-commented.png"><img alt="Preferences panel showing HQ resampling and new interpolators" src="dt-uipref-commented_thumb.png" /></a></span> <figcaption>Preferences panel showing <span class="caps">HQ</span> resampling and new interpolators</figcaption></figure> <p>For a long time, the default setting was to resize early in the pixel pipeline in order to lower both memory requirements and processing time. This may seem appealing but it has a serious drawback; an early resize throws away lot of precious detail that modules could use at your&nbsp;advantage.</p> <p>When <em>“Do high quality resampling &#8230;”</em> is enabled, darktable processes the image as its full resolution until the very end of the pixel pipeline, and only then, resizes it. In this mode, detail is preserved but more memory and <span class="caps">CPU</span> power is required to process the&nbsp;photography.</p> <h1>Beware arbitrary angle rotation and Lens distortion correction in&nbsp;1.0.x</h1> <p>Some users complain about some observable blurriness when they use the <em>lens distortion correction</em> module or an arbitrary rotation in the <em>crop/rotate</em>&nbsp;module.</p> <p>These two modules work the same way. They iterate over the output sampling grid and for an output pixel (x,y), they compute its corresponding pixel (x&#8217;, y&#8217;) in the original image. So far so good, but the computed (x&#8217;, y&#8217;) coordinates are rarely aligned on the original photo sampling grid (read x&#8217; and y&#8217; aren&#8217;t integers anymore); It is then necessary to interpolate the pixel value using its&nbsp;neighbors.</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/dt-rotation-grid.png"><img alt="Interpolation input pixels" src="dt-rotation-grid_thumb.png" /></a></span> <figcaption>Interpolation input pixels</figcaption></figure> <p>For doing so, darktable 1.0.x used to implement bilinear interpolation. The bilinear interpolation considers only the four pixels surrounding the pixel at (x&#8217;, y&#8217;) position. This algorithm is fast, and good enough for lot of&nbsp;applications.</p> <p>However, bilinear interpolation falls short when looking at the detail preservation it&nbsp;achieves.</p> <h2>New interpolation modes to the&nbsp;rescue</h2> <p>The interpolation problem, which is tightly related to the sampling theory is a well known and important part of the Digital Signal Processing theory. An ideal solution for our interpolation blurriness exists: the sin(t)/t function. However, the fact that it has an infinite support makes it impossible to transpose into a real applicable&nbsp;algorithm.</p> <p>But some smart men already detailed practical solutions that try to approximate the ideal function. Two of these solutions are named bicubic interpolation and lanczos&nbsp;interpolation.</p> <p>See their 1D&nbsp;graph:</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/kernels.png"><img alt="Interpolation functions" src="kernels_thumb.png" /></a></span> <figcaption>Interpolation functions</figcaption></figure> <p>As you can see on the graphics, the bicubic and lanczos family of interpolation functions have a greater kernel support. In 1D sampling, the kernel size is only 2 samples large for the bilinear function, 4 pixels large for the bicubic and the lanczos2 functions, and finally reaches 6 samples large for the lanczos3 function. You can see the 2D kernel support size in the figure explaining the rotation&nbsp;module.</p> <p>All that extra samples used for a single output sample make the new interpolation filters keep more details and be more&nbsp;accurate.</p> <h1>A real High Quality&nbsp;Resampling</h1> <p>By now, you know that the hq export option helps getting sharper exports, you also know that new interpolation modes will help you when using arbitrary rotations and lens distortion correction. But what if I told you that the very same hq export resampling I praised so much, isn&#8217;t really hq at&nbsp;all!</p> <p>A downsampling algorithm ensures no moiré/aliasing occurs during its processing using what is called a lowpass filter function. darktable 1.0.x uses the box filter function. As you might have guessed, better functions&nbsp;exist.</p> <p>Hopefully, all interpolation functions detailed in this blog entry are also lowpass filter functions. And moreover, they perform better than the box filter. The photography resampling will be more accurate, and keep more&nbsp;detail.</p> <p>As a conclusion see the results for a sensor test chart where arbitrary rotation/lens distortion correction is applied and the export is done using a 512 pixel&nbsp;width:</p> <figure role="group"> <span><a href="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/dt-interpolation-results-testchart.png"><img alt="Interpolation results" src="dt-interpolation-results-testchart_thumb.png" /></a></span> <figcaption>Interpolation results&nbsp;– See fullsize version for better review</figcaption></figure><img src="https://www.darktable.org/2012/06/upcoming-features-new-interpolation-modes-and-better-resize/dt-interpolation-results-testchart.png" class="hidden-lede">edgomezSat, 02 Jun 2012 07:34:51 +0000tag:www.darktable.org,2012-06-02:2012/06/upcoming-features-new-interpolation-modes-and-better-resize/blogdevelopmentupcoming featurebicubicbilinearinterpolationlanczoslens correctionrotationMoving the git repo to github [done]https://www.darktable.org/2012/05/moving-the-git-repo-to-github/<p><strong>Update: </strong>the <a href="https://github.com/darktable-org/darktable">git repository</a> officially resides in github&nbsp;now.</p> <p>Today we are moving our git repo from sf.net to github, as it was agreed in the <a href="https://darktable.org/redmine/projects/darktable/wiki/Dev_Meeting_Agenda">developer meeting</a> that took place yesterday. This will happen <strong>today 22:00&nbsp;– 23:00 <span class="caps">CEST</span></strong></p> <p><em>What should I do&nbsp;now?</em></p> <p>Depends on the role you play in the&nbsp;project.</p> <ol> <li>You have commit rights into current <a href="https://sf.net/">sf.net</a> repository: please open an account in github if you don&#8217;t have any and make me know it. I will give you those permits there, but do not push there for now, your changed will be&nbsp;lost.</li> <li>You don&#8217;t have commit rights but regularly contribute back patches to darktable: please consider doing a <a href="https://help.github.com/articles/fork-a-repo/">fork</a> of our repo in github and make a branch there for your patches. Later on make a <a href="https://help.github.com/articles/about-pull-requests/">pull request</a> to let us know that we should pull from your&nbsp;branch.</li> <li>If you make some patches, but not in a regular way, you can also benefit of having your own fork &#8230; it will allow to publish your changes, access them from remote places, and have a backup place for your repo in case of&nbsp;disaster.</li> <li>You only track the repo. Wait until the switch is made and follow the instructions in this&nbsp;post.</li> </ol> <p><em>What is going to happen just before the&nbsp;switch?</em></p> <p>We are going to disable push rights of the people in <a href="https://sf.net/">sf.net</a>, so nothing is pushed there, and we are going to make a mirror to github, enabling in that moment the rights to push to&nbsp;github.</p> <p><em>What should I do when the switch is&nbsp;made?</em></p> <p>When things are in place, you have to set your repo to point to the right place. To do that the command is (I suppose that origin is pointing to <a href="https://sf.net/">sf.net</a>, if not, change the&nbsp;name):</p> <p>git remote set-url origin&nbsp;git@github.com:darktable-org/darktable.git</p> <p>or</p> <p>git remote set-url origin git://<a href="https://github.com/darktable-org/darktable.git">github.com/darktable-org/darktable.git</a></p> <p>Depending if you have a github account or not (and if you have commit rights). You can also use https to read and write to the repo&nbsp;using</p> <p><a href="https://USERNAME@github.com/darktable-org/darktable.git">https://<span class="caps">USERNAME</span>@github.com/darktable-org/darktable.git</a></p> <p>Now, calling <code>git fetch</code> or <code>git pull</code> should connect to the repository held in&nbsp;GitHub.</p> <p><em>Will be <a href="https://sf.net/">sf.net</a> repo&nbsp;deleted?</em></p> <p>A hook will be set so it pushes changes for a time to <a href="https://sf.net/">sf.net</a> repo, while the transition is completed. After several months, it will be removed, but by default do not count that repo as being canonical any more.I am sure this change will engage more people in sending patches and contributing code to darktable. And we need your time, skills, and&nbsp;ideas.</p><img src="https://www.darktable.org/2012/05/moving-the-git-repo-to-github/IMG_5841_export_01.jpg" class="hidden-lede">jcsogoThu, 31 May 2012 13:24:17 +0000tag:www.darktable.org,2012-05-31:2012/05/moving-the-git-repo-to-github/announcementinfrastructuredarktabledownloadforkgitgithubmoveremoterepositoryLive viewhttps://www.darktable.org/2012/05/live-view/<p><span><a href="https://www.darktable.org/2012/05/live-view/Bildschirmphoto116.png"><img alt="screen shot of live view in darktable" src="Bildschirmphoto116_thumb.png" /></a></span></p> <p>For quite some time darktable supports tethering your camera. What was missing all the time was live view. This is about to change though. If you use master (and have a camera supporting it) you can now either use the eye button in the “camera settings” module or hit ‘v’ on your keyboard to start live view from within tethering mode. Since the preview is scaled to fit your screen it might be a good idea to hide some of the side panels. If you are using a Canon <span class="caps">EOS</span> (I only tested this with my 40D) you can also use your middle mouse button to zoom into the preview. Another click brings you back to regular live&nbsp;view.</p> <p>There are a few things left to&nbsp;do:</p> <ul> <li>When stopping life view/leaving tethered mode the mirror of the camera doesn&#8217;t return to its normal&nbsp;position</li> <li>The zoomed preview doesn&#8217;t look nice when the side panels are expanded. I didn&#8217;t want to scale this&nbsp;down.</li> <li>Zooming doesn&#8217;t work for non-Canon&nbsp;cameras.</li> <li>Sometimes turning off live view doesn&#8217;t&nbsp;work.</li> <li>At least with my camera the release button no longer works when doing live view. I have no idea if there is anything we can do about it. Using the “capture image(s)” button in darktable works&nbsp;though.</li> <li>Possibly some other unnoticed&nbsp;bugs.</li> </ul> <p>So, feel free to play around with it, try to break it and report back. And keep in mind that this will suck your batteries dry really fast&nbsp;&#8230;</p> <p>End of&nbsp;transmission</p> <p><em>Update</em>: There is a video of the current state in this <a href="https://tatica.org/2012/06/21/darktable-liveview/">blog post</a>.</p><img src="https://www.darktable.org/2012/05/live-view/Bildschirmphoto116_wide.jpg" class="hidden-lede">houzWed, 30 May 2012 22:10:52 +0000tag:www.darktable.org,2012-05-30:2012/05/live-view/blogdevelopmentlive viewtetheringdarktable and Solaris: It Just Works™ … and there are some nifty benefits toohttps://www.darktable.org/2012/05/darktable-and-solaris-it-just-workstm-and-there-are-some-nifty-benefits-too/<p>I&#8217;m the self-appointed maintainer of darktable on <a href="https://www.oracle.com/us/products/servers-storage/solaris/solaris11/overview/index.html">Solaris</a>, which is a fairly easy gig to keep on top&nbsp;of.</p> <p>Here&#8217;s why that is so: darktable&#8217;s codebase is very portable. It&#8217;s not riddled with operating system-specific assumptions; it uses standard C (with some C++), and apart from the OpenCL support every prerequisite library is buildable on Solaris with gcc or g++. I&#8217;d prefer to use <a href="https://www.oracle.com/us/products/servers-storage/solaris/studio/overview/index.html">Oracle Solaris Studio</a> because that&#8217;s my work compiler, but there&#8217;s no great incentive for me to beat up on all the prerequisites to make them&nbsp;behave.</p> <p>To date I&#8217;ve contributed more by way of packaging metadata and bug updates than code changes and I like that. If you&#8217;re curious, I <a href="https://www.jmcpdotcom.com/blog/2012/03/14/how-to-build-a-package-archive-for-darktable/">wrote a blog post</a> about how to generate a new darktable package in the <a href="http://hub.opensolaris.org/bin/view/Project+pkg/">Solaris 11 <span class="caps">IPS</span></a>&nbsp;format.</p> <p>My plans for future Solaris involvement are chiefly around how we scale to larger memory configurations (specifically, the mipmap cache) and our database usage&nbsp;– with <a href="http://dtrace.org/blogs/about/#awards">DTrace</a> I can see very clearly how long queries and updates are taking in real time. While the command line debug flags are handy, they do slow down interactive operation with printing output to a&nbsp;file.</p> <p>For instance, on my system (dual-core/dual-processor 3.0GHz Opteron cpus with 32Gb ram, 512Mb nVidia framebuffer with a development build of a successor to Solaris 11), the gui response when I&#8217;m typing in a characters from a tag is (subjectively) awful. To get an idea of how awful, I added a new tag to a photo I took last night of the&nbsp;SuperMoon:</p> <div class="highlight"><pre>$ dtrace -n<span class="s1">&#39;pid517::dt_tag_new:entry{self-&gt;traced = 1; self-&gt;timestamp = vtimestamp; self-&gt;tag=copyinstr(arg0); self-&gt;tagid= (int)arg1;}&#39;</span> <span class="se">\</span> -n<span class="s1">&#39;pid517::dt_tag_new:return/self-&gt;traced/ {self-&gt;traced = 0; printf(&quot;dt_tag_new(%s, %d) took %d nsec&quot;, self-&gt;tag, self-&gt;tagid, vtimestamp - self-&gt;timestamp);}&#39;</span> dtrace: description <span class="s1">&#39;pid517::dt_tag_new:entry&#39;</span> matched <span class="m">1</span> probe dtrace: description <span class="s1">&#39;pid517::dt_tag_new:return&#39;</span> matched <span class="m">1</span> probe CPU ID FUNCTION:NAME <span class="m">3</span> <span class="m">167336</span> dt_tag_new:return dt_tag_new<span class="o">(</span>clouds, 134506508<span class="o">)</span> took <span class="m">9226022</span> nsec </pre></div> <p><span><a href="https://www.darktable.org/2012/05/darktable-and-solaris-it-just-workstm-and-there-are-some-nifty-benefits-too/supermoon-ss.jpg"><img alt="supermoon-ss" src="supermoon-ss_thumb.jpg" /></a></span></p> <p>That&#8217;s a fairly simple one-liner for a very simple use-case. It&#8217;s a bit of a worry that it took 9 milliseconds (thankyou to the commenters below for picking up my error with the order of magnitude) for that function to return. Now that I&#8217;ve got some hard data I can get started with drilling down into what the possible causes are, using the analytical troubleshooting system (an implementation of <a href="https://www.kepner-tregoe.com/TheKTWay/WorkingWithKT-TeachYou-PSDM.cfm">Kepner-Tregoe&#8217;s Problem Solving and Decision Management</a> methodology) which I was taught while working at (the late) Sun&nbsp;Microsystems.</p> <p>Looking through the code for dt_tag_new, I think we&#8217;ve got the possibility of some small optimisations. I&#8217;ve been trying out the idea of keeping the tags and tagxtag tables in memory and updating the on-disk versions using a SQLite3 trigger. However &#8230; more investigation is needed. I&#8217;ll be using Dtrace to help me see what works&nbsp;best.</p> <p>Solving little things like that is where I think I can bring most to this project, and where having Solaris as a tier-1 development platform becomes very&nbsp;useful.</p> <p>Self-promotion: when I blog about darktable, I post at <a href="https://www.jmcpdotcom.com/blog/category/darktable/">https://www.jmcpdotcom.com/blog/category/darktable/</a>.</p><img src="https://www.darktable.org/2012/05/darktable-and-solaris-it-just-workstm-and-there-are-some-nifty-benefits-too/supermoon-ss.jpg" class="hidden-lede">McBofhMon, 07 May 2012 23:57:08 +0000tag:www.darktable.org,2012-05-07:2012/05/darktable-and-solaris-it-just-workstm-and-there-are-some-nifty-benefits-too/blogDTraceportSolarisdarktable 1.0.3 releasedhttps://www.darktable.org/2012/04/darktable-1-0-1-released/<p>Pascal de Bruijn did some good work backporting some of the progress from git master to the 1.0 release. We packed that into a tarball, here it&nbsp;is:</p> <p><del><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.1.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.1.tar.gz/download</a></del></p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.3.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0.3.tar.gz/download</a></p> <p>(We had a problem packaging sources, so 1.0.3 is now on air. Please use it instead of&nbsp;1.0.1)</p> <p>As usual we have Ubuntu Packages are readily available on Pascal&#8217;s <span class="caps">PPA</span>, for Lucid, Natty, Oneiric and&nbsp;Precise:</p> <p><a href="https://launchpad.net/%7Epmjdebruijn/+archive/darktable-release">https://launchpad.net/~pmjdebruijn/+archive/darktable-release</a></p> <p><a href="https://launchpad.net/%7Epmjdebruijn/+archive/darktable-release-plus">https://launchpad.net/~pmjdebruijn/+archive/darktable-release-plus</a></p> <p>And these are the major&nbsp;changes:</p> <h2>Usability&nbsp;improvements:</h2> <ul> <li>Filmstrip centers on selected&nbsp;image</li> </ul> <h2>Behavioral&nbsp;changes:</h2> <ul> <li>Improved (hierarchical) tag export for flickr and&nbsp;friends</li> </ul> <h2>Camera&nbsp;support:</h2> <ul> <li>Improved Sony <span class="caps">NEX</span>-7&nbsp;support</li> <li>Initial camera support for Nikon D800 and Sony <span class="caps">SLT</span>-A57 (color rendition of these cameras might still be suboptimal due to the lack of a proper color matrix, and is subject to future&nbsp;change.)</li> <li>White balance updates for Canon <span class="caps">EOS</span> Rebel T3, Olympus E-5 <span class="amp">&amp;</span> Nikon&nbsp;D800</li> </ul> <h2>Platform&nbsp;support:</h2> <ul> <li>Fixes for&nbsp;FreeBSD</li> </ul> <h2>Various:</h2> <ul> <li>New subtle denoise preset for&nbsp;equalizer</li> <li>Various build&nbsp;fixes</li> <li>Numerous other&nbsp;fixes</li> </ul> <p>James C. McPherson provides a preliminary Solaris 11 package for this&nbsp;release:</p> <p><del><a href="http://www.jmcp.homeunix.com/Packages/dt-1.0.1-release.p5p.gz">http://www.jmcp.homeunix.com/Packages/dt-1.0.1-release.p5p.gz</a></del></p> <p><a href="http://www.jmcp.homeunix.com/Packages/dt-1.0.3-release.p5p.gz">http://www.jmcp.homeunix.com/Packages/dt-1.0.3-release.p5p.gz</a></p> <p>with associated verbiage&nbsp;at</p> <p><a href="http://www.jmcp.homeunix.com/blog/2012/04/29/darktable-1-0-3-ips-package-available/">http://www.jmcp.homeunix.com/blog/2012/04/29/darktable-1-0-3-ips-package-available/</a></p> <p>Thanks to everyone who contributed to this and especially to Pascal for taking care of this&nbsp;release.</p> <p>Enjoy&nbsp;it!</p><img src="https://www.darktable.org/2012/04/darktable-1-0-1-released/tiny.jpg" class="hidden-lede">smnSat, 28 Apr 2012 14:25:13 +0000tag:www.darktable.org,2012-04-28:2012/04/darktable-1-0-1-released/announcementdarktable releasedarktabledownloadopensolarisreleasetarballChanging server [update]https://www.darktable.org/2012/04/changing-server/<p>We are about to move our website to a new server. This will give us a performance boost (e.g. in terms of page loading speed) and might give us the chance to provide some more services in the&nbsp;future.</p> <p>Due to this the comments are closed as of now until everything is in place again. We hope everything runs smoothly&nbsp;– if not, be patient.&nbsp;:)</p> <p>&#8230;&nbsp;and I take this as an opportunity to thank PolarFox again for hosting darktable&#8217;s website and taking care of all technical server&nbsp;stuff!</p> <p>regards,&nbsp;Simon</p> <p>[update]</p> <p>As you may have encountered: we finally moved everything in place and fine-tuned it a bit. So now you should get these pages with almost light speed.&nbsp;Enjoy!</p><img src="https://www.darktable.org/2012/04/changing-server/highway.jpg" class="hidden-lede">smnSun, 15 Apr 2012 09:56:44 +0000tag:www.darktable.org,2012-04-15:2012/04/changing-server/announcementwebsitedarktable and Memoryhttps://www.darktable.org/2012/03/darktable-and-memory/<h2>or “How to drive away the evil&nbsp;skull”</h2> <p>At all times main memory was one of the most limited resources in computing. Although from 20 years to now the memory setup of a typical desktop <span class="caps">PC</span> has increased by a factor of several thousands (from less than a megabyte to a few gigabytes), we still need to consider how to efficiently handle that&nbsp;resource.</p> <p>The reason of course lies in the increasing demands of modern applications. Today it might be darktable which is the single most challenging software to hit the boundaries of your&nbsp;system.</p> <p>A simple calculation makes this clear. If you have a 20MPx image, <span class="caps">DT</span> for precision reasons will store this internally as a 4 × 32-bit floating point cell for each pixel. Each full image of this size will need about <span class="caps">300MB</span> of memory. As we want to process the image, we will at least need two buffers for each module&nbsp;– one for input and one for output. If we have a more complex module, its algorithm might additionally require several intermediate buffers of the same size. Without further optimization, anything between <span class="caps">600MB</span> and <span class="caps">3GB</span> would be needed only to store and process image data. On top we have darktable’s code segment, the code and data of all dynamically linked system libraries, and not to forget further buffers where darktable stores intermediate images for quick access during interactive work (mip map cache). All in all darktable would like to see a minimum of about <span class="caps">4GB</span> to run&nbsp;happily.</p> <h2>Total system&nbsp;memory</h2> <p>From what I said before, it is evident that your computer needs a sane memory setup to properly run darktable. We suggest that you have a least <span class="caps">4GB</span> of physical <span class="caps">RAM</span> plus 4 to <span class="caps">8GB</span> of additional swap space installed. The latter is required, so that your system can swap out temporarily unneeded data to disk in order to free physical <span class="caps">RAM</span>.</p> <p>Theoretically you could also run darktable with lower amounts of physical <span class="caps">RAM</span> and balance this with enough swap space. However, you should be prepared that your system could then heavily go into “thrashing” action, as all too many memory accesses require your system to read or write data pages from/to hard disk. We have positive reports that this functions well for several users, but it still might get extremely slow for others&nbsp;…</p> <h2>Available address&nbsp;space</h2> <p>Besides the total amount of system memory there is another limiting factor: the available address space of your hardware architecture. How much memory can be addressed by a process depends on the number of address bits your <span class="caps">CPU</span> offers. For a <span class="caps">CPU</span> with 32-bit address registers, this is 2^32 bytes, which makes a total of <span class="caps">4GB</span>. This is the absolute upper limit of memory that can be used by a process and it constitutes a tight situation for darktable as we have seen&nbsp;above.</p> <p>darktable’s escape route is called tiling. Instead of processing an image in one big chunk, we split the image into smaller parts for every processing step (module). This will still require one full input and output buffer, but intermediate buffers can be made small enough to have everything fit into the hardware&nbsp;limits.</p> <h2>Memory&nbsp;fragmentation</h2> <p>Unfortunately this is not the full story yet. There is an effect called memory fragmentation, which can and will hit software that needs to do extensive memory management. If such a program allocates 5 times <span class="caps">300MB</span> at a time and frees it again, that memory should normally be available for one big 1.<span class="caps">5GB</span> allocation afterwards. This however is often not the case. The system’s memory allocator might no longer see this area as one contiguous 1.<span class="caps">5GB</span> block but as a row of <span class="caps">300MB</span> areas. If there is no other free area of 1.<span class="caps">5GB</span> available, the allocation would fail. During a program run this mechanism will take away more and more of the larger memory blocks in favor of smaller ones. darktable 1.0 introduces a caching algorithm to address this problem. It pre-allocates blocks of memory and makes them available on&nbsp;request.</p> <h2>Further&nbsp;Limitations</h2> <p>And as if this were not challenging enough, there are further things that might limit your access to memory. On some older boards you need to activate <span class="caps">BIOS</span> option “memory remapping” in order to have all physically installed memory enabled. In addition if you are on a 32-bit <span class="caps">OS</span> you will probably need a kernel version that has “Physical Address Extension” (<span class="caps">PAE</span>) enabled. This is often but not always the case for Linux. Many distributions deliver different kernels, some with and some without <span class="caps">PAE</span> activated; you need to choose the right one. A typical sign that one of these topics are not setup correctly is system command free (1) not reporting all of your installed physical <span class="caps">RAM</span>; for example you have <span class="caps">4GB</span> on your board, but your kernel is only seeing <span class="caps">3GB</span> or less. You need to consult the manual of your <span class="caps">BIOS</span> and the information about your Linux variant for further&nbsp;help.</p> <h2>Setting up darktable on 32-bit&nbsp;systems</h2> <p>As we’ve seen 32-bit systems are difficult environments for darktable. Still many users are successfully running <span class="caps">DT</span> on them, if the basic requirements in terms of total system memory and the topics mentioned in the paragraphs above are addressed&nbsp;properly.</p> <p>There are several adjustment parameters to get it running. If you make a fresh install, <span class="caps">DT</span> will detect your system and set conservative values by default. However, if you upgrade <span class="caps">DT</span> from an older version (e.g. coming from 0.9.3 and going to 1.0), chances are you have unfavorable settings in your preferences. The consequences might be <span class="caps">DT</span> aborting due to allocation failures or&nbsp;– very typically&nbsp;– <span class="caps">DT</span> not being able to properly import a new film roll. As a frequent symptom you get skulls displayed instead of thumbs for many of your&nbsp;pictures.</p> <p><span><a href="https://www.darktable.org/2012/03/darktable-and-memory/skull.jpeg"><img alt="skull" src="skull_thumb.jpeg" /></a></span></p> <p>Take a minute to optimize the preference settings in this case. You will find them under “core options” in <span class="caps">DT</span>’s preference dialog. You might also find these parameters as configuration variables in $<span class="caps">HOME</span>/.config/darktable/darktablerc and edit them&nbsp;there.</p> <p><span><a href="https://www.darktable.org/2012/03/darktable-and-memory/memory_options.jpeg"><img alt="memory_options" src="memory_options_thumb.jpeg" /></a></span></p> <p>Here is a short explanation of the relevant parameters and their proposed&nbsp;settings.</p> <p><em>“number of background&nbsp;threads”</em></p> <p>(parameter in darktablerc:&nbsp;worker_threads)</p> <p>This parameter defines the maximum number of threads that are allowed in parallel when importing film rolls or doing other background stuff. For obvious reasons on 32-bit systems you can only have one thread eating resources at a time. So you need set this parameter to 1; anything higher will kill you. For the same reason you also must set the number of parallel export threads to&nbsp;1.</p> <p><em>“host memory limit (in <span class="caps">MB</span>) for&nbsp;tiling”</em></p> <p>(parameter in darktablerc:&nbsp;host_memory_limit)</p> <p>This parameter tells <span class="caps">DT</span> how much memory (in <span class="caps">MB</span>) it should assume as available to store image buffers during module operations. If an image can not be processed within these limits in one chunk, tiling will take over and process the image in several parts, one after the other. Set this to the lowest possible value of 500 as a starting point. You might experiment later whether you can increase it a bit in order to reduce the overhead of&nbsp;tiling.</p> <p><em>“minimum amount of memory (in <span class="caps">MB</span>) for a single buffer in&nbsp;tiling”</em></p> <p>(parameter in darktablerc:&nbsp;singlebuffer_limit)</p> <p>This is a second parameter that controls tiling. It sets a lower limit for the size of intermediate image buffers in megabytes. The parameter is needed to avoid excessive tiling in some cases (for some modules). Set this parameter to a low value of 8. You might tentatively increase it to 16&nbsp;later.</p> <p><em>“memory in bytes to use for mipmap&nbsp;cache”</em></p> <p>(parameter in darktablerc:&nbsp;cache_memory)</p> <p>This controls how many thumbnails (or mip maps) can be stored in memory at a time. As a starting point set this to something like <span class="caps">256MB</span> (give the number in bytes). <em>[Remark: in a previous version of this blog I recommended to start with <span class="caps">32MB</span>. This was a bit too optimistic, as it would not be sufficient to store the thumbs even of a moderately sized film roll.  A lot of thumb reprocessing would be the&nbsp;consequence.]</em></p> <p>To avoid the problem of memory fragmentation during longer runs of darktable, the new caching scheme frontloads the memory costs and allocates this cache once at the beginning. Some Linux kernels use over-committing memory allocation, which means you don&#8217;t immediately pay for all of the memory in terms of <span class="caps">RSS</span> (resident set size, the non-swapped physical memory), but in any case you pay for the address space. As explained before, this poses a problem for 32-bit systems and will at first sight appear as a regression over the (terribly slow, but that&#8217;s another story) 0.9.3-style cache. In the long run however, this is all memory that&#8217;s ever going to be allocated for thumbnails, so if we can successfully grab this portion once, we are relieving a lot of pressure on fragmentation for long&nbsp;sessions.</p> <h2>darktable on 64-bit&nbsp;systems</h2> <p>There&#8217;s not much to be said here. Of course also 64-bit systems require a sufficient amount of main memory. So the <span class="caps">4GB</span> plus swap recommendation holds true. On the other hand, 64-bit architectures do not suffer from the specific 32-bit limitations like small address space and fragmentation&nbsp;madness.</p> <p>Any modern Intel or <span class="caps">AMD</span> 64-bit <span class="caps">CPU</span> will have an available address space in the range of several Terabytes. The word “modern” is relative in this context: all <span class="caps">AMD</span> and Intel CPUs introduced since 2003 and 2004, respectively, offer a 64-bit mode. Linux 64-bit has been available since many&nbsp;years.</p> <p>All relevant Linux distributions give you the free choice to install a 32-bit or a 64-bit version with no added costs. You can even run old 32-bit binaries on a 64-bit Linux. The only thing you need to do: invest some time into the migration. In the end we strongly recommend to move to a 64-bit version of Linux. There isn&#8217;t much good reason, not to make this&nbsp;step.</p><img src="https://www.darktable.org/2012/03/darktable-and-memory/skull-thumb_wide.png" class="hidden-lede">upegelowWed, 28 Mar 2012 16:11:48 +0000tag:www.darktable.org,2012-03-28:2012/03/darktable-and-memory/blog32-bit64-bitbugfixesmemoryskulltutorialdarktable 1.0 releasedhttps://www.darktable.org/2012/03/darktable-1-0-released/<p>It is done, 1.0 is out. I sent out most of the new features with the announcement for 1.0rc2 a few weeks ago already, but for completeness, here it is&nbsp;again:</p> <ul> <li>New cameras supported<ul> <li>Leica&nbsp;M9</li> <li><span class="caps">NX100</span>/<span class="caps">NX5</span>/<span class="caps">NX10</span>/<span class="caps">NX11</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX1</span></li> <li>Pentax&nbsp;K-r</li> <li>Canon Powershot&nbsp;S100</li> <li>Olympus <span class="caps">XZ</span>-1</li> <li>Olympus&nbsp;E-P3</li> <li>Sony <span class="caps">DSLR</span>&nbsp;A330</li> <li>Sony <span class="caps">NEX</span>-5N</li> <li>Canon <span class="caps">EOS</span>&nbsp;1000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;600D</li> <li>Sony Alpha&nbsp;390</li> <li>Fuji Finepix <span class="caps">HS20EXR</span></li> </ul> </li> <li>New and updated translations (we now have&nbsp;chinese!)</li> <li>New modules:<ul> <li>shadows <span class="amp">&amp;</span>&nbsp;highlights</li> <li>enhanced tone curve. now operates in a and b channels as&nbsp;well</li> </ul> </li> <li>Refactored modules:<ul> <li>import</li> <li>snapshots (enable sliding separation line between before/after&nbsp;images)</li> <li>metadata</li> </ul> </li> <li>New image cache<ul> <li>faster concurrent access and&nbsp;insertion</li> <li>reduces needed&nbsp;memory</li> <li>more thumbnails stored on&nbsp;disk</li> <li>read embedded jpegs for creating thumbnails (faster folder&nbsp;import)</li> </ul> </li> <li>Increased general speed on sqlite3 (journaled, pagesize&nbsp;optimizations)</li> <li>Reworked, modular <span class="caps">UI</span></li> <li>Keyboard shortcuts support&nbsp;– key accelerators&nbsp;(GSoC)</li> <li>Unity launcher support&nbsp;(Ubuntu)</li> <li>Quicktool bar: exposure, presets and&nbsp;styles</li> <li>New color&nbsp;picker</li> <li>Web gallery export now with next/prev buttons per&nbsp;image</li> <li>Removed gconf: not used anymore, we have our own&nbsp;backend</li> <li>Bugfixes</li> </ul> <p>Also, a couple of caveats to keep in mind this&nbsp;time:</p> <ul> <li>We don&#8217;t support fuji superccd at this point (more or less a simple fix, if you want to do it, contact us&nbsp;&#8230;)</li> <li>We disabled openmp by default for mac builds, as gcc on that platform seems to have some issues (&lt;gcc 4.6, that&nbsp;is).</li> <li>We had to roll back libraw to &lt;14.5, so the fuji X10 is not working at the&nbsp;moment.</li> <li>There have been issues with memory on 32-bit systems. seems to be okay currently, but something to keep in mind. use 64-bits if you&nbsp;can!</li> </ul> <p>And as always a couple of links, just in&nbsp;case.</p> <ul> <li> <p>Source&nbsp;tar.gz:</p> <p><a href="https://sourceforge.net/projects/darktable/files/latest/download">https://sourceforge.net/projects/darktable/files/latest/download</a></p> </li> <li> <p>Ubuntu Packages are readily available on Pascal&#8217;s <span class="caps">PPA</span>, for Lucid, Natty, Oneiric and Precise. Support for Maverick has been fully&nbsp;deprecated.</p> <p><a href="https://launchpad.net/%7Epmjdebruijn/+archive/darktable-release">https://launchpad.net/~pmjdebruijn/+archive/darktable-release</a></p> <p><a href="https://launchpad.net/%7Epmjdebruijn/+archive/darktable-release-plus">https://launchpad.net/~pmjdebruijn/+archive/darktable-release-plus</a></p> <p>If you have 0.9.3 already installed and are upgrading using update-manager, it may ask about a partial upgrade, which should be ok (since we are rejecting the old darktable-plugins-experimental&nbsp;package).</p> </li> <li> <p>Pascal&#8217;s screen casts (for the 0.9 series, but still&nbsp;valid):</p> <p><a href="https://encrypted.pcode.nl/blog/2011/11/05/darktable-0-9-screencast-library-addition/">https://encrypted.pcode.nl/blog/2011/11/05/darktable-0-9-screencast-library-addition/</a></p> </li> <li> <p>Our blog with some cool insider&nbsp;info:</p> <p><a href="/blog/">https://darktable.org/blog/</a></p> </li> </ul> <p>And some advertising, we might be looking for students to take on GSoC this&nbsp;year:</p> <p><a href="https://sourceforge.net/apps/trac/darktable/wiki/GSOC">https://sourceforge.net/apps/trac/darktable/wiki/<span class="caps">GSOC</span></a></p> <p><a href="https://sourceforge.net/apps/trac/darktable/wiki/GSOC_idea_list">https://sourceforge.net/apps/trac/darktable/wiki/GSOC_idea_list</a></p> <p>And of course, huge thanks to all who helped make this possible! every half hour you can steal from your jobs and families makes a difference&nbsp;;)</p> <p>Also a darktable release announcement can&#8217;t come without the warning that this version will soon be completely obsoleted feature-wise by the git version. We have some cool stuff sitting around in branches, waiting to be merged (spoiler: cleaner, more unified module <span class="caps">UI</span> with new widgets, similarity-based image clustering and search, refined conditional blend modes, maybe at some point geo tagging with map support in the center view, and possibly&nbsp;masking).</p> <p>Have a lot of&nbsp;fun.</p><img src="https://www.darktable.org/2012/03/darktable-1-0-released/4.jpg" class="hidden-lede">jcsogoThu, 15 Mar 2012 07:53:25 +0000tag:www.darktable.org,2012-03-15:2012/03/darktable-1-0-released/announcementdarktable releasedarktablereleasecolor correctionhttps://www.darktable.org/2012/03/color-correction/<p>this is one of the oldest modules in darktable. it appeared to me that it probably lacks an example to discover how useful it can be &#8230; so here goes the&nbsp;example.</p> <p>this started off to be a wrapper around the <a href="http://gegl.org/operations.html#op_gegl:whitebalance">gegl:whitebalance operation</a>, which works in Lab color space and is able to give dark and bright colors a different color tint, interpolating between the two for mid&nbsp;tones.</p> <p>so suppose you have the following&nbsp;image:</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-170029_1920x1080_scrot.jpg"><img alt="2012-03-11-170029_1920x1080_scrot" src="2012-03-11-170029_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>and want to adjust white balance for the highlights and the shadows separately. you can do that by pulling the box inside the color panel&nbsp;around:</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-170059_1920x1080_scrot.jpg"><img alt="2012-03-11-170059_1920x1080_scrot" src="2012-03-11-170059_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>with the box open, you&#8217;ll notice that two edges are dark, and two are light. these define the color shift for shadows and highlights, respectively. in the example above, i pulled highlights towards red, and the shadows towards blue. play around with them, to get a better feel for&nbsp;it:</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-170139_1920x1080_scrot.jpg"><img alt="2012-03-11-170139_1920x1080_scrot" src="2012-03-11-170139_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>you can also use the mouse wheel to adjust&nbsp;saturation:</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-170333_1920x1080_scrot.jpg"><img alt="2012-03-11-170333_1920x1080_scrot" src="2012-03-11-170333_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>and finally, to give you a real-world example, so you don&#8217;t discard this module as b-movie relevant only. the following is an image which has a double-whitebalance situation. the dark rocks in the foreground have a bluish tint, whereas i like the warm tones of the cliff and the sky in the&nbsp;background.</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-173857_1920x1080_scrot.jpg"><img alt="2012-03-11-173857_1920x1080_scrot" src="2012-03-11-173857_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>by leaving the light edges where they were, and just dragging the dark edges a bit up towards yellow, you can achieve the following (screen capture with active snapshot, to make the comparison more obvious. left: after, right:&nbsp;before).</p> <p><span><a href="https://www.darktable.org/2012/03/color-correction/2012-03-11-174014_1920x1080_scrot.jpg"><img alt="2012-03-11-174014_1920x1080_scrot" src="2012-03-11-174014_1920x1080_scrot_thumb.jpg" /></a></span></p> <p>note how the sky and the hill on the left hardly changed at all, while the rock in the foreground now nicely blends into the warm white balance of the bright&nbsp;parts.</p> <p>sidenote: this also works for black and white images, to tint your image after monochrome&nbsp;conversion.</p><img src="https://www.darktable.org/2012/03/color-correction/2012-03-11-170059_1920x1080_scrot.jpg" class="hidden-lede">joSun, 11 Mar 2012 05:34:56 +0000tag:www.darktable.org,2012-03-11:2012/03/color-correction/blogtutorialSecond release candidate dt1.0~rc2https://www.darktable.org/2012/03/second-release-candidate-dt1-0rc2/<p>Our second release candidate is out! We have had a couple of tiny bugfixes, better translations, new rawspeed (brings support for the new Canon 5D Mark3), and slight consistency fixes in the <span class="caps">GUI</span> since&nbsp;rc1.</p> <p>You can get the tarball from&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0~rc2.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0~rc2.tar.gz/download</a></p> <p>Getting&nbsp;closer!</p><img src="https://www.darktable.org/2012/03/second-release-candidate-dt1-0rc2/IMG_5561_export_01.jpg" class="hidden-lede">smnSat, 10 Mar 2012 00:57:50 +0000tag:www.darktable.org,2012-03-10:2012/03/second-release-candidate-dt1-0rc2/announcementdarktable releasedarktabledownloadrelease candidatetarballUpcoming features: Conditional Blendinghttps://www.darktable.org/2012/03/upcoming-features-conditional-blending/<h1>or &#8220;If one slider is not&nbsp;enough&#8221;</h1> <p>Diligent readers of our small blog series are already aware of the blending feature that darktable offers as part of many modules. Instead of just handing over their result to the subsequent module in pixelpipe, “blending modules” take a moment to reconsider. Based on the blend setting they will take their original output together with their input and do a re-processing. As an example refer to <a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/">here</a>, where we took blend mode “overlay” with module “lowpass” to do shadow&nbsp;recovery.</p> <h2>Totally&nbsp;normal</h2> <p>In many cases it is the most basic blend mode “normal” that we want. Depending on the setting of slider “opacity” this allows to control the strength of a module&#8217;s effect. Think of this as a layer of two transparencies. The lower one represents the input image, the upper one is the original output of our module (the one we would get without blending). If opacity is 100% the upper layer will completely mask the lower one; you get the full effect of the module. If opacity is 0% the upper layer is completely transparent, you see the input image as if the module has no effect. In-between opacity values allow to gradually blend the effect of this module into the original image. We already used this technique <a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/">here</a> to tone down the effect of shadow&nbsp;recovery.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/sh-parameters.jpeg"><img alt="sh-parameters" src="sh-parameters_thumb.jpeg" /></a></span></p> <h2>More sliders&nbsp;please</h2> <p>The opacity slider already gives us some very nice control. However, there are cases when this is not enough, because we want to limit the effect to certain parts of the image. Obviously we could do this based on geometrical coordinates on the image plain. A corresponding method using layer masks is currently under development in&nbsp;darktable.</p> <p>Today I want to present to you an alternative technique available as a development branch in git called “blendif” (soon to be integrated into master for the new development round after darktable 1.0). This one does not use geometrical but color coordinates to control blending effects. With each of up to four color channels, both independently for the input image and the output image, we can decide to what extent pixels should be blended or&nbsp;not.</p> <p>As this is done with four parameters for each channel, you are in the position to juggle with up to 32 values. This gives a lot of power for a very detailed control, but it might at first appear a bit complicated. Don&#8217;t be afraid; we look at it step by step and you will quickly become comfortable with&nbsp;it.</p> <h2>A first&nbsp;look</h2> <p>Enter a module that supports blending, like “tone curve”, and activate blending with the corresponding checkbox. You see the already familiar controls (blend mode, opacity) plus a new checkbox that says “blend if &#8230;” If you toggle that box, a further control area appears&nbsp;beneath.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/bl-menu1.jpeg"><img alt="bl-menu1" src="bl-menu1_thumb.jpeg" /></a></span></p> <p>You find a row of notebook tabs named after color channels: “L”, “a” and “b” for modules that act in Lab color space; “gray”, “red”, “green” and “blue” for modules that work in <span class="caps">RGB</span> color space. Gray is just a weighted average of <span class="caps">RGB</span> and acts as a measure of lightness (gray = 0.3 × red + 0.59 × green + 0.11 ×&nbsp;blue).</p> <p>Each tab shows two gradient sliders named “input” and “output”. We stick to the visual interpretation that our pixelpipe extends from bottom to top. So the input that a module receives lies below the output that it produces. These sliders allow you&nbsp;– independently for input and output and separately for each color channel&nbsp;– to define how pixels should be blended. For this purpose there are four markers per&nbsp;slider:</p> <ul> <li>two filled triangles above the slider: pixels with values in the range between these two markers are treated as if they have an opacity of&nbsp;100%</li> <li>two open triangles below the slider: pixels with values outside of these two markers are treated as if they have an opacity of&nbsp;zero</li> </ul> <p>In its default settings the markers are at the extreme positions left and right of the slider. That means all possible values lie between the two filled triangles and there is no room for values outside of the open triangles. So all pixels are subject to blending with 100% opacity, no pixels are excluded (with the exception of “unbound” values, but that is a different&nbsp;story).</p> <p>You can drag the sliders around with a left-click of your mouse, moving first the upper markers inwards. After that it is also possible to move the lower markers more inwards. The sequence of the markers always remains unchanged: they can touch but they can not switch&nbsp;position!</p> <p>To make all this a bit clearer let’s look at an example. Below we have a slider of an input L-channel with one potential configuration. The left open marker is at L=20, the left upper marker at L=40, the right upper marker at L=60 and the right lower marker at L=80. The numerical positions of the markers (from left to right) are displayed above the&nbsp;slider.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/bl-menu2.jpeg"><img alt="bl-menu2" src="bl-menu2_thumb.jpeg" /></a></span></p> <p>This configuration can be interpreted in the following&nbsp;way:</p> <ul> <li>L values below 20 or above 80 are treated as if they have an opacity of&nbsp;0</li> <li>L values between 40 and 60 are treated as if they have an opacity of&nbsp;100%</li> <li>L values between 20 and 40 and between 60 and 80, respectively, are gradually blended using an opacity that linearly changes between the&nbsp;markers.</li> </ul> <p>In order to ease understanding, here is a graphical representation as an opacity&nbsp;curve:</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/graph1.lml_.png"><img alt="graph1.lml_" src="graph1.lml__thumb.png" /></a></span></p> <p><span class="caps">OK</span>, with this tool we now are able to define a per channel opacity depending on pixel&nbsp;value.</p> <p>How is the situation, if we do this for different channels at the same time? For each pixel the per channel opacity value is calculated and all of them are finally multiplied. This product, together with the global opacity value, defines the effective opacity of a&nbsp;pixel.</p> <p>This implies: if one of the channels has a per channel opacity of zero, e.g. for L=10 in the above example, the overall opacity will be zero regardless of the other settings. Blending will then cause the respective module to have no effect on that pixel; we just see the unchanged input pixel. Only if all channels for a certain pixel deliver 100% opacity (and global opacity is also set to 100% as well) the module will have full effect for that&nbsp;pixel.</p> <h2>More&nbsp;control</h2> <p>Some more words on how to control the markers. As we&#8217;ve seen, you can drag them around with a left-click of the mouse. The marker you touched last is selected and highlighted. You can fine-tune its value with your scroll-wheel. Right-clicking will select / deselect a marker for fine-tuning. Double clicking will reset all markers to their default&nbsp;positions.</p> <p>If you want to know, what Lab (or <span class="caps">RGB</span>) values a certain point of your image has, activate the color picker tool and drag around in the image. The corresponding values are marked in the gradient sliders as a white bar and displayed numerically above the slider. Obviously the positions of that bar can be different for input and output sliders; that&#8217;s just the consequence of the module&#8217;s image processing action. If you change the color picker into “area” mode, you will additionally see in each gradient slider a gray field that shows the range of values from minimum to&nbsp;maximum.</p> <h2>13000&nbsp;tons</h2> <p>Let&#8217;s go for a practical example now. I took the following image in the open-pit mine “Garzweiler <span class="caps">II</span>” close to Cologne. Shovel-wheel excavator “288” with its 13000 tons is one of the biggest machines you might find. I was happy enough to have one person standing close to the running shovel-wheel to give us an impression of the size. This version of the image is pre-processed with modules “exposure, “crop and rotate”, “equalizer” and “non local&nbsp;means”.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/IMG_1474_0005.sm_.jpg"><img alt="IMG_1474_0005.sm_" src="IMG_1474_0005.sm__thumb.jpg" /></a></span></p> <p>What I am still missing: I&#8217;d like to put some more definition into the different colors of the soil in the background. From <a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/">this post</a> we know what to do. Let&#8217;s give the a- and b-channel a little bit more&nbsp;punch:</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/bl-bild1-tonecurve.jpg"><img alt="bl-bild1-tonecurve" src="bl-bild1-tonecurve_thumb.jpg" /></a></span></p> <p>Here is the result and it is&nbsp;…</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/IMG_1474_0004.sm_.jpg"><img alt="IMG_1474_0004.sm_" src="IMG_1474_0004.sm__thumb.jpg" /></a></span></p> <p>… well, just ridiculous! The safety garment of the worker displays an orange, you will never find in reality. Also the color of the Caterpillar® in the foreground is completely exaggerated. As a general rule: if you work on colors, play close attention that you correctly hit colors which everybody knows: corporate colors of well known companies, colors of traffic signs to name just a few, and most important skin&nbsp;tones.</p> <p>So, what to do? We want to boost the color contrast of the slightly yellow sand colors, but we want to exclude the colors, that are already quite saturated. These are characterized by high positive values above +50 in the b-channel. In addition we see some red structures at the excavator&#8217;s arm, which get too prominent when boosted further. Those are characterized by high positive values above +40 in the a-channel. So here are my settings for conditional&nbsp;blending:</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/bl-bild1-blendif.jpg"><img alt="bl-bild1-blendif" src="bl-bild1-blendif_thumb.jpg" /></a></span></p> <p>And here is the final&nbsp;result:</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/IMG_1474_0003.sm_.jpg"><img alt="IMG_1474_0003.sm_" src="IMG_1474_0003.sm__thumb.jpg" /></a></span></p> <h2>You say halo and I say&nbsp;goodbye</h2> <p>Another possible use of conditional blending is to prevent artifacts which might hit us when using certain modules. Here is an example of a photo of two old cooling towers. A typical situation in photography: rather dark main subject contrasted by a light sky. I exposed for the sky and hoped for post-processing to do the rest. My history stack contains several modules, including “shadows and highlights” to bring the tones of the cooling towers to where I wanted, “equalizer” to emphasize the structure, and “tone curve” to boost the&nbsp;colors.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/IMG_1199.jpg"><img alt="IMG_1199" src="IMG_1199_thumb.jpg" /></a></span></p> <p>Unfortunately some modules, in this example mainly “equalizer”, can produce artifacts in high contrast edges of large structures. Look at the left example and pay attention the sky close to the roof of the structure: a light halo is visible. In the right example I restricted the effect of modules “equalizer”, “shadows and highlights” and “tone curve” only to the dark to mid tones, keeping the light tones of the sky unchanged; the halo is gone and the sky keeps its neutral&nbsp;color.</p> <p><span><a href="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/bl-bild2-blendif2.jpeg"><img alt="bl-bild2-blendif2" src="bl-bild2-blendif2_thumb.jpeg" /></a></span></p> <h2>Going even&nbsp;further</h2> <p>There are many other possible uses for conditional&nbsp;blending:</p> <ul> <li>restrict noise reduction to only certain parts where noise is most&nbsp;visible</li> <li>add grain to an image with different strength depending on tonal&nbsp;values</li> <li>desaturate an image but leave a certain range of colors intact (colorkey,&nbsp;yuck)</li> </ul> <p>You should have gotten the point now. In general the most important step is to find a strategy how to select those pixels you want to save from the original image or you want to get processed from the respective module. Some cases are difficult to solve with what we’ve discussed so far. For example, we might want a module to act on the major part of an image but exclude a minority of pixels which are defined by a very narrow band of values. For this purpose a new blend mode “inverse” has been introduced. It behaves like blend mode “normal”, only that the logic of what is blended with 100% opacity and zero opacity, respectively, is reversed. Give it a try to find out how it&nbsp;works!</p> <p>Finally a small exercise: one reader has detected in one of my earlier <a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/#comment-563">blog posts</a> an artifact. I leave it to you to propose a way how to avoid the bluish tint of the rocks in the brook bed.&nbsp;Anyone?</p><img src="https://www.darktable.org/2012/03/upcoming-features-conditional-blending/IMG_1474_thumb.sm_.jpg" class="hidden-lede">upegelowMon, 05 Mar 2012 18:36:43 +0000tag:www.darktable.org,2012-03-05:2012/03/upcoming-features-conditional-blending/blogdevelopmentupcoming featureblendingcolorconditional blendingdarktablehalosLabtone curvestutorialRelease Candidate darktable1.0~rc1https://www.darktable.org/2012/03/release-candidate-darktable1-0rc1/<p>There are still bug fixes coming, which is good. But nevertheless we just released a release candidate tarball, available for download from&nbsp;here:</p> <p><a href="https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0~rc1.tar.gz/download">https://sourceforge.net/projects/darktable/files/darktable/1.0/darktable-1.0~rc1.tar.gz/download</a></p> <p>which will hopefully help us to get rid of the last couple of remaining bugs before 1.0. For install instructions have a look on <a href="https://www.darktable.org/install/#current-release-from-source">how to compile from source</a>.</p> <p>This is a rough outline of the changes since 0.9.3 (quite sure we forgot something, it&#8217;s been &gt; 1000&nbsp;commits):</p> <ul> <li>bugfixes</li> <li>translations (we now have&nbsp;chinese!)</li> <li> <p>new cameras&nbsp;supported</p> <ul> <li>Leica&nbsp;M9</li> <li><span class="caps">NX100</span>/<span class="caps">NX5</span>/<span class="caps">NX10</span>/<span class="caps">NX11</span></li> <li>Panasonic <span class="caps">DMC</span>-<span class="caps">GX1</span></li> <li>Pentax&nbsp;K-r</li> <li>Canon Powershot&nbsp;S100</li> <li>Olympus <span class="caps">XZ</span>-1</li> <li>Olympus&nbsp;E-P3</li> <li>Sony <span class="caps">DSLR</span>&nbsp;A330</li> <li>Sony <span class="caps">NEX</span>-5N</li> <li>Canon <span class="caps">EOS</span>&nbsp;1000D</li> <li>Canon <span class="caps">EOS</span>&nbsp;600D</li> <li>Sony Alpha&nbsp;390</li> <li>Fuji Finepix <span class="caps">HS20EXR</span></li> </ul> </li> <li> <p>removed gconf: not used anymore, we have our own&nbsp;backend</p> </li> <li> <p>new&nbsp;modules:</p> <ul> <li>shadows <span class="amp">&amp;</span>&nbsp;highlights</li> <li>enhanced tone curve. now operates in a and b channels as&nbsp;well</li> <li>keywords. allows usage and reordering of hierarchical&nbsp;keywords</li> </ul> </li> <li> <p>new&nbsp;cache:</p> <ul> <li>faster</li> <li>reduces needed&nbsp;memory</li> <li>more thumbnails stored on&nbsp;disk</li> </ul> </li> <li> <p>read embedded jpegs for creating thumbnails (faster folder&nbsp;import)</p> </li> <li>unity launcher support&nbsp;(ubuntu)</li> <li>increased general speed on sqlite3&nbsp;(journaled)</li> <li>quicktool bar: exposure, presets and&nbsp;styles</li> <li>shortcuts support&nbsp;– key accelerators&nbsp;(GSoC)</li> <li>modular&nbsp;ui</li> <li>new color&nbsp;picker</li> <li>web gallery export now with next/prev buttons per&nbsp;image</li> <li> <p>refactored&nbsp;modules:</p> <ul> <li>import</li> <li>snapshots (enable sliding separation line between before/after&nbsp;images)</li> <li>metadata</li> </ul> </li> </ul> <p>In case you didn&#8217;t notice yet, there is now also a quite active blog with some insights in ongoing development and new modules, <a href="/blog/">you might want to check it out</a>.</p> <p>We&#8217;ve updated the about dialog and the manpage with a new author list including the period release-0.9.3..master, but please double check if we forgot someone&nbsp;&#8230;</p> <p>Thanks all for being a great community, thanks to all contributors! We know how hard it is to spare a few minutes each week to make dt&nbsp;great!</p> <p>Enjoy the release, let us know about any remaining&nbsp;issues!</p><img src="https://www.darktable.org/2012/03/release-candidate-darktable1-0rc1/img_0001_28.jpg" class="hidden-lede">smnSun, 04 Mar 2012 08:46:51 +0000tag:www.darktable.org,2012-03-04:2012/03/release-candidate-darktable1-0rc1/announcementdarktable releasecandidatereleasetarballdarktable and OpenCL (updated)https://www.darktable.org/2012/03/darktable-and-opencl/<p>Many readers will have already heard about <span class="caps">GPU</span> processing and the fact that darktable can make use of OpenCL to improve performance. As we still lack a detailed documentation of that topic, please find here a few explanations and&nbsp;howtos.</p> <h2>The&nbsp;Background</h2> <p>Processing high resolution images belongs to the more demanding tasks in modern computing. Both, in terms of memory requirements and in terms of <span class="caps">CPU</span> power, getting the best out of a typical 15, 20 or 25 Megapixel image can quickly bring your computer to its&nbsp;limits.</p> <p>darktable’s requirements are no exception. Our decision to not compromise processing quality, has led to all calculations being done on 4 × 32bit floating point numbers. This is slower than “ordinary” 8 or 16bit integer algebra, but eliminates all problems of tonal breaks or loss of&nbsp;information.</p> <p>A lot of hand optimization has been invested to make darktable as fast as possible. If you run a current version of darktable on a modern computer, you might not even notice any “slowness”. However, there are conditions and certain modules where you feel (or hear from the howling of your <span class="caps">CPU</span> fan) how much your poor multi-core processor has to&nbsp;struggle.</p> <p>That’s where OpenCL comes in. OpenCL allows us to take advantage of the enormous power of modern graphics cards. It has been gamer’s demand for more and more highly detailed 3D worlds in modern ego shooters, that has fostered <span class="caps">GPU</span> development. <span class="caps">ATI</span>, <span class="caps">NVIDIA</span> and Co had to put enormous <span class="caps">FPU</span> processing power into their GPUs to meet these demands. The result is modern graphics cards with highly parallelized GPUs to quickly calculate surfaces and textures at high frame&nbsp;rates.</p> <p>You are not a gamer and you don’t take advantage of that power? Well, then you should at least use it in&nbsp;darktable!</p> <p>For the task of highly parallel floating point calculations modern GPUs are much faster than CPUs. That is especially true, when you want to do the same few processing steps over millions of items. Typical use case: processing of megapixel&nbsp;images.</p> <h2>How OpenCL&nbsp;works</h2> <p>As you can imagine, hardware architectures of GPUs can vary significantly. There are different producers, and even different generations of GPUs from the same producer may differ clearly. At the same time <span class="caps">GPU</span> manufacturers are normally not willing to disclose many hardware details of their products to the public. One of the known consequences is the need to use proprietary drivers under Linux, if you want to take full advantage of your graphics&nbsp;card.</p> <p>Fortunately an industry consortium lead by <a href="https://www.khronos.org">The Khronos Group</a> has developed an open, standardized interface called <a href="https://www.khronos.org/registry/cl/specs/opencl-1.0.pdf">OpenCL</a>. It eases the use of your <span class="caps">GPU</span> as a numerical processing device. OpenCL offers a C99-like programming language with a strong focus on parallel computing. An application that wants to use OpenCL will need to bring along a suited OpenCL source code that it then hands over to a hardware specific OpenCL compiler at run-time. This way the application can use OpenCL on different <span class="caps">GPU</span> architectures (even at the same time). All “hardware secrets” are hidden in this compiler and are normally not visible to the user (or the application). The compiled OpenCL code is loaded onto your <span class="caps">GPU</span> and&nbsp;– with certain <span class="caps">API</span> calls&nbsp;– it is ready to do calculations for&nbsp;you.</p> <h2>How to activate OpenCL in&nbsp;darktable</h2> <p>Using OpenCL in darktable requires that your <span class="caps">PC</span> is equipped with a suitable graphics card and that it has the required libraries in place. Namely modern graphics cards from <span class="caps">NVIDIA</span> and <span class="caps">ATI</span> come with full OpenCL support. The OpenCL compiler is normally shipped as part of the proprietary graphics driver; it is reachable as a dynamic library called “libOpenCL.so”. This library must be in a folder where it is found by your system’s dynamic&nbsp;linker.</p> <p>When darktable starts, it will first try to find and load libOpenCL.so and&nbsp;– on success&nbsp;– check if the available graphics card comes with OpenCL support. A sufficient amount of graphics memory (<span class="caps">1GB</span>+) needs to be available to take advantage of the <span class="caps">GPU</span>. If that is <span class="caps">OK</span>, darktable tries to setup its OpenCL environment: a processing context needs to be initialized, a calculation pipeline to be started, OpenCL source code files (extension is .cl) need to be read and compiled and the included routines (called OpenCL kernels) need to be prepared for <span class="caps">DT</span>’s modules. If all that is done, the preparation is&nbsp;finished.</p> <p>As we still regard darktable’s OpenCL support as experimental, we require the user in addition to positively activate OpenCL. Go into the preferences dialog and look for core options. Here you find a checkbox that says: “activate opencl support (experimental)”. Check that box and from that on OpenCL is used by&nbsp;darktable.</p> <p><span><a href="https://www.darktable.org/2012/03/darktable-and-opencl/ocl-menu-mk.jpeg"><img alt="ocl-menu-mk" src="ocl-menu-mk_thumb.jpeg" /></a></span></p> <p>You can at any time switch it off and on again. Depending on the type of modules you are using, you will notice the effect as a general speed-up during interactive work and during export. Not all modules can take advantage of OpenCL at the moment and not all modules are demanding enough to make a noticeable difference. In order to feel a real difference, take modules like “shadows <span class="amp">&amp;</span> highlights”, “sharpen”, “lowpass”, “highpass” or as an extreme case&nbsp;“equalizer”.</p> <p>Let’s have a look at an example. I took an image of 20 MPx and processed it with a typical history stack for my way of working. This covers modules equalizer, tone curve, highpass and&nbsp;sharpen.</p> <p>My computer is equipped with an i7-2600 <span class="caps">CPU</span> and an <span class="caps">NVIDIA</span> GeForce <span class="caps">GTS</span> 450 graphics card with <span class="caps">1GB</span> memory. Core memory is <span class="caps">16GB</span>.</p> <p>For a single run of my pixelpipe in interactive mode (so called “full” pipeline), I get the following&nbsp;figures:</p> <table cellpadding="7" width="433" cellspacing="0" > <tbody > <tr valign="TOP" > <td width="210" >OpenCL not activated </td> <td width="193" >0.76 seconds </td> </tr> <tr valign="TOP" > <td width="210" >OpenCL activated </td> <td width="193" >0.11 seconds </td> </tr> </tbody> </table> <p>This would be the typical delay, if you change a parameter or if you pan or zoom into the&nbsp;image.</p> <p>With the same image and the same settings, I profiled the export pixelpipe when generating a <span class="caps">JPEG</span> file with full resolution. Here are the&nbsp;results:</p> <table cellpadding="7" width="433" cellspacing="0" > <tbody > <tr valign="TOP" > <td width="210" >OpenCL not activated </td> <td width="193" >25.2 seconds </td> </tr> <tr valign="TOP" > <td width="210" >OpenCL activated </td> <td width="193" >6.5 seconds </td> </tr> </tbody> </table> <p>If you are interested in more profiling figures, you can call darktable with command line parameters -d opencl -d perf. After each run of the pixelpipe you will get a detailed allocation of processing time to each module plus an even more fine grained profile for all used OpenCL&nbsp;kernels.</p> <p>Besides the speed-up you should not see any difference in the results between <span class="caps">CPU</span> and <span class="caps">GPU</span> processing. Except of rounding errors, the results are designed to be identical. If, for some reasons, darktable fails to properly finish a <span class="caps">GPU</span> calculation, it will normally notice and automatically (and transparently) fall back to <span class="caps">CPU</span>&nbsp;processing.</p> <h2>Possible Problems and&nbsp;Solutions</h2> <p>If severe OpenCL errors occur at run-time, or the setup of our OpenCL environment fails during initialization, OpenCL will be automatically deactivated. You will notice if you open the preferences dialog and the activation checkbox has been reset to&nbsp;“off”.</p> <p>There can be various reasons why OpenCL failed. We depend on hardware requirements and on the presence of certain drivers and libraries. In addition all these have to fit in terms of maker model and revision number. If anything does not fit, e.g. your graphics driver (loaded as a kernel module) does not match the version of your libOpenCL.so, OpenCL support is likely to fail and <span class="caps">CPU</span> is taking&nbsp;over.</p> <p>In that case, the best thing to do is start darktable from a console&nbsp;with</p> <div class="highlight"><pre>darktable -d opencl </pre></div> <p>This will give additional debugging output about the initialization and use of OpenCL. First see if you find a line that starts with “[opencl_init] <span class="caps">FINALLY</span> …” This should tell you, if OpenCL support is available for you or not. If initialization failed, look at the messages above for anything that reads like “could not be detected” or “could not be created”. Check if there is a hint about where it&nbsp;failed.</p> <p>Here are a few cases observed in the&nbsp;past:</p> <p><span class="caps">DT</span> might tell you that no OpenCL aware graphics card is detected or that the available memory on your <span class="caps">GPU</span> is too low and the device is discarded. In that case you might need to buy a new card, if you really want OpenCL&nbsp;support.</p> <p><span class="caps">DT</span> might also tell you that a context could not be created. This often indicates a version mismatch between (loaded) graphics driver and libOpenCL. Check if you have left-over kernel modules or graphics libraries of an older install and take appropriate action. In doubt, make a clean reinstall of your graphics driver. Sometimes, immediately after a driver update, the loaded kernel driver does not match the newly installed libraries: reboot your system in that&nbsp;case.</p> <p><span class="caps">DT</span> might crash in very rare cases directly during startup. This can happen if your OpenCL setup is completely broken or if driver/library contains a severe bug. If you can’t fix it, you can still use darktable with option &#8212;disable-opencl, which will skip the entire OpenCL initialization&nbsp;step.</p> <p><span class="caps">DT</span> might on some systems fail to compile its OpenCL source files at run-time. In that case you will get a number of error messages looking like typical compiler errors. This could indicate an incompatibility between your OpenCL implementation and our interpretation of the standard. In that case visit us at <a href="mailto:darktable-devel@sourceforge.net">darktable-devel@sourceforge.net</a> and report the problem. Chances are good that we can help you. Please also report in case you see significant differences between <span class="caps">CPU</span> and <span class="caps">GPU</span> processing of an&nbsp;image!</p> <p>There also exist a few on-<span class="caps">CPU</span> implementations of OpenCL. These come as drivers provided by <span class="caps">INTEL</span> or <span class="caps">AMD</span>. We observed that they do not give us any speed gain versus our hand-optimized <span class="caps">CPU</span> code. Therefore we simply discard these&nbsp;devices.</p> <h2>Summary</h2> <p>Although OpenCL support in darktable is still experimental and incomplete, it is already very usable. Give it a try and see what it can do for&nbsp;you!</p> <h2>[Update]</h2> <p>Here are a few more words about optimization of your OpenCL setup once it&#8217;s running. As a general rule, darktable tries to catch all OpenCL runtime errors and take appropriate action. Therefore OpenCL should normally not cause darktable to crash or give garbled output. Instead, in case of errors, <span class="caps">DT</span> will notice and reprocess everything again on <span class="caps">CPU</span>; an additional step which could slow-down processing significantly for you! Therefore it is worth investing some effort to avoid those&nbsp;errors.</p> <p>The most limiting resource for OpenCL is <span class="caps">GPU</span> memory. Modern graphics cards might be equipped with <span class="caps">1GB</span> or even <span class="caps">2GB</span> <span class="caps">RAM</span>, but this is low compared to core memory and it is not too much if we want to do an export of a high resolution image. One further problem with <span class="caps">GPU</span> memory is the fact, that we do not know what is really free. At startup we will read from each OpenCL device the amount of available memory, but we can not take all of it. There is some (unknown) amount which the <span class="caps">GPU</span> driver will need for its overhead and for X11 video tasks. Trying to allocate more memory for our purposes than is available at a time will cause allocation failures and the pixelpipe to&nbsp;abort.</p> <p>darktable&#8217;s escape route out of this limitation is “tiling”. Images that are too big are processed in smaller parts (rectangular tiles) one after the other and then combined again. This happens on a per-module basis, i.e. for each module that we want to process, a decision is taken if and how many tiles we will&nbsp;need.</p> <p>Before going into the details, the above already makes clear that we should not process several images in parallel with OpenCL. We already make maximum use of <span class="caps">GPU</span> memory by tiling and the nature of <span class="caps">GPU</span> processing will already parallelize processing to the max on a pixel by pixel basis. No room for additional parallelization. In preferences set &#8220;export multiple images in parallel&#8221; to&nbsp;1.</p> <p>When you are running darktable with OpenCL support and if you suspect slow processing (namely during image exports), restart <span class="caps">DT</span> from a console with option <code>-d opencl</code>.</p> <p>Watch out for modules that fail with an error message. Pay special attention to error code -4; this is the error we get when on-<span class="caps">GPU</span> memory allocation fails. Module “equalizer” is a hot candidate for this. Sometimes you might get a message on a module failing due to not fulfilled “roi” requests (esp. module “demosaic”). This can be ignored; it is a current darktable limitation but does not indicate any OpenCL&nbsp;problem.</p> <p>If you get “-4” errors, go into file <code>$HOME/.config/darktable/darktablerc</code>, where <span class="caps">DT</span> stores its configuration parameters and look for <code>opencl_memory_headroom</code>. This value tells darktable how many megabytes (out of the totally available amount) should be left free for driver and video purposes. By default it is set to <span class="caps">300MB</span>, which works well with current <span class="caps">NVIDIA</span> cards. If you increase this value (steps of 50 are a good choice), you even further reduce danger to run into allocation failures. On the negative side, this requires stronger tiling (more but smaller tiles) which is a bit less efficient. In the end you should rather accept more tiling than more allocation&nbsp;failures!</p> <p>With current Radeon cards users have observed a different issue. Those cards will often only report to have less available memory than they physically own; typically <span class="caps">512MB</span> out of <span class="caps">1GB</span>. In the first place this will prevent them from being accepted as valuable OpenCL devices by <span class="caps">DT</span> (we set a minimum requirement of <span class="caps">768MB</span>). You can change this behavior if you set opencl_memory_requirement to 512. The good news is that Radeon cards seem to have less memory overhead (at least within the reported <span class="caps">512MB</span>). Therefore you can try to set opencl_memory_headroom to a value as low as 150 or even 100. This should leave you with a quite reasonable amount of free <span class="caps">GPU</span> memory for OpenCL processing. Give it a try and share your success stories at <a href="mailto:darktable-users@sourceforge.net">darktable-users@sourceforge.net</a>.</p><img src="https://www.darktable.org/2012/03/darktable-and-opencl/ocl-menu-thumb.jpeg" class="hidden-lede">upegelowFri, 02 Mar 2012 20:29:00 +0000tag:www.darktable.org,2012-03-02:2012/03/darktable-and-opencl/blogdevelopmentdarktableOpenCLtutorialbauhaus widgetshttps://www.darktable.org/2012/03/bauhaus-widgets/<p>disclaimer: this is only to tease you and will not make it into the next release, but the one after&nbsp;&#8230;</p> <p>when reading gui-guidelines, most of them seem to be too general, or too specific for a certain kind of programming environment (gnome and gtk, qt,&nbsp;etc).</p> <p>for our purposes, i found the fundamental principles of the bauhaus school to be more appropriate. radical simplicity, no unnecessary shape or line, such as a pseudo 3d-bevel-border around ui elements. the underlying grid should be visible because all elements are aligned, not because it is drawn. only simple shapes are allowed, and everything should integrate seamlessly into the background of the&nbsp;panel.</p> <p>the second aspect about bauhaus is functionality. we want that, too, so without further philosophy, here is a use case example with the sharpen&nbsp;module:</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0011.jpg"><img alt="sharpen_0011" src="sharpen_0011_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0010.jpg"><img alt="sharpen_0010" src="sharpen_0010_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0009.jpg"><img alt="sharpen_0009" src="sharpen_0009_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0008.jpg"><img alt="sharpen_0008" src="sharpen_0008_thumb.jpg" /></a></span></span> </span></p> <p>the first image shows the unfocussed module, which presents itself as plain text and minimal equilateral triangles representing the slider positions. note that all borders and distances follow the same grid, the slider&#8217;s baseline is the text baseline, and everything uses the same&nbsp;font.</p> <p>these sliders operate as you would expect, by clicking/click dragging somewhere on the drawing area (you don&#8217;t need to hit the triangle). double click will reset to the default value. for further fine tuning, you can press the right mouse button, to expand a loupe mode, which will give you zoomed-in control over your value. the mouse will bend the light grey line and move the triangle in smaller steps as you move the mouse to the bottom of the area. this area is large enough to play around with the mouse while actually watching the resulting image, not the&nbsp;slider.</p> <p>the last image demonstrates the same functionality we already have in master. while the fine tuning area is expanded, you can just start typing a desired number and press enter to accept&nbsp;it.</p> <p>so why do we need a new slider you may ask. it&#8217;s not about the slider. it&#8217;s about unifying the interface, both in design and in functionality. to illustrate what i mean, here goes another example, a combobox this&nbsp;time:</p> <p><span style="display: table-row;"> <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0007.jpg"><img alt="sharpen_0007" src="sharpen_0007_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0006.jpg"><img alt="sharpen_0006" src="sharpen_0006_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0005.jpg"><img alt="sharpen_0005" src="sharpen_0005_thumb.jpg" /></a></span></span> &nbsp; <span style="display: table-cell"><span><a href="https://www.darktable.org/2012/03/bauhaus-widgets/sharpen_0012.jpg"><img alt="sharpen_0012" src="sharpen_0012_thumb.jpg" /></a></span></span> </span></p> <p>one more thing to note about functionality is the included label. this way translations can vary in length wildly, and there is no need for an additional separation line in between label and the widget&nbsp;itself.</p> <p>this combobox not only looks much the same as the slider, it also works much the same way as the slider does. mouse wheel works for increment/decrement, (right, here also left)-click opens the popup (which is actually the same gdkwindow in the code), and typing will work, too. here it creates a filter and only shows you entries which start with the string you typed. pressing enter will accept the top entry in the&nbsp;list.</p> <p>these are no mockups, you can have a fully functional test run by checking out the bauhaus&nbsp;branch.</p><img src="https://www.darktable.org/2012/03/bauhaus-widgets/fibonacci.jpg" class="hidden-lede">joFri, 02 Mar 2012 03:48:49 +0000tag:www.darktable.org,2012-03-02:2012/03/bauhaus-widgets/developmentString freeze for darktable 1.0https://www.darktable.org/2012/02/string-freeze-for-darktable-1-0/<p>We are in string freeze for the master branch now. Translators might now update their translations for the upcoming release&nbsp;of</p> <h2>darktable&nbsp;1.0</h2> <p>There will be tons of new features, stay&nbsp;tuned!</p> <p>If you&#8217;re willing to help getting this out of the door soon you might want to install the development version and help out to track down some bugs. You can find an installation guide <a href="https://www.darktable.org/install/#git-version">here</a> and some informations for contributing backtraces for bugs <a href="https://www.darktable.org/development/">here</a>.</p><img src="https://www.darktable.org/2012/02/string-freeze-for-darktable-1-0/string_freeze.jpg" class="hidden-lede">smnSun, 19 Feb 2012 01:13:43 +0000tag:www.darktable.org,2012-02-19:2012/02/string-freeze-for-darktable-1-0/announcementShadow recovery revisitedhttps://www.darktable.org/2012/02/shadow-recovery-revisited/<p>One of the remaining shortcomings of digital cameras is their rather low dynamic range in comparison to analog&nbsp;– especially black-and-white&nbsp;– film. Scenes with strong differences between highlights and shadows are very difficult to capture. Even if they are exposed properly with no blown-out highlights they will too often only give acceptable results after extensive&nbsp;post-processing.</p> <p>Fortunately, darktable is progressing with a high pace. Some days ago I wrote an article on how to recover shadows with a technique using lowpass filter plus blend mode (&#8220;<a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/"><span>Using lowpass filter to recover shadows</span></a>&#8220;). In between a new, even better module called “shadows and highlights” was integrated into darktable, that obsoletes this&nbsp;technique.</p> <p>As the name implies the new module serves to improve images by lightening shadows and darkening highlights. It’s at the same time more powerful and more convenient to use than the lowpass/blend&nbsp;approach.</p> <p>The module offers four sliders to control the effect. Sliders “shadows” and “highlights” determine the strength of adjustments and go from zero (no effect) to a maximum of 200%. The latter is roughly equivalent to a four times stronger lightening/darkening as the old method. “Radius” has a similar meaning as in lowpass/blend; it controls the spatial extent of the effect. The fourth parameter “compress” determines in how far the effects are concentrated to the extreme shadows and highlights. It goes from zero (low separation of the effects and strong side effects on mid tones) to 100% (only the outmost dark and light areas are affected, no side effects on mid&nbsp;tones).</p> <p>Let’s look at a typical picture as an&nbsp;example.</p> <p><span><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/sh-img1.sm_.jpg"><img alt="sh-img1.sm_" src="sh-img1.sm__thumb.jpg" /></a></span></p> <p>This one was taken from inside an old barn located in a museum village in Bavaria. A typical high dynamic range situation: the outside is in bright sunlight, the interior only lighted by the open barn door. I did have no time, tripod and temper to do a proper multi-shot approach, which could give rise to process the scene with <span class="caps">DRI</span> (dynamic range increase). Instead I made only one shot&nbsp;– “exposing to the right” for the outside, sun-lit wall. As a consequence parts of the interiors of the barn remain pitch black. Even worse, in the end the mid tones would require a slight contrast boost, which would drive even more parts into the&nbsp;dark…</p> <p>So, let&#8217;s use “shadows and highlights”. In order to optimize the settings I started with rather extreme values: “shadows” set to its maximum, “compress” to 100%, “radius” left as it is. “highlights” is set to zero, as I don’t need any highlights correction here. The combination of high shadow correction and high compression leads to an effect limited to the very extreme dark parts, which is not visible. Starting from here, let’s now see what happens when we reduce “compress”. The lightening of shadows will progressively extend from the darkest spots into the middle grays. After playing around a bit, somehow reducing the “shadows” parameters a bit, I ended with: “shadows” = 170, “highlights” = 0, “radius” = 100, “compress” =&nbsp;60.</p> <p><span><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/sh-img2.sm_.jpg"><img alt="sh-img2.sm_" src="sh-img2.sm__thumb.jpg" /></a></span></p> <p>The result is already quite good. The doorway and the inner walls of the barn are much more defined and the inner side of the barn door shows structure as well. In many cases we could leave it like that. However, the result is a little bit too hefty; the image looks somewhat&nbsp;surreal.</p> <p>What could we do to reduce the strength of the effect? We can easily tune down the exaggerated nature by blending the result with the original image (blend mode “normal”). Here are the&nbsp;parameters:</p> <p><span><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/sh-parameters.jpeg"><img alt="sh-parameters" src="sh-parameters_thumb.jpeg" /></a></span></p> <p>And here is the final image. In this case I was even able to give some more contrast to the image (medium S-like curve to L-channel in module “tone curve”), without driving too much of the dark grays back into the&nbsp;dark.</p> <p><span><a href="https://www.darktable.org/2012/02/shadow-recovery-revisited/sh-img3.sm_.jpg"><img alt="sh-img3.sm_" src="sh-img3.sm__thumb.jpg" /></a></span></p> <p>Taking the technical limitations into account, the result is not too bad. Still it’s miles away from the quality that (since decades) could have been reached with a view camera on analog b&amp;w film. Digital cameras still have a long way to&nbsp;go.</p><img src="https://www.darktable.org/2012/02/shadow-recovery-revisited/sh-thumb.sm_.jpg" class="hidden-lede">upegelowFri, 17 Feb 2012 20:21:49 +0000tag:www.darktable.org,2012-02-17:2012/02/shadow-recovery-revisited/blogdevelopmentdarktablehighlightsshadow recoverytutorialUsing lowpass filter to recover shadowshttps://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/<p>Outdoor photographers are often confronted with unfavorable light conditions. This often entails too high contrast. Two of the most frequent consequences are blown highlights and deep shadows in your digital images. Overexposed highlights are challenging to repair in digital post post-processing, still darktable offers a decent set of valuable tools as long as you take your pictures in raw (see Jo&#8217;s blog post &#8220;<a href="https://www.darktable.org/2012/02/why-you-want-raw/"><span>why you want raw</span></a>&#8220;). Fortunately, it’s much easier to take care of the deep&nbsp;shadows.</p> <p>When talking about deep shadows I not only refer to almost pitch black parts of the image. Even if an important part of the picture is considerably too dark, the photo will miss to catch the interest of the viewer. So it’s worth a try to recover shadows in many&nbsp;cases.</p> <p>Let’s have a look at an example. Here is a detail photo taken at a retired blast furnace in Duisburg, Germany. Although the light was soft that day and the overall contrast was not very harsh, I am missing something. Somehow the more retracted parts of the structure obviously got too less light and are hiding a bit in the (not overly) dark shadows. So shadow recovery could make sense&nbsp;here.</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/lp-original.jpg"><img alt="lp-original" src="lp-original_thumb.jpg" /></a></span></p> <p>A simplistic way to recover shadows would use the “tone curve” module and apply an inverse S-curve to the L-channel. This does the job for the shadows but sacrifices contrast in the higher tones, often leaving the image flat and&nbsp;unappealing.</p> <p>A better suited technique makes use of blend modes. It is especially a blend mode called “overlay” that comes in&nbsp;place.</p> <p>A few words about how darktable’s blend modes work in general. Image processing in darktable consists of a consecution of filters, called modules. They are processed in a pre-defined sequence. Each filter/module will take the output of the previous filter as its input and generate a newly processed image as its output. Now in addition many of our modules allow activating blend mode operations (click checkbox at the end of the module parameters). darktable will then take the input of the module and its output and re-process those two depending on the selected blend mode and opacity, before giving the final result to the next module. Think of it as a doublet of image layers, the input image is the underlying layer and the processed image is the upper layer. If opacity is zero, it’s like the module has no effect at all; output of the module is identical to the underlying original layer. If opacity is set to 100%, you get the maximum effect of mixing the two layers with the selected blend&nbsp;mode.</p> <p>Blend mode “overlay” is able to darken or lighten the underlying layer based on the upper layer. In places where the upper layer is of a middle gray tone, it has no effect. Where the upper layer shows a darker gray, the original image will be darkened, where it is of a lighter gray, the original image will be&nbsp;lightened.</p> <p>A naïve approach to recover shadows would be: take a de-saturated and inverted upper layer over the original image and apply it with module “overlay”. However and surprisingly, this fails completely (you might try it for yourself). What we need additionally is a strong blurring of the upper layer. That blurring will only affect the transition areas between image parts where we do lightening and darkening. It will not have any deteriorating effect on the sharpness of the&nbsp;image!</p> <p>How do you get a layer with this strong blur? That’s what module “lowpass” in the effects group is for. It allows giving a Gaussian blur to an image with a speed-efficient algorithm. You control the extent of blur with parameter “radius”, the higher “radius” the stronger the blur. In addition two further parameters are offered: “contrast” allows a gradual move from a positive (+1) to a negative (-1), i.e. inverted image (the latter is what we need here). Parameter “saturation” controls color saturation: +1 means unaltered, 0 means completely de-saturated, -1 means inverted colors. You can even go beyond +/- 1 to over-saturate the image. For the purpose of shadow recovery you would start&nbsp;with:</p> <div class="highlight"><pre>Radius = 50 Contrast = -1 Saturation = 0 </pre></div> <p>Applying the above parameters to darktable will give the following intermediate&nbsp;result:</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/lp-mask.jpg"><img alt="lp-mask" src="lp-mask_thumb.jpg" /></a></span></p> <p>Not very useful in itself, but let’s now activate blend mode “overlay” and play with the opacity slider. I felt than an opacity value of about 90% is best suited in my&nbsp;case.</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/sr-lowpass.jpeg"><img alt="sr-lowpass" src="sr-lowpass_thumb.jpeg" /></a></span></p> <p>Here is the result after shadow&nbsp;recovery:</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/lp-intermediate.jpg"><img alt="lp-intermediate" src="lp-intermediate_thumb.jpg" /></a></span></p> <p>The image shows much more detail in areas that were somehow weak and unappealing in the original image. Sometimes you might observe halo-effects if edges have a high tonal contrast. In that case try to reduce the blur radius a&nbsp;bit.</p> <p>To give the photo its final snap, I added some additional contrast via an S-like L-curve and some color contrast in the blues and yellows via a steep S-like b-curve (see blog post &#8220;<a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/"><span>Mastering color with Lab tone curves</span></a>&#8220;).</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/sr-tonecurve.jpeg"><img alt="sr-tonecurve" src="sr-tonecurve_thumb.jpeg" /></a></span></p> <p>Increasing tonal contrast with the L-curve sacrifices some of the previously recovered shadows, but in the end it gives a more convincing overall&nbsp;result.</p> <p>Here is the final&nbsp;output:</p> <p><span><a href="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/lp-final.jpg"><img alt="lp-final" src="lp-final_thumb.jpg" /></a></span></p> <p>If you like, you may play around with module “lowpass”. You could try different combinations of lowpass parameters (radius, contrast, saturation) with different blend modes and opacity values. Many combinations will give interesting and reasonable&nbsp;– albeit difficult to predict&nbsp;– effects to an&nbsp;image.</p><img src="https://www.darktable.org/2012/02/using-lowpass-filter-to-recover-shadows/lp-thumb.jpg" class="hidden-lede">upegelowMon, 13 Feb 2012 19:50:28 +0000tag:www.darktable.org,2012-02-13:2012/02/using-lowpass-filter-to-recover-shadows/blogdevelopmentdarktablehighlightslowpassshadow recoverytone curvestutorialMastering color with Lab tone curveshttps://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/<h2>or “How to bring the jungle&nbsp;back”</h2> <p>Since its early beginnings darktable has a tone curve module that is able to alter the gray level distribution of an image. Recently we did an enhancement: tone curve is now able to control the full Lab color space with separate curves for the L, a and b channel. People who are used to curve tools in <span class="caps">RGB</span>, at first might get puzzled over the results of these three curves; they show marked differences to the typical <span class="caps">RGB</span> curve. Especially a and b channels need to be dealt with in the right way; not doing so will give you strong off-colors. To spare you frustration here are some explanations and&nbsp;examples.</p> <p>First a few words about Lab color space in general. Colors in this system are described by three parameters. Channel L stands for the lightness of the color and goes from 0 (black) to 100 (white). Channel a goes from -128 (green) to +128 (red) and channel b from -128 (blue) to +128 (yellow). All neutral gray colors have a = 0 and b = 0. For more explanations visit <a href="https://en.wikipedia.org/wiki/CIE_Lab">https://en.wikipedia.org/wiki/CIE_Lab</a>. It might sound surprising, but with these three values L, a and b you can describe all visible colors, and even invisible ones. In fact colors as recorded by a digital camera will by far not use the full range of possible a and b values. If we would generate a histogram of a typical color image, channels a and b would only cover a narrow range (maybe ±30) around the&nbsp;center.</p> <p>Now, how can we make use of curves in Lab color space? Adjusting channel L is like adjusting the gray value (a sum of R, G and B) in <span class="caps">RGB</span>. Giving the L channel an S-like curve will enhance overall contrast of the image. In the steeper parts of the curve, tonal values get more separated. In the flat part of the curve, tonal values get more compressed. An S-like curve will therefore typically bring together the very dark and very light values, respectively, and extend the middle gray values. In the end this will allow for better differentiation in the middle grays, and that&#8217;s what we as humans see as a more contrasty, detailed image. In darktable&#8217;s standard settings of module “tone curve”, a checkbox is activated that reads “autoscale Lab chroma values according to L”. In this mode you are only offered to modify the L channel. Chroma values&nbsp;– i.e. a and b channels&nbsp;– will receive some automatic scaling to keep the overall impression of color saturation constant, but you can not actively modify them. If you only plan to do some optimization of tonal values, you don&#8217;t need to go&nbsp;further.</p> <p>However, if you want to optimize colors, deactivate the aforementioned checkbox and you are presented with additional curves for the a and b channels. These two channels do not describe lightness but contain pure color information. Changing them with curves can alter the overall tint of the image or change saturation and color contrast. It can bring similar colors further apart or different colors closer&nbsp;together.</p> <p>Let&#8217;s have a closer look at an example. [side remark: when you look at this and the following images and ask yourself “what the hell is he talking about”, chances are high you are viewing them with an uncalibrated monitor. In that case all colors can be way off, especially in terms of saturation. For any serious color work or even to follow these examples you will need to get your monitor&nbsp;profiled.]</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild0.sm_.jpg"><img alt="tc2-bild0.sm_" src="tc2-bild0.sm__thumb.jpg" /></a></span></p> <p>This photo was taken at a small canyon in the lush green forests of the island of Madeira. I was heavily impressed by the abundant vegetation; and that&#8217;s what I wanted to show. The person on the bridge was meant to act as a size reference and bring some color counterpoint to the image. However with the standard settings (I only added highlight reconstruction and a slight change of exposure value) the red is so strong and the green is so weak, that all focus lies on the person wearing a red anorak, certainly not what I intended. We could now simply increase overall saturation using module “color correction”. However, this would even further exaggerate the&nbsp;reds.</p> <p>Using module tone curve my focus lies on the slope of the a-channel (green-red): I made it steep on the left side and flat on the right. As a result this increases saturation of the greens and keeps the reds under control. You might wonder about the outer wings of the curve, which have a slope just about the opposite of what just said. Well, these outer wings really don&#8217;t play a role. As said previously, in reality only moderate values of a and b will occur in a photographic&nbsp;image.</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild1-Lab.jpg"><img alt="tc2-bild1-Lab" src="tc2-bild1-Lab_thumb.jpg" /></a></span></p> <p>Here is the result of my&nbsp;changes:</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild1.sm_.jpg"><img alt="tc2-bild1.sm_" src="tc2-bild1.sm__thumb.jpg" /></a></span></p> <p><span class="caps">OK</span>, the green is now more visible and the red is better under control. Still the image lacks something convincing to turn the green into a real jungle. In fact all “greens” are more or less the same here. That&#8217;s not the case for green foliage in reality. Leaves show all kinds of variations, from a more yellowish green to a more blueish green. If that&#8217;s the case, why not enhance the blue-yellow differentiation? We can do this by giving the b channel a very steep S-like&nbsp;curve:</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild2-b.jpg"><img alt="tc2-bild2-b" src="tc2-bild2-b_thumb.jpg" /></a></span></p> <p>Here is the final result. Quite convincing and close to what I felt, when I made the&nbsp;shot.</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild2.sm_.jpg"><img alt="tc2-bild2.sm_" src="tc2-bild2.sm__thumb.jpg" /></a></span></p> <p>In the previous exercise I payed extra attention to not move the a and b curve out of the center of the diagram. Any move of that center node would give a color tint to the whole image. Not a good idea if the white balance of my picture is already&nbsp;good.</p> <p>Now comes a second example. This time I will deliberately change the color tint. The photo was taken on a very cold evening in Düsseldorf, Germany. We had several days of frost, and it was just possible to risk first steps on the virgin ice surface to take the picture. Module “equalizer” gave some clarity to the&nbsp;image.</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild3.sm_.jpg"><img alt="tc2-bild3.sm_" src="tc2-bild3.sm__thumb.jpg" /></a></span></p> <p>Admittedly the result is probably a quite realistic representation of the light situation at that day, but it&#8217;s not what I wanted to express. I was experiencing an intensely colored sky, reflecting on an untouched ice surface. And it was really cold (at least for Düsseldorf conditions). For me coldness translates into more blueish colors, and yes, these should be visible in the&nbsp;image.</p> <p>I applied the following&nbsp;curves.</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild4-Lab.jpg"><img alt="tc2-bild4-Lab" src="tc2-bild4-Lab_thumb.jpg" /></a></span></p> <p>Both a and b curves show a steep profile to increase color saturation. In addition I shifted the center node of the b-curve only a little bit down, moving the overall color tint to&nbsp;blue.</p> <p><span><a href="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-bild4.sm_.jpg"><img alt="tc2-bild4.sm_" src="tc2-bild4.sm__thumb.jpg" /></a></span></p> <p>Stark colors, not overly realistic, but that&#8217;s what I experienced that&nbsp;evening.</p> <p>For further reading on using Lab color space to optimize your images, I strongly recommend Dan Margulis textbook “Photoshop <span class="caps">LAB</span> color: The Canyon Conundrum” (Peachpit Press 2006). It puts a heavy focus on Photoshop, but the basic principles also apply to&nbsp;darktable.</p><img src="https://www.darktable.org/2012/02/mastering-color-with-lab-tone-curves/tc2-thumbnail.sm_.jpg" class="hidden-lede">upegelowSun, 12 Feb 2012 14:38:25 +0000tag:www.darktable.org,2012-02-12:2012/02/mastering-color-with-lab-tone-curves/blogdevelopmentcolordarktableLabsaturationtone curvestutorialwhy you want rawhttps://www.darktable.org/2012/02/why-you-want-raw/<h2>or: how to rescue your shot after the&nbsp;fact.</h2> <h2>also: how to use color zones for black and&nbsp;white.</h2> <p>sometimes i&#8217;m surprised by what kind of data is hidden in my raw images, and i want to pass this on to those of our users who happily take pictures in jpg. actually it&#8217;s just a short story about a typical communication problem between me and my camera and the way darktable moderates that, after the&nbsp;fact.</p> <p>this time, it was the auto exposure measurement. for some reason my camera thought the people in the foreground were pretty important here. this is the embedded jpg thumbnail as it came from the&nbsp;camera:</p> <p><span><a href="https://www.darktable.org/2012/02/why-you-want-raw/00-from-cam.jpg"><img alt="00-from-cam" src="00-from-cam_thumb.jpg" /></a></span></p> <p>what i actually meant was more like&nbsp;this:</p> <p><span><a href="https://www.darktable.org/2012/02/why-you-want-raw/00-output.jpg"><img alt="00-output" src="00-output_thumb.jpg" /></a></span></p> <p>small persons in a wide mountain range with a nice cloudy sky. which is totally