Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GrayScale 16 bit 
:(
    Опции темы
Madest
Дата 26.11.2003, 16:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня устройство выдает черно-белую картинку глубиной 12 бит. Мне нужно ее по всякому обрабатывать и выводить на всякие контексты. Выводить умею функцией StretchDIBits(), которая обрабатывает только Битмапы. А глубина у них 1,2,4,8 И 24 бита. Если конвертну 12-битные черно-белые данные в RGB с одинаковой интенсивностью, то это получиться 36 бит. Отрезать 4 бита от входящей картинки нельзя, начальство обещает в скором будущем вообще 16-битную картинку. Как быть? Может есть все-таки какой-нить битмап GrayScale 16-битный? Или API-функции вывода, независящие от растровых данных.
А можно ли вообще на монитор вывести GrayScale больше 8 бит? Ведь разрешение видеоадаптера максимум 32 бита. Т.е. на RGB 24 бита + 8 на альфа-канал. Или эта альфа-прозрачность и дает 256-ти RGB-шным вариантам черно-белого еще 256, образуя 16-битный GrayScale?
Подскажите, пожалуйста, кто чего знает.
  Вверх
knave
Дата 26.11.2003, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: 1
Всего: 5



Обычно в винде все и все преоюразуют в GRB 24 для вывода, а обрабатывать можно любую "руками". Но перед выводом надо преобразовать в один из стандартныйх форматов


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
Madest
Дата 26.11.2003, 18:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо.
Так выходит и на принтер не вывести "глубже" GrayScale 8. Зачем тогда придумали GrayScale 16? Для внутренней обработки изображений хватило бы пары дополнительных битов к 8-ми. А?
  Вверх
DENNN
Дата 27.11.2003, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



В о первых, не надо путать существующие форматы в жизни и в винде - если в майкрософте не сделали стнадартную потдержку 16-bit GrayScale - не надо сразу думать что это что-то нереальное.
Во вторых, как сказал knave, если критично не потерять качетсов при выводе на экран, то преобразуй хоть к 24 бит - информация из 12-bit не потеряется.
А вообще все зависит от задач, которые ставятся перед программой. Если просто отобразить картинку, то решений может быть найдено с десяток за 5 минут, если же вы занимаетесь обработкой изображений с каких-то сканирующих устройств (например для задач ДЗЗ в ГИС), то вопрос не в том как отобразить, а как использовать в работе.
Цитата
Так выходит и на принтер не вывести "глубже" GrayScale 8.

Почему интерсно? Если принтер потянет глубину 16бит, то выводи как удобней.
Цитата
Зачем тогда придумали GrayScale 16? Для внутренней обработки изображений хватило бы пары дополнительных битов к 8-ми. А?

А не кто его не придумавал. Это все равно что спросить зачем придумали 16-ричную систему счисления? Просто цветовая насыщенность одного пиксела в твоем случае выражается 12битным числом (в двоичной системе счисления) без потери точности.
PM ICQ   Вверх
Unregistered
Дата 27.11.2003, 10:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А каким образом можно нарисовать в контексте принтера GrayScale>8bit? Пишу на VC6.0. Умею только функцией StretchDIBits(), но она только с битмапами работает.
  Вверх
DENNN
Дата 27.11.2003, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Ну и почему не пользуешься? Или у тебя не битмап? И в каком формате входное изображение?
И на сколько программа серьезная?
PM ICQ   Вверх
Madest
Дата 27.11.2003, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Так ведь Битмапы бывают максимум RGB24. А в битмап RGB24 можно записать только 256 вариантов черно-белого.
Входное изображение 2 пиксела по 12 бит в 3 байтах с визиографа (стоматология). Распаковываю в свой внутренний 16-битный (хранение и обработка изображений по стандарту DICOM минимум GrayScale16) Вывожу на экран и на принтер обрезая до 8 функцией StretchDIBits(), преобразовав в битмап RGB24, задав трем цветам одинаковую интенсивность. Тут все без проблем. Ну а если принтер может >8? Ведь в контекст принтера я рисую тоже StretchDIBits(), причем в той же функции OnDraw(CDC* pDC). Может я чего-то недопонимаю...
Проект серьезьней некуда =)

--------------------
PM MAIL   Вверх
DENNN
Дата 27.11.2003, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата
А в битмап  RGB24  можно записать только 256 вариантов черно-белого.

Ну вот, приехали smile.gif Это если пользоваться стандартами именно BITMAP.
Просто не нужно пытаться все операции сделать средствами GDI. Обрабатывай это изображение своими алгоритмами, а на экран или принтер выводи преобразуя к наиболее подходящему.

PM ICQ   Вверх
Madest
Дата 27.11.2003, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 27.11.2003
Где: Городок

Репутация: нет
Всего: нет



Будем думать. Спасибо.
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.