Project

General

Profile

Camera Support #11888

noise profile for Nikon D850

Added by Neil Schemenauer 24 days ago. Updated 17 days ago.

Status:
New
Priority:
Low
Assignee:
-
Category:
-
Target version:
-
Start date:
12/30/2017
Due date:
% Done:

0%

Affected Version:
2.4.0

Description

There doesn't seem to be a noise profile for the D850 in Darktable
yet. I followed the instructions on the "profiling sensor and
photon noise" page. The scripts warned me about the images not
being under-exposed. However, I exposed at EV compensation -1.0 and
used the highest contrast scene I could devise. The curves look
reasonable I think and I've tested them on some of my photos. The
result looks good to me, unlike the generic profile (much too
strong).

dt-noiseprofile-20171229.tar.gz (7.23 MB) Neil Schemenauer, 12/30/2017 04:09 AM

dt-noiseprofile-20171230.tar.gz (5.74 MB) Neil Schemenauer, 12/30/2017 08:11 PM

NS1_0599.JPG (1.77 MB) Neil Schemenauer, 01/06/2018 02:08 AM

NS1_0599.NEF - Image taken with lens cap on. (34.5 MB) Neil Schemenauer, 01/06/2018 02:09 AM

History

#1 Updated by Neil Schemenauer 23 days ago

I re-did the calibration this morning, using a difference scene. It seemed to me that the denoise was a little too strong at lower ISOs. However, the newly generated presets look about the same. I used a wider range of ISOs so maybe these second ones are better.

Again I had to use -S as the script thinks my images are not under-exposed. Is it something to do with with how the camera sets the black point? Seems like the black point is raised.

Also, get_image_iso() had trouble with the "Lo" ISO settings, I had to add this line:

iso=$(echo "$iso" | perl -ne 'if (/(\d+)/) { print "$1"; exit }')

#2 Updated by Stefan Schöfegger 19 days ago

Please upload one test image which gives the not under-exposed error.

#3 Updated by Stefan Schöfegger 19 days ago

Please upload one test image (from 29.12) which gives the not under-exposed error.

#4 Updated by Neil Schemenauer 17 days ago

Attached is a photo I took with the lens cap on. So, definitely under-exposed. The check-image-correctness script still says it is not underexposed. I think there is a bug in the script or in ImageMagik. The output of the script is below.

$ sh -x ./check-image-correctness NS1_0599.NEF  NS1_0599.JPG 
+ set -e
+ basename ./check-image-correctness
+ scriptname=check-image-correctness
+ dirname ./check-image-correctness
+ cd .
+ pwd
+ scriptdir=/home/nas/pkg/darktable/tools/noise
+ . /home/nas/pkg/darktable/tools/noise/subr.sh
+ color_ok=$\033[32m
+ color_warning=$\033[33m
+ color_error=$\033[31m
+ color_reset=$\033[0m
+ set_sed_cmd
+ uname -s
+ sed=sed -r
+ orig_image=NS1_0599.NEF
+ jpeg_image=NS1_0599.JPG
+ echo ===> Check for required tools
===> Check for required tools
+ missing_tool=0
+ image_export_tools_installed
+ local missing_tool
+ missing_tool=0
+ echo --> Check for images export tools availability
--> Check for images export tools availability
+ tool_installed darktable-cli 
darktable-cli (shipped with darktable 1.1 and later) is required to
export RAW images to jpeg and PFM files. Please install this package and
re-run this script.
+ local tool message checked var
+ tool=darktable-cli
+ message=
darktable-cli (shipped with darktable 1.1 and later) is required to
export RAW images to jpeg and PFM files. Please install this package and
re-run this script.
+ echo darktable-cli
+ sed -r s/[^a-zA-Z0-9_]+/_/g
+ var=tool_darktable_cli
+ get_var tool_darktable_cli
+ eval echo ${var_tool_darktable_cli}
+ echo
+ checked=
+ [  = found ]
+ [  = not found ]
+ which darktable-cli
+ set_var tool_darktable_cli found
+ eval var_tool_darktable_cli="found" 
+ var_tool_darktable_cli=found
+ return 0
+ tool_installed convert 
ImageMagick is required to check input images correctness. Please
install this package and re-run this script.
+ local tool message checked var
+ tool=convert
+ message=
ImageMagick is required to check input images correctness. Please
install this package and re-run this script.
+ echo convert
+ sed -r s/[^a-zA-Z0-9_]+/_/g
+ var=tool_convert
+ get_var tool_convert
+ eval echo ${var_tool_convert}
+ echo
+ checked=
+ [  = found ]
+ [  = not found ]
+ which convert
+ set_var tool_convert found
+ eval var_tool_convert="found" 
+ var_tool_convert=found
+ return 0
+ convert --version
+ return 0
+ [ 0 = 1 ]
+ [ -z NS1_0599.JPG ]
+ check_exposure NS1_0599.NEF NS1_0599.JPG
+ local orig input inputdir over under ret convert_flags
+ orig=NS1_0599.NEF
+ input=NS1_0599.JPG
+ dirname NS1_0599.JPG
+ inputdir=.
+ ret=0
+ convert_flags=-define registry:temporary-path=./tmp -channel RGB -threshold 99% -separate -append
+ convert NS1_0599.JPG -define registry:temporary-path=./tmp -channel RGB -threshold 99% -separate -append -format %[mean] info:
+ cut -f1 -d.
convert-im6.q16: unable to get registry ID `cache:hosts' @ error/registry.c/GetImageRegistry/201.
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3945.
convert-im6.q16: width or height exceeds limit `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3802.
convert-im6.q16: unable to get registry ID `cache:hosts' @ error/registry.c/GetImageRegistry/201.
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3945.
+ over=7
+ [ 7 -a 7 -lt 80 ]
+ echo $\033[31m"NS1_0599.NEF" not over-exposed (7)$\033[0m
$"NS1_0599.NEF" not over-exposed (7)$
+ ret=1
+ convert NS1_0599.JPG -negate -define registry:temporary-path=./tmp -channel RGB -threshold 99% -separate -append -format %[mean] info:
+ cut -f1 -d.
convert-im6.q16: unable to get registry ID `cache:hosts' @ error/registry.c/GetImageRegistry/201.
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3945.
convert-im6.q16: width or height exceeds limit `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3802.
convert-im6.q16: unable to get registry ID `cache:hosts' @ error/registry.c/GetImageRegistry/201.
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `NS1_0599.JPG' @ error/cache.c/OpenPixelCache/3945.
+ under=3
+ [ 3 -a 3 -lt 80 ]
+ echo $\033[31m"NS1_0599.NEF" not under-exposed (3)$\033[0m
$"NS1_0599.NEF" not under-exposed (3)$
+ ret=1
+ return 1

#5 Updated by Neil Schemenauer 17 days ago

I did a bit more digging. The convert-im6.q16 is returning a value, just not in the format that the script expects. I get:

2.1681e-3150.8379930.837993

I don't know why the script uses the argument

-format '%[mean]'

rather than

-format '%[mean] '

If I use the latter, I get:

1.75858e-315 0.837993 0.837993

That would seem possible to parse with 'cut'. Using the 'test' command, you can't handle floating point values, only integers. I like Bourne shell programming quite a bit and do it often. However, it seems to me these scripts should be written in Python or some other more powerful scripting language.

BTW, I'm using Debian imagemagick 8:6.9.7.4+dfsg-11+deb9u1.

Also available in: Atom PDF