![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Madest |
|
|||
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 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: 1 Всего: 5 |
Обычно в винде все и все преоюразуют в GRB 24 для вывода, а обрабатывать можно любую "руками". Но перед выводом надо преобразовать в один из стандартныйх форматов
-------------------- С наилучшими пожеланиями !!! |
|||
|
||||
Madest |
|
|||
Unregistered |
Спасибо.
Так выходит и на принтер не вывести "глубже" GrayScale 8. Зачем тогда придумали GrayScale 16? Для внутренней обработки изображений хватило бы пары дополнительных битов к 8-ми. А? |
|||
|
||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
В о первых, не надо путать существующие форматы в жизни и в винде - если в майкрософте не сделали стнадартную потдержку 16-bit GrayScale - не надо сразу думать что это что-то нереальное.
Во вторых, как сказал knave, если критично не потерять качетсов при выводе на экран, то преобразуй хоть к 24 бит - информация из 12-bit не потеряется. А вообще все зависит от задач, которые ставятся перед программой. Если просто отобразить картинку, то решений может быть найдено с десяток за 5 минут, если же вы занимаетесь обработкой изображений с каких-то сканирующих устройств (например для задач ДЗЗ в ГИС), то вопрос не в том как отобразить, а как использовать в работе.
Почему интерсно? Если принтер потянет глубину 16бит, то выводи как удобней.
А не кто его не придумавал. Это все равно что спросить зачем придумали 16-ричную систему счисления? Просто цветовая насыщенность одного пиксела в твоем случае выражается 12битным числом (в двоичной системе счисления) без потери точности. |
||||
|
|||||
Unregistered |
|
|||
Unregistered |
А каким образом можно нарисовать в контексте принтера GrayScale>8bit? Пишу на VC6.0. Умею только функцией StretchDIBits(), но она только с битмапами работает.
|
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Ну и почему не пользуешься? Или у тебя не битмап? И в каком формате входное изображение?
И на сколько программа серьезная? |
|||
|
||||
Madest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Так ведь Битмапы бывают максимум RGB24. А в битмап RGB24 можно записать только 256 вариантов черно-белого.
Входное изображение 2 пиксела по 12 бит в 3 байтах с визиографа (стоматология). Распаковываю в свой внутренний 16-битный (хранение и обработка изображений по стандарту DICOM минимум GrayScale16) Вывожу на экран и на принтер обрезая до 8 функцией StretchDIBits(), преобразовав в битмап RGB24, задав трем цветам одинаковую интенсивность. Тут все без проблем. Ну а если принтер может >8? Ведь в контекст принтера я рисую тоже StretchDIBits(), причем в той же функции OnDraw(CDC* pDC). Может я чего-то недопонимаю... Проект серьезьней некуда =) --------------------
|
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Ну вот, приехали ![]() Просто не нужно пытаться все операции сделать средствами GDI. Обрабатывай это изображение своими алгоритмами, а на экран или принтер выводи преобразуя к наиболее подходящему. |
|||
|
||||
Madest |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Будем думать. Спасибо.
--------------------
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |