Свежие комментарии

Title Comment
<q>это dct можно параллелить.</q> ну. тебе мало? <q>А хаффм

это dct можно параллелить.
ну. тебе мало?

А хаффман - который под ним лежит - нормально нельзя.
и? чтение с диска тоже не паралелится.
и при этом регулярно раздаются крики "сжатие данных повышает трансфер с диска". так что одно ядро на хафмане накормит стояптьсот dct.

И у меня - этот самый lossless jpeg, выше никаких блоков 8x8 и прочей хрени - нету.

а? что?
еще раз. jpeg это:
переходим в другое цветовое пространство
разбиваем картинку 8x8
dct каждого блока 8x8
отбрасываем хвосты (ну если у тебя lossless -- не отбрасываем)
кодируемся по хафману.

при декодировании все тоже самое в обратном порядке. ну только хвосты пришивать не надо.

Вспомнил петушиное слово: SOF3

Вспомнил петушиное слово: SOF3

Але, это dct можно параллелить. Который lossy jpeg. А хаф

Але,

это dct можно параллелить. Который lossy jpeg.

А хаффман - который под ним лежит - нормально нельзя. И у меня - этот самый lossless jpeg, выше никаких блоков 8x8 и прочей хрени - нету.

Точнее, если там есть рестарты, то можно их искать и от них распаковывать, надеясь потом распихать по нужным местам.

Там ошибочки у меня, похоже,

Там ошибочки у меня, похоже, при расчете offset но суть думаю понятна.

А нельзя ли несколько

А нельзя ли несколько видоизменить задачу? Т.е. вместо вычислений координат назначения по индексу источника вычислять индекс перебирая координаты.
Т.е. нечто вроде (псевдокод):

int col;
int row;
int iLastSliceX0 = width - cr2_slice[2];
for(row=0;row

Такая штука должа параллелится как из пушки.

А нельзя ли несколько

А нельзя ли несколько видоизменить задачу? Т.е. вместо вычислений координат назначения по индексу источника вычислять индекс перебирая координаты.
Т.е. нечто вроде (псевдокод):
int col;
int row;
int iLastSliceX0 = width - cr2_slice[2];
for(row=0;row

щито? оно независимыми блоками 8x8 идет. сколько у тебя карт

щито?
оно независимыми блоками 8x8 идет.
сколько у тебя картинка, 4000x5000? можешь на 300000 ядер паралелить.
ну ладно, столько перебор, но на десяток -- можно.

Нет, считывание идет по столбцам. А кодирование дальше - по

Нет, считывание идет по столбцам. А кодирование дальше - по строкам.

Т.е. выливают в какой-то буфер(ы) и их кодируют. В промежуточные буфера, которые потом склеивают.
В-принципе, если хранить дальше в нескольких буферах, а не в одном, то тоже удобно. Гы :)

Вообще же jpeg-овское кодирование, которое потоком, хоть и с маркерами рестарта, но все одно - переменной битности, это зло ужасное в век многоядерности.

Это да. Интересно, по столбцам нарезано, ибо в сенсоре так

Это да.

Интересно, по столбцам нарезано, ибо в сенсоре так считывание устроено? Какая-то схема ну очень неудобная для эффективного раскодирования.

Ссылка полезная, а сама схема - идиотская. Лучше бы сделали

Ссылка полезная, а сама схема - идиотская. Лучше бы сделали тайлами с известными началами-концами бинарных данных, как в DNG.

А, понял. Хитро, однако. Спасибо, полезная ссылка.

А, понял. Хитро, однако.

Спасибо, полезная ссылка.

Нет, не нацело. Там как устроено в CR2: K слайсов шириной L

Нет, не нацело. Там как устроено в CR2: K слайсов шириной L и один шириной M. Высота у всех H.
Вот картинка: http://lclevy.free.fr/cr2/#lossless

Если мы номер пикселя делим на H*L, то мы получаем номер слайса. Он может быть ошибочным (если M много меньше L) и его надо округлить до K+1.

Уф.

Но все это почти неважно т.к. можно прекалькулировать оффсеты (по числу строк т.е таблица получается размером (K+1)*H (10-20 тыс). А внутри одной строчки слайса - просто декрементировать и все.
Мда. Кодом проще написать. Следите за апдейтами LibRaw.

А строчки 3 и 4 ещё оптимизировать не получится? Я так понял

А строчки 3 и 4 ещё оптимизировать не получится? Я так понял, что jidx делится нацело на cr2_slice[1]*jh.high и получается ноль или 1. В таком разе можно в стр. 3 попробовать i = ( jidx > cr2_slice[1]*jh.high ).

a5

b8 - 60770

ну и там можно совокупность запросов a5, a7, b5, b8 и так далее.

а если написать пост в блоге с заголовком "a5 b7 b8" с внутренними ссылками ссылающимися сами же на него, и с парой ссылок с вхождением этого анкора из каких-то старых постов... то да, эксперимент будет интересный :-)

Вместо фиолетовой части радуги будем рисовать черную полосу?

Вместо фиолетовой части радуги будем рисовать черную полосу?

Там цифровой CFA, берет один компонент из трех, нет места дл

Там цифровой CFA, берет один компонент из трех, нет места для ошибки.

зачем? в данном случае равалайзер удобнее - сразу показывает

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

в данном случае [сразу же] видно, что отображение на r-g-b-g выполнено неправильно (при условии, что исходное изображение могохромное).

это фиолетовый. И в идеале фильтр вообще не должен бы там п

это фиолетовый.
И в идеале фильтр вообще не должен бы там пропускать ("лекции от Шадрина" про гамут, базис и прочую почухрень помнишь? - там всё "математикали прувед", между прочим)

Исходник легко восстанавливается через dcraw -D

Исходник легко восстанавливается через dcraw -D

А 380-440 - это что?

А 380-440 - это что?

вообще-то "равчик" какой-то багнутый получился. я взял Rawn

вообще-то "равчик" какой-то багнутый получился.

я взял Rawnalyze, и вот чего увидел:

выделен фрагмент диагонали, а дисперсия по пикселям - нулевая.

:-)) чего тебе непонятно ? давай возьмём <s>первый попавший

:-))
чего тебе непонятно ?

давай возьмём первый попавшийся кэнон 40Д:

синий, это 440-485нм; отклик - от 3.5 до 4.9
зелёный, это 500-565нм; отклик - от 3.0 до 3.2
красный, это 625-740нм; отклик - от 2.3 до 2.8

соотв. "в самом синем" у нас ~4.5 попугаев, "в самом зелёном" ~3.2, и "в самом красном" ~2.5 попугая.
для "остальных никонов" та же самая картинка.
чего тут непонятного ? :-))

А в "самом синем"?

А в "самом синем"?

строго говоря, на ДХО даётся два значения: для экрана и для

строго говоря, на ДХО даётся два значения: для экрана и для печати.
Соотв. для экрана они намеряли 13.91 EV (угу, прям с точностью до четвёртого знака :-)), что даёт 12503 DN. Т.е. вполне укладываются в 16316 (хоть и со скрипом).

14.12 EV они намеряли для отпечатка (downsample to 8Mp ==> 8"х12" @300dpi)
если вспомнить "формулу Зейса" (1730px на диагональ), то получается, что визуальный пиксель отпечатка формируется примерно из 6px исходника. Т.е. теоретически мы можем поднять "эффективную разрядность" отпечатка на up to 2 EV

Ну так посмотри уже, наконец, и убедись, что у махмах.сом "к

Ну так посмотри уже, наконец, и убедись, что у махмах.сом "квантовая эффективность в синем канале" самая высокая (для четырёх моделей из четырёх :-))

Да я сам себя проверяю. Я не

Да я сам себя проверяю. Я не волшебник, я только учусь. Спасибо.

Ну естественно, если исходные

Ну естественно, если исходные компоненты были равны, а на выходе мы "тупо скопировали", то они тоже будут равны. Не вижу предмета для обсуждения.

В том смысле, что для данной

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

В каком смысле

В каком смысле "правильно"?

Вы вынули один компонент (больше в DNG и не было) и положили в grayscale tiff. Провраться особо и негде.

А при подготовке - брался RGB Tiff, из каждого пикселя - нужный компонент. Понятно что в мишени "в три раза меньше данных", чем в исходнике.

На "предельно низком" - точно

На "предельно низком" - точно не надо. Надо на "нормальном рабочем"

А оптимум по шуму, скорее всего, лежит в районе 1 электрон на единицу АЦП

Pages

Subscribe to comments_recent_new