Ответить
  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 12:27 Редактировалось ee2, 2 раз(а).

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

  • AlexTutubalin Junior Member
    офлайн
    AlexTutubalin Junior Member

    53

    9 лет на сайте
    пользователь #1490942

    Профиль
    Написать сообщение

    53
    # 24 ноября 2014 12:38
    ee2:

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

    Я вот не понял, если честно.
    Вот у нас данные (до применения кривой) - 11-битные. А пишем мы 8 бит на пиксель (ну таким вот сложным форматом, не суть). Понятно, на большом контрасте в блоке что-то теряем.

    Но если мы вдруг, при большом контрасте в блоке, начнем писать полные (11-битные) данные - то мы сломаем главное достоинство формата, фиксированный размер (8 бит на пиксель), его станет нельзя многопоточно параллельно декодировать и вот это вот все.

    [url=http://www.fastrawviewer.ru]FastRawViewer[/url] - снимаете в RAW, так и смотрите на RAW.
  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 12:48 Редактировалось ee2, 7 раз(а).
    AlexTutubalin:

    его станет нельзя многопоточно параллельно декодировать и вот это вот все

    Так 8 бит на пиксель это итоговый "средний по больнице" размер пикселя, а не реальная их размерность в файле. В файле пиксели занимают 11 и 7 бит. Если банально куда-то в блок добавить 1-битный флаг, что блок требует иной обработки, проблем с многопоточностью и вот этим вот всем быть не должно. Ну станет может 8,5 бит на пиксель в среднем по картинке в самом худшем случае.
    Если вы имеете в виду потоковую обработку блоков SIMD-инструкциями, то тут тоже погоды особой это не сделает, можно как-то тоже подогнать и подмазать. Тем более, что наверняка со стороны камеры все эти алгоритмы реализуются в железе и крутить их туда-сюда особой проблемы для производителя нет...

  • Def Senior Member
    офлайн
    Def Senior Member

    23463

    20 лет на сайте
    пользователь #10137

    Профиль
    Написать сообщение

    23463
    # 24 ноября 2014 12:58
    AlexTutubalin:

    Def:

    bitPerPixel будет = 8 если в теге Exif.Image.Make не будет текста "SONY". Для бзк - он есть :)

    Как приятно видеть истинного знатока программирования на C++!!!

    Читаем тут: http://www.cplusplus.com/reference/string/string/compare/
    ===
    Return Value
    0 They compare equal
    ====

    Соответственно !make.compare("SONY" ) - истинно, если строчка make в точности равна SONY

    Сюрприз.

    действительно. Но это ничего не меняет :) Сюрприз :)
    Ибо в том же коде:

    код выделить все
    if (data.size() > 1) {

    про это как раз написано в коментариии:

    This camera has however another MAKER entry

    Хак безобразен, но это всего лишь хак для конкретного случая.

    Стоит корова на мосту и сцыт в реку. Вот так и люди - рождаются и умирают
  • AlexTutubalin Junior Member
    офлайн
    AlexTutubalin Junior Member

    53

    9 лет на сайте
    пользователь #1490942

    Профиль
    Написать сообщение

    53
    # 24 ноября 2014 13:11 Редактировалось AlexTutubalin, 1 раз.
    ee2:

    AlexTutubalin:

    его станет нельзя многопоточно параллельно декодировать и вот это вот все

    Так 8 бит на пиксель это итоговый "средний по больнице" размер пикселя, а не реальная их размерность в файле. В файле пиксели занимают 11 и 7 бит. Если банально куда-то в блок добавить 1-битный флаг, что блок требует иной обработки, проблем с многопоточностью и вот этим вот всем быть не должно. Ну станет может 8,5 бит на пиксель в среднем по картинке в самом худшем случае.

    У вас станут блоки переменного размера.
    Сейчас, если я хочу начать раскодировать 1024-й пиксель сразу - я позиционируюсь на 1024-й байт и начинаю фигачить (ну не на любой байт можно, а надо помнить про блоки в 32 пикселя/32 байта). Если есть процессор с миллионом ядер - можно (если пикселов больше 32M) все ядра занять.

    А с блоками переменного размера так нельзя.

    Добавлено спустя 2 минуты 5 секунд

    Def:

    код выделить все
    if (data.size() > 1) {

    Ну этот код срабатывает на файлах, где больше одного SubIFD. Так примерно на всех, что я видел.

    Def:

    Хак безобразен, но это всего лишь хак для конкретного случая.

    В конкретном случае A7, который я смотрел отладчиком, - он срабатывает и bitsPerSample становятся равными 8.

    Могу еще пару камер на выбор проверить.

    Вообще, данный конкретный комментарий в RawSpeed отдельно забавляет. Там помянута Sony E-550, каковой в природе не существует (и в списке поддерживаемых библиотекой - нету). Есть A-550. Из чего мы делаем обычный вывод: не надо читать комментарии, надо код читать.

    [url=http://www.fastrawviewer.ru]FastRawViewer[/url] - снимаете в RAW, так и смотрите на RAW.
  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 13:14 Редактировалось ee2, 3 раз(а).
    AlexTutubalin:

    А с блоками переменного размера так нельзя.

    Логично. Думаю можно что-то нахимичить, но лень думать - я же не в тетке работаю. Пусть сами голову ломают. :)

  • serg167 Senior Member
    офлайн
    serg167 Senior Member

    1090

    16 лет на сайте
    пользователь #105492

    Профиль
    Написать сообщение

    1090
    # 24 ноября 2014 13:17

    Выбор беззеркальной камеры со сменными объективами становится все более захватывающим. :)

  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 13:17
    serg167:

    Выбор беззеркальной камеры со сменными объективами становится все более захватывающим. :)

    :D

  • AlexTutubalin Junior Member
    офлайн
    AlexTutubalin Junior Member

    53

    9 лет на сайте
    пользователь #1490942

    Профиль
    Написать сообщение

    53
    # 24 ноября 2014 13:18 Редактировалось AlexTutubalin, 1 раз.
    ee2:

    AlexTutubalin:

    А с блоками переменного размера так нельзя.

    Логично.

    Это, кстати, безумная беда Lossless JPEG, который в большинстве камер "жмущих по настоящему" используется. Он строго последовательный (теоретически могут быть маркеры синхронизации, на практике их нет обычно).
    Соответственно, даже если ядер/процессоров много - использовать их нельзя, строго на одном ядре распаковка должна работать.

    В случае с DNG с этим поборолись, поделив картинку на тайлы, которые независимо распаковываются (и в метаданных есть таблица смещений тайлов), да и то, тайл может быть и один. А вот CR2/NEF/PEF и много других - увы.

    Тяжкое наследие 20 века.

    Добавлено спустя 6 минут 55 секунд

    serg167:

    Выбор беззеркальной камеры со сменными объективами становится все более захватывающим. :)

    У меня A7R - и я очень доволен. Несмотря на 7-битность.

    [url=http://www.fastrawviewer.ru]FastRawViewer[/url] - снимаете в RAW, так и смотрите на RAW.
  • dzer Senior Member
    офлайн
    dzer Senior Member

    2700

    18 лет на сайте
    пользователь #45275

    Профиль
    Написать сообщение

    2700
    # 24 ноября 2014 13:30
    serg167:

    Выбор беззеркальной камеры со сменными объективами становится все более захватывающим. :)

    Да, вот бы сейчас пришел новичок какой с вопросом "что выбрать". А ему - что тебе трудно последние пару страниц прочитать :lol: ?

    Olympus
  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 13:31
    AlexTutubalin:

    Несмотря на 7-битность.

    Не говорите так, а то оликофаги сейчас по непониманию начнут со всех трибун проповедовать, что соньки 7-битные. :)

  • stenliey Senior Member
    офлайн
    stenliey Senior Member

    652

    11 лет на сайте
    пользователь #626355

    Профиль
    Написать сообщение

    652
    # 24 ноября 2014 13:36

    Подскажите хорошие курсы C++ для начинающего фотографа-любителя.

  • dzer Senior Member
    офлайн
    dzer Senior Member

    2700

    18 лет на сайте
    пользователь #45275

    Профиль
    Написать сообщение

    2700
    # 24 ноября 2014 13:38
    stenliey:

    Подскажите хорошие курсы C++ для начинающего фотографа-любителя.

    stenliey, сам вопрос говорит о том, что вам это не надо

    Olympus
  • Def Senior Member
    офлайн
    Def Senior Member

    23463

    20 лет на сайте
    пользователь #10137

    Профиль
    Написать сообщение

    23463
    # 24 ноября 2014 13:42
    AlexTutubalin:

    В конкретном случае A7, который я смотрел отладчиком, - он срабатывает и bitsPerSample становятся равными 8.

    что срабатывает в конкретном случае - называется баг. Разбираться в парсере и смотреть сколько там SubIFD-ов добавляется - мне однозначно лень, так что тут остается - ваши слова против комментариев автора. Толи вы врете, то ли у автора кода баг.

    Стоит корова на мосту и сцыт в реку. Вот так и люди - рождаются и умирают
  • nDrju Senior Member
    офлайн
    nDrju Senior Member

    5639

    14 лет на сайте
    пользователь #200037

    Профиль
    Написать сообщение

    5639
    # 24 ноября 2014 13:47

    ee2, соньки 7-битные! xD И немного 11-битные.
    AlexTutubalin, приятно и неожиданно вас тут увидеть.
    stenliey, "как написать свой RAW конвертер с кнопкой - сделать збс"

  • ee2 Senior Member
    офлайн
    ee2 Senior Member

    10001

    15 лет на сайте
    пользователь #135660

    Профиль
    Написать сообщение

    10001
    # 24 ноября 2014 13:50 Редактировалось ee2, 2 раз(а).
    nDrju:

    "как написать свой RAW конвертер с кнопкой - сделать збс"

    для чайников

    "Или как избавиться от постеризации, не привлекая внимания санитаров". :D

  • AlexTutubalin Junior Member
    офлайн
    AlexTutubalin Junior Member

    53

    9 лет на сайте
    пользователь #1490942

    Профиль
    Написать сообщение

    53
    # 24 ноября 2014 13:50
    Def:

    что срабатывает в конкретном случае - называется баг. Разбираться в парсере и смотреть сколько там SubIFD-ов добавляется - мне однозначно лень, так что тут остается - ваши слова против комментариев автора. Толи вы врете, то ли у автора кода баг.

    Хороший баг, да - в результате изображение берет и раскодируется. А если bitsPerPixel поставить в 14 (как для A7 прилетит из EXIF), убрав этот странный код с SubIFD, то не раскодируется. Такая вот история.

    Это не баг. Это очень странный и плохой (но работающий) детектор битности. Который "для всех БЗК" поставит bitsPerSample=8, отчего все начинает работать и декодироваться.

    Добавлено спустя 50 секунд

    ee2:

    AlexTutubalin:

    Несмотря на 7-битность.

    Не говорите так, а то оликофаги сейчас по непониманию начнут со всех трибун проповедовать, что соньки 7-битные. :)

    У меня и Olympus есть. E-M5. Отличная камера, мне очень нравится.

    [url=http://www.fastrawviewer.ru]FastRawViewer[/url] - снимаете в RAW, так и смотрите на RAW.
  • ghost100 Senior Member
    офлайн
    ghost100 Senior Member

    11719

    16 лет на сайте
    пользователь #100100

    Профиль
    Написать сообщение

    11719
    # 24 ноября 2014 13:55 Редактировалось ghost100, 3 раз(а).
    Def:

    Разбираться в парсере и смотреть сколько там SubIFD-ов добавляется - мне однозначно лень

    которую страницу Def не может поверить в то, что сони не доложила битов в его камеру :)

  • Def Senior Member
    офлайн
    Def Senior Member

    23463

    20 лет на сайте
    пользователь #10137

    Профиль
    Написать сообщение

    23463
    # 24 ноября 2014 14:00 Редактировалось Def, 1 раз.
    AlexTutubalin:

    Это не баг. Это очень странный и плохой (но работающий) детектор битности. Который "для всех БЗК" поставит bitsPerSample=8, отчего все начинает работать и декодироваться.

    работающий от количества SubIFD и пробела в в слове SONY :)
    Мне кажется мы зашли в тупик, ибо обсуждаемый код плох и не дает пространства для дальнейшей дискуссии.

    Где кстати взять спеки на сониевские равы? Этот код был жеж написан на основании чего-то.
    Ну и уточните плиз, что лежит в SubIFD-ах для MAKE

    Стоит корова на мосту и сцыт в реку. Вот так и люди - рождаются и умирают
  • Gee77 Senior Member
    офлайн
    Gee77 Senior Member

    811

    14 лет на сайте
    пользователь #226640

    Профиль
    Написать сообщение

    811
    # 24 ноября 2014 14:02

    Давайте докуривайте свой набор С++ и внезапно сообщайте, бросать некс с обрыва или нет! я уже устал замахиваться! ;)