Київський клуб аматорів астрономії "Астрополіс"

astromagazin.net
* *
Ласкаво просимо, Гість. Будь ласка, увійдіть або зареєструйтеся.
27 Листопада 2024, 01:01:58

Увійти

google


Автор Тема: Что в «Image Statistics» в Fitswork'е?  (Прочитано 2709 раз)

0 Користувачів і 1 Гість дивляться цю тему.

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #40 : 13 Грудня 2016, 18:37:00 »
. - .

Соглашусь с тем, что был бы доступ к исходнику, было бы проще, а так приходится выискивать в интернетах какие-то примеры рав-ов.

Что такое @-значения пока не понятно.
Уже разобрались:
Вот эта @-коордионата что может означать?
Это две координаты - X,Y.

По умолчанию Fitswork показывает значения для 16 бит. Если нужно работать в «родной» битности raw-файла, то следует отметить опцию «Dont RGB Scale not Debayered Raw Images».
После того как Fitswork что-то прочитал (в любой битности) он, крайне вероятно, работает с вещественными/рациональными числами, т.е. с floating point. Судя по тому, как легко ему даются отрицательные значения и математика над пикселями с плавающей точкой, а также по использованию чисел с запятой в окне гистограммы. При подобном подходе происхождение и битность данных не играют особой роли. Сохранение в файл - отдельная тема.

Что и как грузит фитсворк на примере рав-ов отсюда: http://www.mannyphoto.com/D700D3/

_DSC4178.NEF
Код: (Fitswork Dont Scale = ON:) [Select]
size: 4284x2844  G: @ 2840,1575 = 478    R: @ 2830,1180 = 1081    B: @ 3555,1501 = 500    *: @ 0, 2843 = 0     *: @ 2, 2843 = 1
Код: (Fitswork Dont Scale = OFF:) [Select]
size: 4284x2844  G: @ 2840,1575 = 7649   R: @ 2830,1180 = 30072   B: @ 3555,1501 = 12815  *: @ 0, 2843 = -300  *: @ 2, 2843 = 16
Код: (dcraw.exe -v -d -4 -T -D:) [Select]
size: 4288x2844  G: @ 2840+2,1575 = 478  R: @ 2830+2,1180 = 1081  B: @ 3555+2,1501 = 500  *: @ 0+2, 2843 = 0   *: @ 2+2, 2843 = 1
Код: (dcraw.exe -v -d -4 -T -w:) [Select]
size: 4284x2844  G: @ 2840,1575 = 7649   R: @ 2830,1180 = 30072   B: @ 3555,1501 = 12815  *: @ 0, 2843 = 0     *: @ 2, 2843 = 16

Также:
dcraw.exe -v -d -4 -T -w ...
 Scaling with darkness 0, saturation 4095, and
 multipliers 1.738281  1.000000 1.601563 1.000000

K = {G,R,B}OFF/{G,R,B}ON = {G,R,B}-w/{G,R,B}-D }:
Kg = 16.00 (/16 = 1)
Kr = 27.81 (/16 = 1.73)
Kb = 25.63 (/16 = 1.60)

"Dont RGB scale = OFF" выполняет операцию "Баланс Белого" с использованием "данных из камеры", аналогично опции dcraw -w - Use camera white balance, if possible:
exiftool(-k).exe _DSC4178.NEF:
 White Balance  : Auto
 Red Balance    : 1.738281
 Blue Balance   : 1.601563

Т.е., к вопросу о сложении кадров со случайным К масштабирования. Если забыть/забить на выставление фиксированного ББ (мы же чай не пальцем деланы, работаем с RAW 8)):
exiftool(-k).exe _DSC4206.NEF:
 White Balance  : Auto
 Blue Balance   : 1.609375 shit
 Red Balance    : 1.6875 shit


Зарезервирую место к вопросу об отрицательных. :)
« Останнє редагування: 14 Грудня 2016, 00:26:38 від Yvk »
Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #41 : 13 Грудня 2016, 23:21:45 »
. - .

Что такое "-E" в dcraw?
Записаний

Олег Малий

  • Offline Offline
  • Повідомлень: 2551
  • Подяк: 604
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #42 : 13 Грудня 2016, 23:34:22 »
. - .

astronom@ubuntu:~$ dcraw

Raw photo decoder "dcraw" v9.27
by Dave Coffin, dcoffin a cybercom o net

Usage:  dcraw [OPTION]... [FILE]...

-v        Print verbose messages
-c        Write image data to standard output
-e        Extract embedded thumbnail image
-i        Identify files without decoding them
-i -v     Identify files and show metadata
-z        Change file dates to camera timestamp
-w        Use camera white balance, if possible
-a        Average the whole image for white balance
-A <x y w h> Average a grey box for white balance
-r <r g b g> Set custom white balance
+M/-M     Use/don't use an embedded color matrix
-C <r b>  Correct chromatic aberration
-P <file> Fix the dead pixels listed in this file
-K <file> Subtract dark frame (16-bit raw PGM)
-k <num>  Set the darkness level
-S <num>  Set the saturation level
-n <num>  Set threshold for wavelet denoising
-H [0-9]  Highlight mode (0=clip, 1=unclip, 2=blend, 3+=rebuild)
-t [0-7]  Flip image (0=none, 3=180, 5=90CCW, 6=90CW)
-o [0-6]  Output colorspace (raw,sRGB,Adobe,Wide,ProPhoto,XYZ,ACES)
-o <file> Apply output ICC profile from file
-p <file> Apply camera ICC profile from file or "embed"
-d        Document mode (no color, no interpolation)
-D        Document mode without scaling (totally raw)
-j        Don't stretch or rotate raw pixels
-W        Don't automatically brighten the image
-b <num>  Adjust brightness (default = 1.0)
-g <p ts> Set custom gamma curve (default = 2.222 4.5)
-q [0-3]  Set the interpolation quality
-h        Half-size color image (twice as fast as "-q 0")
-f        Interpolate RGGB as four colors
-m <num>  Apply a 3x3 median filter to R-G and B-G
-s [0..N-1] Select one raw image or "all" from each file
-6        Write 16-bit instead of 8-bit
-4        Linear 16-bit, same as "-6 -W -g 1 1"
-T        Write TIFF instead of PPM
« Останнє редагування: 13 Грудня 2016, 23:48:16 від Олег Малий »
Записаний

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #43 : 14 Грудня 2016, 00:02:21 »
. - .

Сам нашел:
http://www.cybercom.net/~dcoffin/dcraw/dcraw.1.html
Цитувати
INTERPOLATION OPTIONS
-d
Show the raw data as a grayscale image with no interpolation. Good for photographing black-and-white documents.

-D
Same as -d, but with the original unscaled pixel values.

-E
Same as -D, but masked pixels are not cropped.

Указанное сочетание -d -D и -E  звучит несколько сомнительно.
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #44 : 14 Грудня 2016, 01:55:41 »
. - .

dcraw -w -D -d -6 -W -T -E my.nef
-w конфликтует с -D.
После white balance Raw уже не Raw. С опцией "Dont RGB Scale=OFF" фитсворк выполняет балансировку.

Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #45 : 14 Грудня 2016, 02:35:24 »
. - .

Уровень черного есть в EXIF-e Raw-ов:

http://www.cloudynights.com/topic/448511-nikon-d5300-dark-frames/
exiftool(-k).exe D5300_ISO400_10min.NEF:
 Black Level     : 600 600 600 600

Записаний

Олег Малий

  • Offline Offline
  • Повідомлень: 2551
  • Подяк: 604
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #46 : 14 Грудня 2016, 12:25:58 »
. - .

Прилагаю сравнительное изображение, которое наглядно демонстрирует пользу вычитания кадров offset из кадров dark.
Левая часть изображения - оригинальный dark, а правая часть - результат (dark - offset):
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #47 : 14 Грудня 2016, 12:51:05 »
. - .

По параметрам dcraw нужно учитывать, то Fitswork получает данные без преобразования в файловый формат, например tiff, где статистика «выравнивается».

Дело не только в формате файла. В коде dcraw есть такие строчки:
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define LIM(x,min,max) MAX(min,MIN(x,max))
#define CLIP(x) LIM((int)(x),0,65535)
...
void CLASS scale_colors()
  ...
  val -= cblack[i & 3];
  val *= scale_mul[i & 3];
  ((ushort *)image) = CLIP(val); // -- зарубить до диапазона 0..65535


Отсюда вполне следует, что автор dcrawfw.dll взял код dcraw, как минимум, внёс в него какие-то изменения чтобы избежать обрезания отрицательных значений и сделав несколько своих интерфейсных функций перекомпилировал в виде dll.

Вообще говоря, код dcraw это то, что называется write-only (to say the least). Разобраться в нём способен только автор. :help: Что не исключает, конечно, подхода: работает? -используй и не трогай!   :gigi:
« Останнє редагування: 14 Грудня 2016, 13:05:53 від Yvk »
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #48 : 14 Грудня 2016, 14:32:16 »
. - .

Конечно, мы можем предположить, что автор Fitswork внес изменения в библиотеку. Но мне кажется, что всё немного проще. Программа написана на Delphi, где так просто не подключишь исходник dcraw. Поэтому он использовал компилятор Visual Studio 2010 чтобы и получить нужный dll. Использовался dcraw v9.27. В dcraw разобраться действительно сложно и что-то я сомневаюсь, то автор Fitswork будет вносить такие специфичные правки. Ему наоборот, проще было оставить всё как есть, чтобы избежать вопросов, почему его версия конвертера отличается от общедоступной.

Как это проверить? Например получить через dcraw из nef-файла pgm-файл. Потом сконвертировать его в fits через какую-то утилиту и уже скормить Fitswork. Но здесь мы опять можем столкнуться с тем, что при конвертации pgm в fits не происходит «выравнивание минуса».

Вы согласны с тем, что макрос CLIP приводит числа в диапазон 0..65535? Как получить отрицательные числа ничего не корректируя и не дописывая?

Манипуляция с pgm ничего не даст, этот формат заточен под 0..65535:
http://netpbm.sourceforge.net/doc/pgm.html
Записаний

Yvk

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 4931
  • Подяк: 476
    • Не адмін на деякий час
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #49 : 14 Грудня 2016, 16:34:23 »
. - .

Уровень черного есть в EXIF-e Raw-ов:
http://www.cloudynights.com/topic/448511-nikon-d5300-dark-frames/
exiftool(-k).exe D5300_ISO400_10min.NEF:
Black Level     : 600 600 600 600

Сравнение загрузки в фитсворк и выхлопа dcraw:
  ImageDCR = dcraw.exe -v -d -4 -T -D  D5300_ISO400_10min.NEF -> D5300_ISO400_10min.TIFF 
  ImageDCR -> Fitswork
  ImageFTW = D5300_ISO400_10min.NEF -> Fitswork with "Dont RGB Scale" = ON

  Fitswork: ImageFTW: Pixel Arithmetics/Add Value/ Black Level -> ImageFTW_2
  Fitswork: ImageFTW_2: Subtract Image/ ImageDCR -> ImageFTW_sub
  Fitswork: ImageFTW_sub: Statistics -> Mean=0,Variance=0,Std.Dev=0,Min=0,Max=0
- c точностью до уровня черного с включёной опцией  "Dont RGB Scale".

Сравнение загрузки в MaximDL и выхлопа dcraw:
  ImageDCR -> MaximDL
  ImageMDL = D5300_ISO400_10min.NEF -> MaximDL

  MaximDL: ImageMDL: Pixel Math/ Subtract A-B: A<-ImageMDL, B<-ImageDCR -> ImageMDL_sub
  MaximDL: ImageMDL_sub: Information -> Min=0,Max=0,Average=0,Std.Dev=0
- 1 в 1.

Имхо, в который раз: грузить рав-ы в фитсворк с включенной опцией "Dont RGB Scale", ощущать нирвану.  -300 не нужен - это баг, глюк, забыли переменную инициализировать, хотели как лучше - получилось как всегда.
Ну или смотреть на проблему -300, как на спорт - окей. ;D

Не видя исходника Fitswork можно только гадать. Да и по dcraw всё не так просто. Откуда вы знаете, что после CLIP не производится дополнительных коррекций? Может там вообще срабатывает условие if (!(val = ((ushort *)image))) continue; и до CLIP дело не доходит. Или обилие функций вроде panasonic_, canon_, minolta_ и т.п. говорит о том, что что-то ещё выполняется. Честно говоря, нет желания заниматься разбором dcraw. Слишком много кода требует много времени...
Гадать можно по разному. Например, можно гадать про встречу динозавра на улице, шансы 50/50, либо встретится, либо нет. Я долго смотрел на код dcraw. Но не то чтобы знаю, а, посмотрев, пишу с вероятностью 0.995, что динозавр не встретится, т.е. что автор фитсворк-а вносил изменения в код работающий с пикселями, взятый у автора dcraw.
Условие if( !(val позволяет сэкономить для _нулевых пикселей_ на отнимании уровня черного (значение станет отрицательным), умножения на коэффициент балансировки канала (одного из RGB, значение по прежнему отрицательное) и на CLIP-ании значения обратно в 0 - как бы незачем греть процессор чтобы априори получить из 0 снова 0.
Функции panasonic_, canon_, minolta_ вызываются раньше scale_colors() через указатель: (*load_raw)(), точнее одна из них, после того как указатель проинициализируется весёлой функцией identify(). :)

« Останнє редагування: 14 Грудня 2016, 16:42:21 від Yvk »
Записаний

Олег Малий

  • Offline Offline
  • Повідомлень: 2551
  • Подяк: 604
Re: Что в «Image Statistics» в Fitswork'е?
« Відповідь #50 : 14 Грудня 2016, 22:32:20 »
. - .

Прилагаю сравнительное изображение, которое наглядно демонстрирует пользу вычитания кадров offset из кадров dark.
Левая часть изображения - оригинальный dark, а правая часть - результат (dark - offset):

Цвета уже после интерполяции?
open "file:///home/astronom/Downloads/dark.nef"
Reading 1 file(s):
/home/astronom/Downloads/dark.nef

Timestamp: Wed Nov 23 21:56:14 2016
Camera: Nikon D5100
ISO speed: 3200
Shutter: 30.0 sec
Aperture: f/0.0
Focal length: 0.0 mm
Embedded ICC profile: no
Number of raw images: 1
Thumb size:  4928 x 3264
Full size:   4992 x 3280
Image size:  4948 x 3280
Output size: 4948 x 3280
Raw colors: 3
Filter pattern: RG/GB
Daylight multipliers: 2.098821 0.925441 1.126505
Camera multipliers: 469.000000 256.000000 519.000000 256.000000

Invoking: dcraw -4 -o 0 -w -q 1
Decoding Nikon D5100 file (4948x3280 pixels, ISO=3200, Exposure=30.00s): done
Loading raw image: done
Записаний