Camera market: итоги года

Готовлю релиз LibRaw 0.19, соответственно смотрю на списки камер. Предыдущий релиз был в декабре 16-го, то есть за примерно 15 месяцев:

  • Canon: 8 камер (и сегодня еще две, эти в подсчет не входят), две мыльницы, остальные - сменная оптика.
  • Fujifilm: 9 камер (из них одна анонсирована до отчетного периода, но появилась уже в нем; две - только на японский рынок)
  • Panasonic: 9 камер (точные даты анонсов не уточнял, что-то может быть и на фотокине показали и до декабря 16-го выпустить не успели т.е. частично ситуация может быть с фуджей). И еще 10-я, GH5s, в LibRaw 0.19 она не войдет.
  • А остальные все - кое-как:
    • Leica: 3
    • Nikon 3 (или 4, в одной вот сомневаюсь)
    • Olympus: 3
    • Pentax: 1
    • Sony: 4 (сегодняшний анонс не входит)

Ничего не хочу сказать этим списком, додумывайте сами :)

P.S. Это все про камеры с RAW. Камеры без оного в наши списки не входят.

Comments

Добрый день
Пользуясь случаем хочу сообщить об одном баге, возникшем еще в dcraw, за который пламенный привет Дейву, соответственно в libraw он тоже цветет и пахнет. Все никак руки не доходили написать.
Суть следующая:
Когда считываем цветовые матрицы и забираем их в cm, а происходит это так:
    case 50721: /* ColorMatrix1 */
    case 50722: /* ColorMatrix2 */
#ifdef LIBRAW_LIBRARY_BUILD
      i = tag == 50721 ? 0 : 1;
      tiff_ifd[ifd].dng_color[i].parsedfields |= LIBRAW_DNGFM_COLORMATRIX;
#endif
      FORCC for (j = 0; j < 3; j++)
      {
#ifdef LIBRAW_LIBRARY_BUILD
        tiff_ifd[ifd].dng_color[i].colormatrix[c][j] =
#endif
            cm[c][j] = getreal(type);
      }
      use_cm = 1;
      break;
мы просто считываем последнюю по порядку матрицу, которая совсем необязательно будет D65.
А нужно сперва считать
    case 50723: /* CameraCalibration1 */
    case 50724: /* CameraCalibration2 */
и определиться, кто есть кто и забирать только D65.

Эта особенность (багафича) приводит к тому, что libraw использует в случае особо одаренных dng матрицы для иллюминанта А (2850К), а не D65, в результате получаем не то, что ожидали.

Проблема решается рукопашным анализом dng тегов, в принципе libraw все это предоставляет уже в готовом виде, за что огромное спасибо, но хотелось бы пофиксить логику в вышеописанном коде.

Замечание по сути правильное. Не знаю, буду ли чинить в 0.19, ибо она уже в процессе публикации, но пока еще бета и в принципе то можно, но чинить конечно надо. Может быть даже битик в processing options добавить.

Но полностью проблему оно не решит, потому что в Camera Calibration вовсе не обязан быть D65. Вот будет там Ill. A и Ill.C например, и что?
(еще смешнее, конечно, если ColorMatrix есть, а calibration - нету, а еще смешнее - если для разных SubIFD оно разное).

То есть если результат действительно интересует, то таки да, надо в любом случае анализировать что мы там наразбирали, благо все это хозяйство сложено аккуратно, для каждой IFD отдельно.

Что не отменяет верности исходного замечания (UPD: и да, по битику в processing_options можно включать какой-то готовый код в LibRaw, который это делает, допустим только простым способом, если есть D65, то повезло, а если нет - то ничего не делает)

За тестовый DNG на котором проявляется проблема, чтобы самим не лепить его, были бы благодарны.

Если нет D65, то только интерполировать, тут немного сложнее, конечно.
Примеры уже знакомые будут, это dng от HTC 10. В целом болячка свойственна только андройдам от HTC. В нормальных камерах я этой путаницы с иллюминантами не видел.
kapankov.ru/downloads/htc10.dng
kapankov.ru/downloads/IMAG0011.dng
Это с двух версий телефонов.
Спасибо :)

Примеры скачал (чтобы не искать по архиву где оно как), можно удалять.

Сделаю в 0.19-Beta2, мне это место и самому не нравилось, а тут наконец кто-то и пожаловался.

Наверное таки по битику, чтобы совместимость взад сохранить.

Супер! Спасибо )

Не столько для вас, сколько если вдруг кто еще читает, продолжение тут: https://blog.lexa.ru/comment/49206#comment-49206