|
Вывод 16 бит на пиксел как сделать ? |
|
|
|
Aug 6 2017, 09:26
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
практически на С: 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 и до цвета добраться уже должны были.
|
|
|
|
|
Aug 6 2017, 13:00
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
контурные линии добавте, может поможет. ну а не видя картинки сложно что-то советовать. Цитата У меня верхняя картина отлично все видно и монитор бюджетнее некуда. Вы ведь понимаете что там не 16 горизонтальных полос надо увидеть, а вертикальных. Различие между двумя соседними квадратами по горизонтали. Именно они на 1/256 по яркости отличаются, и увидеть и в тёмной и в светлой части картинки. Ну правда у меня ещё десятый виндовс что-то с настройками яркости монитора нехорошее сделал.
|
|
|
|
|
Aug 6 2017, 21:10
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Цитата(jcxz @ Aug 6 2017, 20:36)  Откройте справочник по WinAPI, в нём поиск по BitBlt (и др.функции этого семейства), а также - функции рисования. Создёте плоскость в памяти, рисуете на ней, а потом при помощи BitBlt или PatBlt, ... копируете картинку в экранную плоскость. Каким образом тут 10 бит на пиксель ? Цитата(_pv @ Aug 6 2017, 19:00)  raw бы 10ти битный, чтобы понять разницу. Пардон ) raw нет в природе тк данные сразу пишутся в gBitmap->PixelFormat=pf24bit; и сохраняются в bmp тк пока на пиксель 8 бит то приходиться вводить логарифмическую шкалу, те на "верхах" детализация почти отсутствует ( На картинке почти везде "низы" если появиться хорошо отражающий объект то теряется структура. Короче, я так понял придется создавать свой gBitmap с двумя байтами на монохромный пиксель и выводить своей же программой которая сможет его причитать.
Сообщение отредактировал whale_nik - Aug 6 2017, 21:10
|
|
|
|
|
Aug 7 2017, 07:43
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(whale_nik @ Aug 7 2017, 00:10)  Каким образом тут 10 бит на пиксель ? Там можно и больше бит получить, не только 10. В цвете конечно. Цитата(_pv @ Aug 6 2017, 02:54)  во-первых обычные мониторы даже 8 бит нормально-то не отображают, а во-вторых далеко не каждый увидит разницу яркости в 0.5%, а уж тем более в градациях жёлтого цвета. А нужны ли эти 10 бит на экране? Зачем реально нужно отображать одновременно и самые яркие и самые тёмные участки? Т.е. - если на картинке есть яркие участки (как я понимаю - эхо от ближайших объектов), и при этом есть тёмные участки (от дальних объектов) - так ли реально нужно их отображать вместе? У автора же интерактивное отображение, а не картинка сохраняемая в файл. Сделать скажем отображение только 64 уровня яркости (или 32 - сколько удобно). Младшие биты отбросить - эти участки будут отображаться чёрным. Если пользователь хочет заглянуть вглубь этих чёрных участков - он жмёт кнопку "приблизить" - старшие биты яркости постепенно отбрасываются (яркие участки соответствующие им маскируются на экране каким-то специальным шаблоном/цветом), но проступают, становятся ярче тёмные участки - глубинные слои. Как то так.
|
|
|
|
|
Aug 7 2017, 09:23
|
Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 1-02-05
Из: the Earth
Пользователь №: 2 331

|
Цитата(whale_nik @ Aug 6 2017, 00:46)  Всем привет! Есть вопрос, имеется массив данных, каждое данное размером в два байта те 1024, нужно вывести картинку из этих данных, и чтобы каждый пиксель отображал всю градацию 0-1024. Как такое можно сделать ? Желательно в желтом цвете ) Знаю формат pf24bit но там на каждый цвет только то байту.... На крайний случай можно в сером. Прогаю в Buildere Со стороны "хардвера" Вам нужна такая видеокарта: 10/12-bit NVidia Graphic cardsи такой монитор: 10-bit NEC monitor(и это ещё не самые дорогие решения). 16 бит grayscale - это вряд ли. Хотя, у Вас небольшая путаница в исходных данных: 2 байта - это же никак не 1024
|
|
|
|
|
Aug 7 2017, 09:57
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
сохраняйте например в PNG который 16бит на цвет поддерживает, а потом "приблизить" можно в любом просмотрщике картинок, irfanview например (или через imagemagic преобразовать), покрутив яркость/контраст. однако на вашей картинке шумы такие, что отлогорифмированные 10 бит в 8 ничего там не испортят. честно отображать 10бит далеко не каждый монитор умеет, не говоря про то что заметна эта разница только на картинках с очень плавными градиентами, без шумов. Цитата(Димыч @ Aug 7 2017, 16:23)  Со стороны "хардвера" Вам нужна такая видеокарта: 10/12-bit NVidia Graphic cardsи такой монитор: 10-bit NEC monitor(и это ещё не самые дорогие решения). вроде у nvidia все что после 9хх 10хх умеет в 10ти битный цвет, а не только квадры, у амд тоже есть карты по-проще, да даже встроенный интел что-то умеет. и мониторы тоже есть попроще, не медицинские PA246Q, GW2765H. только имхо ничем это для этой картинки не поможет.
|
|
|
|
|
Aug 7 2017, 10:57
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Цитата(Димыч @ Aug 7 2017, 13:23)  16 бит grayscale - это вряд ли. Хотя, у Вас небольшая путаница в исходных данных: 2 байта - это же никак не 1024  Что два байта что 1024 для сохранения уже не важно ) Цитата(_pv @ Aug 7 2017, 13:57)  С шумами я борюсь еще не вечер. А как составить gBitmap для сохранения в png чтобы он 16бит /цвет поддерживал ?
Сообщение отредактировал whale_nik - Aug 7 2017, 10:58
|
|
|
|
|
Aug 7 2017, 14:27
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Цитата(_pv @ Aug 7 2017, 15:22)  взять libpng и просто писать в файл данные, png_write_image без составления каких-либо gBitmapов, чтобы это не значило. Не могли бы вы привести пример как записывать массив данных в два байта в png ?
|
|
|
|
|
Aug 7 2017, 15:21
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
для себя конечно можно хранить как угодно, хоть просто в 16ти битном raw, если размеры картинки сами знаете и они не меняются
а PNG это просто простой и распространённый формат, который все просмотрщики понимают, тогда можно просто тот же irfanview использовать, в нём можно и зумить и цветокоррекцию делать.
7МБ это bmp, который 1600*1600*3байта = 7.6МБ. PNG можно и 16ти битный GRAYSCALE сделать, это два байта на пиксель, плюс сжатие, которое правда на таких картинках не очень работает, но всё же. прикреплённая картинка в png занимает 2МБ с 8*3 = 24х битным цветом.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|