Перейти к содержанию
    

Вывод 16 бит на пиксел как сделать ?

Всем привет!

Есть вопрос, имеется массив данных, каждое данное размером в два байта те 1024,

нужно вывести картинку из этих данных, и чтобы каждый пиксель отображал всю градацию 0-1024.

Как такое можно сделать ? Желательно в желтом цвете )

Знаю формат pf24bit но там на каждый цвет только то байту....

На крайний случай можно в сером.

Прогаю в Buildere

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

куда вывести-то?

во-первых обычные мониторы даже 8 бит нормально-то не отображают, а во-вторых далеко не каждый увидит разницу яркости в 0.5%, а уж тем более в градациях жёлтого цвета.

grey.gif

grey2.gif

увеличьте картинки да посмотрите, каждую ли ступеньку видно?

 

ну а чтобы отобразить 10 бит, делите на 4 или логарифмируйте.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вывод на монитор, теоретически вывести возможно и как это практически на си ?

Поделить и логарифмировать всегда успеется, данные при этом теряются.

Данные с гидролокатора и у них дин диапазон 10 бит, если выводить в 8 бит тот теряется мелкий рисунок

А что это за картинки ?

Изменено пользователем whale_nik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

практически на С:

 

glfwWindowHint(): GLFW_RED_BITS, GLFW_GREEN_BITS, GLFW_BLUE_BITS

или GLFWvidmode в полноэкранном режиме так как у операционной системы тоже может быть своё мнение по поводу глубины цвета окон.

 

ну и WGL_ARB_pixel_format

 

а картинки - верхняя просто 16х16=256 серых квадратов. чтобы увидеть границы между соседями приходится под разными углами на монитор смотреть (бюджетная версия изменения динамического диапазона lcd монитора :) ), да и то все не видно.

 

можно попробовать для начала разные графические редакторы которые больше 8ми бит на цвет поддерживают.

но вот отображают ли они их на самом деле хз.

 

hdmi до каких-то недавних версий вроде имел 3 канала и 8b/10b и пиксельклок в 10 раз меньше, то есть даже в этом месте оно гвоздями к 8ми битам на цвет приколочено было.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня верхняя картина отлично все видно и монитор бюджетнее некуда.

в OpenGL не силен, а есть вариант поближе в винде и железу ?

Действительно надо попробовать какие вариацие серого еще заметны глазом на хорошем мониторе /телике

У меня счас формат PixelFormat=pf24bit все понятно три байта каждый отвечает за свой цвет а всякие стороние библиотеки ноги сломаешь пока чего нить получишь

Изменено пользователем whale_nik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если данные только с одной компонентой, то надо просто в разные цвета раскрасить.

i-0907ba0df015f36cf94807d1d7a73bb1-contour-thumb-350x262.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В разных цветах очень плохо получается опознать что там вообще нарисовано кроме новогодней елки )

Самое лучшее - желтый, хуже серый, далее синий, цветной самое ужасное что можно сделать.

Данные - просто амплитуда отраженного сигнала в 10 битах

Изменено пользователем whale_nik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

контурные линии добавте, может поможет.

ну а не видя картинки сложно что-то советовать.

 

 

У меня верхняя картина отлично все видно и монитор бюджетнее некуда.

Вы ведь понимаете что там не 16 горизонтальных полос надо увидеть, а вертикальных. Различие между двумя соседними квадратами по горизонтали. Именно они на 1/256 по яркости отличаются, и увидеть и в тёмной и в светлой части картинки.

 

Ну правда у меня ещё десятый виндовс что-то с настройками яркости монитора нехорошее сделал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Квадратики видно, 1/512 было бы наверно предел.

Картинка такая https://yadi.sk/d/wViaBAVG3LkeRh

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в OpenGL не силен, а есть вариант поближе в винде и железу ?

Откройте справочник по WinAPI, в нём поиск по BitBlt (и др.функции этого семейства), а также - функции рисования. Создёте плоскость в памяти, рисуете на ней, а потом при помощи BitBlt или PatBlt, ... копируете картинку в экранную плоскость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Откройте справочник по WinAPI, в нём поиск по BitBlt (и др.функции этого семейства), а также - функции рисования. Создёте плоскость в памяти, рисуете на ней, а потом при помощи BitBlt или PatBlt, ... копируете картинку в экранную плоскость.

 

Каким образом тут 10 бит на пиксель ?

 

raw бы 10ти битный, чтобы понять разницу.

 

Пардон ) raw нет в природе тк данные сразу пишутся в gBitmap->PixelFormat=pf24bit; и сохраняются в bmp

тк пока на пиксель 8 бит то приходиться вводить логарифмическую шкалу, те на "верхах" детализация почти отсутствует (

На картинке почти везде "низы" если появиться хорошо отражающий объект то теряется структура.

 

Короче, я так понял придется создавать свой gBitmap с двумя байтами на монохромный пиксель и выводить своей же программой которая сможет его причитать.

Изменено пользователем whale_nik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Каким образом тут 10 бит на пиксель ?

Там можно и больше бит получить, не только 10. В цвете конечно.

 

во-первых обычные мониторы даже 8 бит нормально-то не отображают, а во-вторых далеко не каждый увидит разницу яркости в 0.5%, а уж тем более в градациях жёлтого цвета.

А нужны ли эти 10 бит на экране? Зачем реально нужно отображать одновременно и самые яркие и самые тёмные участки?

Т.е. - если на картинке есть яркие участки (как я понимаю - эхо от ближайших объектов), и при этом есть тёмные участки (от дальних объектов) - так ли реально нужно их отображать вместе?

У автора же интерактивное отображение, а не картинка сохраняемая в файл.

Сделать скажем отображение только 64 уровня яркости (или 32 - сколько удобно). Младшие биты отбросить - эти участки будут отображаться чёрным. Если пользователь хочет заглянуть вглубь этих чёрных участков - он жмёт кнопку "приблизить" - старшие биты яркости постепенно отбрасываются (яркие участки соответствующие им маскируются на экране каким-то специальным шаблоном/цветом), но проступают, становятся ярче тёмные участки - глубинные слои.

Как то так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я и говорю придется делать свою программу на "приблизить".

10 бит еще нужны чтобы применять различные алгоритмы обработки а не только чтобы вывести на экран сразу все.

 

Вот допустим как сделать gBitmap c 16 монохромными битами на пиксель ? Кто его сможет прочитать , вывести на экран пусть даже с 8 битами ?

Вообще конечно подробно рассматривают уже потом, в записи.

Изменено пользователем whale_nik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так я и говорю придется делать свою программу на "приблизить".

И это правильно :rolleyes:

 

Вот допустим как сделать gBitmap c 16 монохромными битами на пиксель ? Кто его сможет прочитать , вывести на экран пусть даже с 8 битами ?

Вот именно эта ваша программа и сможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...