Димыч 0 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба Всем привет! Есть вопрос, имеется массив данных, каждое данное размером в два байта те 1024, нужно вывести картинку из этих данных, и чтобы каждый пиксель отображал всю градацию 0-1024. Как такое можно сделать ? Желательно в желтом цвете ) Знаю формат pf24bit но там на каждый цвет только то байту.... На крайний случай можно в сером. Прогаю в Buildere Со стороны "хардвера" Вам нужна такая видеокарта: 10/12-bit NVidia Graphic cards и такой монитор: 10-bit NEC monitor (и это ещё не самые дорогие решения). 16 бит grayscale - это вряд ли. Хотя, у Вас небольшая путаница в исходных данных: 2 байта - это же никак не 1024 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба сохраняйте например в PNG который 16бит на цвет поддерживает, а потом "приблизить" можно в любом просмотрщике картинок, irfanview например (или через imagemagic преобразовать), покрутив яркость/контраст. однако на вашей картинке шумы такие, что отлогорифмированные 10 бит в 8 ничего там не испортят. честно отображать 10бит далеко не каждый монитор умеет, не говоря про то что заметна эта разница только на картинках с очень плавными градиентами, без шумов. Со стороны "хардвера" Вам нужна такая видеокарта: 10/12-bit NVidia Graphic cards и такой монитор: 10-bit NEC monitor (и это ещё не самые дорогие решения). вроде у nvidia все что после 9хх 10хх умеет в 10ти битный цвет, а не только квадры, у амд тоже есть карты по-проще, да даже встроенный интел что-то умеет. и мониторы тоже есть попроще, не медицинские PA246Q, GW2765H. только имхо ничем это для этой картинки не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 7 августа, 2017 Опубликовано 7 августа, 2017 (изменено) · Жалоба 16 бит grayscale - это вряд ли. Хотя, у Вас небольшая путаница в исходных данных: 2 байта - это же никак не 1024 :) Что два байта что 1024 для сохранения уже не важно ) С шумами я борюсь еще не вечер. А как составить gBitmap для сохранения в png чтобы он 16бит /цвет поддерживал ? Изменено 7 августа, 2017 пользователем whale_nik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба А как составить gBitmap для сохранения в png чтобы он 16бит /цвет поддерживал ? взять libpng и просто писать в файл данные, png_write_image без составления каких-либо gBitmapов, чтобы это не значило. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба взять libpng и просто писать в файл данные, png_write_image без составления каких-либо gBitmapов, чтобы это не значило. Не могли бы вы привести пример как записывать массив данных в два байта в png ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба в гугле забанили? http://zarb.org/~gc/html/libpng.html http://www.labbookpages.co.uk/software/imgProc/libPNG.html png_set_IHDR(png_ptr, info_ptr, width, height, 816, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 7 августа, 2017 Опубликовано 7 августа, 2017 (изменено) · Жалоба Спасибо. Я так понимаю файл будет в два раза больше чем нужно для дела, те если сейчас он 7 мб то будет 14мб уже многовато. А другой вариант если просто записывать двумерный массив в файл где на каждое измерение 2 байта, а потом написать прогу которая считывает его и выводит в канву, можно сделать локальное увеличение выбранного участка, все будет прозрачно и занимать мало места. Заодно можно написать любые фильтры по желанию, причем это будет быстро и легко ) Изменено 7 августа, 2017 пользователем whale_nik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба для себя конечно можно хранить как угодно, хоть просто в 16ти битном raw, если размеры картинки сами знаете и они не меняются а PNG это просто простой и распространённый формат, который все просмотрщики понимают, тогда можно просто тот же irfanview использовать, в нём можно и зумить и цветокоррекцию делать. 7МБ это bmp, который 1600*1600*3байта = 7.6МБ. PNG можно и 16ти битный GRAYSCALE сделать, это два байта на пиксель, плюс сжатие, которое правда на таких картинках не очень работает, но всё же. прикреплённая картинка в png занимает 2МБ с 8*3 = 24х битным цветом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 7 августа, 2017 Опубликовано 7 августа, 2017 · Жалоба Так и сделаю, буду сохранять данные в текстовом формате, а потом уже напишу или конвертатор в png или свое что то. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 8 августа, 2017 Опубликовано 8 августа, 2017 · Жалоба Еще один быстрый вопрос, есть массив short data[1600] как его вывести в файл одной строкой типа ofstream fout; fout.write((char*) &data, sizeof data); тут выводит но какую то фигню Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 1 8 августа, 2017 Опубликовано 8 августа, 2017 · Жалоба Вопрос решился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться