Jump to Navigation

Qt ненависти псто (3)

А вот, значит, еще про Qt.

Допустим, у нас есть QListView (с кастомными элементами, но это в данном случае несущественно). В нем мелко показаны фигульки.

Хотим: при клике на фигульку спрятать QListView и на его месте показать фигульку крупно (в QGraphicsView, хотя это тоже не так и важно).

Первые грабли зарыты в "спрятать-показать". Если запихнуть их, скажем, в один QLayout и делать  QListView->hide(); QGraphicsView->show(), то оно может валится. Не всегда. При некоторых размерах окна. Ну ладно, сначала show/hide, а потом...

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

А вот например Qt. Обычный такой QTableView на две колонки, хочется банального:

  1. Чтобы занимало окошко целиком, даже если строки короткие, иначе там odd/even rows некрасиво.
  2. Чтобы если строки длинные - был бы скроллбар.

Осложняется, правда, тем, что некоторые строки - HTML-ные, то есть их надо руками рендерить. Соответственно, для DisplayRole надо отдавать пустой текст (это я сейчас знаю!), HTML-ку получать другой ролью и рендерить самостоятельно.

И что вы думаете? ДВА ДНЯ. И то, полностью не победил, скроллбар в результате есть всегда. Ну хоть так.

При этом узнал, что SizeHint есть:

  1. В Q...ItemModel::data()
  2. В QTableView::sizeHintForColumn
  3. В QItemDelegate::sizeHint

Вот не могу сказать, что это были лучшие два дня в моей жизни. Казалось бы, таблица, что может быть проще.... ан нет.

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 в таком виде нужна. Ну разве только на новых процессорах она побыстрее.

1 Терабайт

Если бы SD-шки не продавались парами, мне бы наверное хватило бы 3/4 от показанного.

Стандарты - дешево!

Не могу не прорекламировать (пиратский?) сайт e-standard.org.

Стандарты ISO (мне был нужен 17321, но теперь и других напокуплю) всего по $8 (вместо обычных $100+), карточки принимают, пейпал не принимают, шлют вручную (я заплатил в 10 вечера, прислали в 7 утра), не мошенники. Все прислали, правда про 17321-2 пришлось напомнить, сначала не прислали.

Платил на всякий случай карточкой на которой мало денег, чего и всем советую, хрен их разберет чем и как они процессят и насколько оттуда все утечет.

FastRawViewer 1.2.2

По сложившейся традиции, ранний анонс FRV 1.2.2.

Изменения этой версии:

  • Новая (скрытая) настройка (Registry/Defaults) Prefs->FileArrivalDelay
    Предназначена для случая, когда в текущий каталог добавляются файлы, чтобы FRV не пытался показать те файлы, процесс копирования которых не завершен.
    FastRawViewer:
    • дожидается, пока размер файла перестанет изменяться (перечитывая папку с частотой, указанной в Preferences - Performance - Re-read folder in...)
    • ждет еще время, указанное в настройке FileArrivalDelay (стандартное значение - 2000 миллисекунд)
    • и только после этого показывает файл в панели Filmstrip.
  • ...

Приветы из прошлого

С помощью Winqual отловил редкую (на сегодня) багу в старых драйверах Nvidia, которая била и по FastRawViewer:

  • Драйвера серии 2xx (я тестировал на 296.17, но в дампах видны и другие) для старых карт (с 8800 по GTX560) декларируют OpenGL extension GL_OES_get_program_binary, но при попытке порезолвить это расширение - оно не резолвится.
    Я вот даже не знаю, ошибка это, или спецификации OpenGL это разрешают, но декларировать расширение, которого нет на самом деле - это беспредел.
    В современных драйверах (Windows ставит 340.52 через апдейты, на geforce.com предлагают 341.92) этой проблемы нет, то есть простая установка рекомендованных апдейтов проблему решает (потому и бага редкая).
  • FRV это даже пытается обработать (на всякий случай), но, как выяснилось, неправильно (написано на всякий случай, потестировать не было случая, получилась ошибка в условии if).

Ну, полечил, в 1.2.2 будет, там всей правки на пару строк.

Одновременно повеяло прошлым из другого места:

  • Вынимаю боевую видеокарточку, вставляю заботливо заначенную 8600GS
  • Загружаюсь (Win8.1 x64), windows начинает мучительно искать драйвера.
  • Параллельно ставлю драйвера сам, перезагрузка не требуется.
  • Запускаю отладчик, чиню багу, начинаю тестировать.
  • В какой-то момент FRV мне говорит "милок, а у тебя OpenGL стал 1.1"

Это значит виндовый поиск драйверов ничего не нашел - и временно поставленные (без перезагрузки) видеодрайвера куда-то дел, вернул родной Windows OpenGL 1.1 (софтверный, еще от Win95).

После перезагрузки все, понятное дело, встало на место. Мораль же в том, что "драйвера без перезагрузки" в варианте 3-летней давности - это кривой механизм. Его, похоже, улучшили, с драйверами 3xx я таких засад не помню, но место - кусается.

 

О скорости карточек в камерах

В раньшие годы Rob Galbraith вел базу по скорости карточек памяти в разных камерах. А потом перестал (может случилось что выгуглил: автор сменил работу и забросил сайт), последнее обновление сайта вообще в 2013-м году, а базы - в 2012.

Но нашлись последователи, рекомендую: www.cameramemoryspeed.com

У них и камеры новые представлены (не все, но в мои потребности попадают) и набор карт памяти достаточно свежий.

RawDigger 1.2.3

Ссылки:

Изменения

Косметические:

  • Поддержка Sony RX1R-II (по сути, только цветовой профиль, все остальное и так работало)
  • Обновлен exiftool
  • Увеличена скорость работы при изменении параметров Selection Grid. Проблема проявлялась только на OS X 10.11, на остальных системах разница будет заметна только на очень больших сетках с тысячами ячеек.

Про UHS-II

Покупал тут в октябре SD-карточки (файлы растут, 80Mb уже, блин), купились Lexar 1000x UHS-II, потому что если парами покупать на B&H, то дешево получается.

Пришлось брать и ридер: черная пятница, то-се, удержаться трудно, взялся Transcend RDF9. Старый ридер, Lexar LRW300U перешел в резерв (ну по опыту, Transcend долго не живет, поэтому резерв нужен).

Ну что сказать:

  • Запись отличается слабо, 69 и 75Mb/sec (карты - Lexar 1000x)
  • А вот чтение отличается практически вдвое, 75 и 145Mb/sec

Таким образом, если нужно много скидывать (кино или фото) с карточке "на компьютер", то UHS-II имеет изрядный смысл даже если камера эти дополнительные контакты не видит.

FastRawViewer 1.2.1

По традиции, ранний анонс FRV 1.2.1:

Что нового

  • Добавлена обработка ситуации, когда внешний JPEG-файл обработан какой-то программой и ориентация файла изменилась.
    Настройка RAW+JPEG - Analyze external JPEG Orientation tag and image dimensions to match RAW
    • настройка включена (стандартное значение): FRV будет анализировать размеры и тег Orientation у внешнего JPEG и поворачивать его таким образом, чтобы его ориентация совпадала с RAW
    • настройка выключена: будет поведение как у FRV 1.2.0 и более старых.
  • Изменена процедура активации: FastRawViewer 1.2.1
  • ...

Просьба к владельцам старых никонов

Уважаемые фотографы,

Update: прислали. Спасибо. Больше не нужно, одного кадра достаточно :)

если у вас осталась на ходу камера Nikon D100 или D70 (про эти точно знаю что подходят), не могли бы вы

  • Держа камеру вверх ногами (кнопкой спуска вниз!)
  • Снять любой совершенно кадр (ну главное чтобы там было понять где верх, а где низ) в RAW
  • И прислать результат мне (lexa@lexa.ru или support@fastrawviewer.com)

Потому что у этих камер открылась бездна и хочется ее закрыть.

Бездна заключается в том, что встроенная JPEG-превьюшка повернута самой камерой, но не содержит EXIF: для поворотов на 90/270 мы этот случай в FRV специально обрабатываем, но хочется еще и пример для перевернутой камеры, чтобы понять, есть ли там вообще проблема (скажем у Canon 6D при съемке перевернутой камерой - получается перевернутый же кадр и проблемы нет; а вот Sony A7R2 ставит тег "перевернуто" и кадр выглядит нормально).

Sony A7R-II: в поисках единичного усиления

Палец продолжает залипать на кнопке, надо уж доделать хотя бы то, что доделать просто.

Снимаем "серую карту" (на самом деле - белую крышечку Lee с подложенным еще пенополиэтиленом для лучшего рассеивания), берем маленький квадратик (100x100 в центре, смотрим на среднее значение (в зеленом) и его стандартное отклонение (и квадрат стандартного отклонения, он же дисперсия).

Получаем такую вот табличку:

ISO

среднее
значение
в канале G

...

МГТС GPON: не забудьте нажать пару кнопок

Если кто (как я) использует МГТС-овский GPON - зайдите им в личный кабинет и смените тарифный план.

Они стали на те же деньги давать больше интернету.

Pages

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