Qt MVC: ненависти псто!

Вот есть такой Qt. А в нем полноценный Model-View: QAbstractItemModel (и потомки), QAbstractItemView (и потомки) ну и "контроллер", то есть делегат.

И вот допустим мы отображаем некий список (произведя его из QListItemModel) в некоем вью (произведя его из QListView). Стандартные средства - хороши, пока их хватает. Иконка, подпись, чекбокс, все есть. Раскраска - стайлшитом.

Идем дальше, стандартных средств не хватает, хотим нарисовать полоску/иконку/хреновинку. Ну отлично, QStyledItemDelegate, базовый класс нарисует основу, мы потом разукрасим.

Правда выясняется, что оформление...

О цветокоррекции (или репродукции?)

Пишешь в гугл-картинках "Серов портрет Ермоловой" и видишь такое:

Слова подходящие - не подбираются.

Покрутил дальше, есть вообше шедевр: http://www.dgr.ru/photoalbum/58992/20-sm.jpg

О шуме и зерне

Качал с DPReview очередные самплы и получился такой вот скриншот:

(кликабельно)

Я к тому, что вот технология примерно одного поколения, ожидаемый шум - тоже (да, там надо на замер смотреть, в этом месте может быть некоторая разница).

Но насколько лучше смотрится монохромный шум, чем цветной (ну и де-байера нет, который тоже добавляет)

RawDigger 1.2.4

По случаю выхода PhaseOne IQ3 100Mpix, пришлось обновлять RawDigger:

  • Исправлена ошибка в обработке поврежденных файлов .eip
  • Windoes: cохранение размеров главного окна: запоминаются статус максимизации окна и его размер до максимизации.    
  • Экспорт в CSV: целочисленные параметры (номер фрейма, номер сампла, координаты сампла) не заключаются в кавычки.
  • Лимит Disable RGB Rendering for files larger... увеличен до 200Mpix.
    Стандартное значение этого лимита для 64-битных версий: 120Mpix, но если вы работали с предыдущей версией, то сохранится значение от нее (стандартное - 99Mpix для 64-биной версии) и для копания в 100Mpix-файлах может захотеться его увеличить (если нужен RGB-рендеринг).
  • Exiftool обновлен до версии 10.09
  • Поддержка формата PhaseOne 16-bit compressed
  • Поддержка камер:  Phase One IQ3 100Mpix

Брать на официальном сайте (или на официальном русском сайте)

Про MF backs

Спасибо неназываемому (он просил не называть) благодетелю, теперь у нас есть самплы со всех PhaseOne P- и IQ-series и с большого числа задников Leaf. 75 гигабайт.

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

  1. Вот есть равчики, у которых на выдержках в десятки секунд - уже привычный нам на других (мелкоформатных) камерах шум. Ну, OK, все понятно, чудес нет.
  2. А есть такие, что там сотни-тысячи секунд (натурально, до часа) - и они чистые.
    Да, ISO50 обычно. Но чистые: ни хотпикселей, ни бэндинга, ничего. Shadow Boost наш кажет чистые приятные тени.

Вот, блин, как они это делают? Это RAW, никакого специфического процессинга у нас нет, смотрю я естественно FRV и RawDigger, чем еще....

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

 

Про Nikon D5 и ее 3 миллиона ISO

Значит всем, кто радуется ISO 3млн на 21-mpix спешу напомнить:

  • На ISO 100 уровень насыщения (т.е. белого) - 3200 фотонов на квадратный микрон. Просто, я извиняюсь, по стандарту на эти самые ISO (при измерении чувствительности по saturation).
  • Площадь одного пикселя у D5 - 40 кв. микрон (при заполнении площади сенсора пикселями на 97%, удобно оказалось округлить так)
  • Это дает нам 128000 фотонов на пиксель на ISO100 в белом (в насыщении).
  • Увеличиваем чувствительность в 30000 раз. Из ISO100 - в 3 миллиона.
  • Экспозицию укрутим, понятно, в те же 30 тысяч раз, на 15 стопов.
  • Фотонов на пиксель будет 4.27
  • Умножаем на квантовую эффективность, пусть она будет 0.7 (это со всеми цветными светофильтрами, на самом деле 0.7 - завышенное значение).
  • Электронов на пиксель получается 3. Три, блин, штуки. В белом (насыщении).
  • В точке серого, которая в лучшем случае в 5.5 раз ниже (18%) электронов будет 0.
  • Нет, понятно, статистический разброс, то-се, в каких-то местах "в сером" их будет больше 0.
  • И это все - для идеальной т.е. никак не шумящей камеры, про шумы мы вообще не говорили.

Продолжайте читать маркетологов, они вам расскажут!

Q: Gaussian blur

Вот значит пишу свой Gaussian Blur, прямо по статье в Википедии

Ну не совсем прямо, конечно, а в два прохода и (буду) с использованием hardware linear interpolation в GPU, чтобы поменьше самплить, но вопрос мой не в этом.

Хочется: чтобы попугаи в моем фильтре были бы такими же, как у Фотошопа. И вот тут загвоздка:

  • "Радиус" на который нужно делать convolution kernel - три сигмы.
  • Соответственно, при сигме меньше 0.167 (радиусе меньше 0.5) - весь наш радиус вписывается
  • ...

И о литературе

Сложно и бессодержательно о простом:

(кликабельно)

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

Передайте пожалуйста автору этой книги, что с нее причитается.

Я голову о клавиатуру разбил. Теперь менять. Голову. Клавиатуру.

Общие рассуждения про i7-6700k

Текущее поколение интеловских десктопных процессоров меня пока интересует слабо (ну понятно, там есть вкусное: NVMe, поддержка до 64Gb, больше PCIe 3.0 без свитчей, но пока не перевесили), но тут подсунули результаты тестов: Skylake: Intel's Core i7-6700K And i5-6600K

Смотрите как интересно:

  1. Под Windows 10 работает быстрее, чем под Windows 8. Причем, Adobe Illustrator кардинально быстрее, раза в два (~1.25сек против 2.65).
  2. В тестах приложений Adobe (и в одной SiSoft Sandra), i5-6600 работает быстрее
  3. ...

AVX2 и VPGATHERDD - продолжение

Продолжаем дневник программиста на AVX2 (начало и продолжение).

Добрался до 4-го места, которое хотелось пооптимизировать окончательно уже года два как: берем 16-битные целые (RAW-данные), конвертируем в плавучку, вычитаем черный, результат записываем. То есть первый этап дебайеризации.

Параллельно считаем RAW-гистограмму и карту пересвета-недосвета (на самом деле там карта экспозиции считается, а не просто пересвет-недосвет, а дальше она визуализируется с лимитами, все что выше/ниже лимита раскрашивается.).

Вот в этом месте VPGATHERDD (из RAW-значений в экспозицию по LUT) внезапно дал выигрыш...

Еще про AVX2 и VPGATHERDD

Продолжение вот к этому вот тексту и к тамошним комментариям:

1. Собрался с духом и переписал тройку мест на 256-битные команды. Помогло: время исполнения этих кусочков упало на 15-25%. Буду дальше писать.

Это без особой оптимизации, старый код у меня SSE3, никаких BLENDPS/EXTRACTPS не использовалось, соответственно и AVX2 - это чисто замена _mm_ на _mm256_ ну и типы 256-битные. В уже переписанных кусках буду еще смотреть на DPPS: на SandyBridge эта инструкция выигрыша не давала, но может быть поможет на Haswell+.

2. А вот с VPGATHERDD - сплошное разочарование:

  • Для гистограммы (когда gather, потом инкремент, потом поэлементная запись) - получается серьезный проигрыш в производительности, а код сложнее.
  • Для операций вида bitmap[index][channel] = contrast_curve[value] проигрыш тоже есть, хотя и незначительный. Совсем оптимизированное (читаем только 6 элементов, для альфа-канала берем defaults т.е. через masked load) - совсем незначительно медленнее, единицы процентов на всю функцию, но медленнее.

Уж не знаю, кому эта VPGATHERDD в таком виде нужна. Ну разве только на новых процессорах она побыстрее.

Pages

Subscribe to blog.lexa.ru: все статьи