4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
1

Визуализация 16 битного raw файла: Нужен совет

27.04.2011, 10:39. Показов 1285. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Нужен совет, кто как решал бы такую задачу:

На входе есть монохромное изображение в виде raw файла - матрица из 2-х байтных значений интенсивности серого. И размеры этого изображения.

Задача: отобразить изображение на экране и регулировать яркость/контрастность...

У меня есть решение, но работает оно медленно и потребляет колоссальное количество ресурсов при выводе одновременно от 10 изображений...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2011, 10:39
Ответы с готовыми решениями:

Заполнение БД из текстового файла. Нужен совет!!!
Привет! Столкнулась с проблемкой: Имеется приложение на Builder, БД - Access, связь через ADO....

Нужен Совет, перезапись файла
Есть класс, наследник FileStream В определенный момент надо отчистить файл. и начать запись в него...

Нужен совет по чтению из файла и записи в структуру
Суть следующая я могу просто считать из файла с выводом на экран нужен совет или направление в...

нужен совет, как изменить свойства файла
каким образом можно изменить свойства файла,

3
Тутошний я
2143 / 1199 / 224
Регистрация: 03.11.2009
Сообщений: 4,399
Записей в блоге: 2
28.04.2011, 01:38 2
С помощью scanline быстро читали
Например в Построение линии длины изображения

Цитата Сообщение от davian Посмотреть сообщение
потребляет колоссальное количество ресурсов
Интересно а какой объём у 10 изображений.

Добавлено через 19 минут
Цитата Сообщение от davian Посмотреть сообщение
матрица из 2-х байтных значений интенсивности серого
Хотя если у тебя уже матрица, scanline не подойдёт.
А ссылку всё же глянь.

Добавлено через 5 минут
Если размеры(разрешение) изображений большие, может стоит делать выборку через 2-3 сенселя.
1
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
28.04.2011, 08:27  [ТС] 3
Цитата Сообщение от Grey Посмотреть сообщение
С помощью scanline быстро читали
Например в Построение линии длины изображения
Если не трудно, пример кода в студию....
Я делаю так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Graphics::TBitmap *BMP;
BMP = new Graphics::TBitmap();
BMP->PixelFormat = pf24bit;
PRGBTriple pxl;
byte s;
 
BMP->Width =  FrameWidth;
BMP->Height = FrameHeight;
short source;//читаем сюда 2 байта из 8 битного буфера (предварительно сформированный из 16 бит)
TMemoryStream* sB;// = new TMemoryStream();//источник 8 битный буфер
sB = _8bitBuffer;
sB->Position = 0;
 
 for (int Y = 0 ; Y < BMP->Height; Y++)
 {
    // Get line pointer
    pxl = (PRGBTriple)BMP->ScanLine[Y];
    // Write line
    for (int X = 0; X < BMP->Width; X++)
    {
        sB->Read(&source,2);
    s=(byte)source;
    pxl->rgbtBlue   = s;
    pxl->rgbtGreen  = s;
    pxl->rgbtRed    = s;
    pxl++;
 
 }
 }


Цитата Сообщение от Grey Посмотреть сообщение
Интересно а какой объём у 10 изображений.
Если верить диспетчеру задач, то до загрузки 10 изображения в графе "Выделение памяти", пункт "Всего" имел значение 1361092 Кб, а после загрузки 10 из-ий "Всего" = 2473400, т.е. на отображение 10 окон ушло 1112308 Кб памяти.... Если добавлю еще 4 окна, выходит исключение "Out of System Resources"
0
Evg
Эксперт CАвтор FAQ
21274 / 8291 / 637
Регистрация: 30.03.2009
Сообщений: 22,655
Записей в блоге: 30
28.04.2011, 12:31 4
Если я правильно понимаю твой принцип работы, то основной источник тормозов - это чтение короткими кусками. Лучше выделить память сразу под всё изображение (под его образ на файле, в потоке или где он там у тебя). Т.е. заводишь массив char'ов нужного размера и копируешь туда буфер цликом. И далее просто читаешь данные из памяти без всяких StreamBuffer'ов.

Второй источник тормозов - это поточечная прорисовка. Нужно ещё посмотреть, есть ли возможность работать с BMP таким образом, чтобы каждая точка НЕ рсовалась сразу. Т.е. сначала формируешь картинку в памяти, а потом одним махом её отображаешь на экране
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2011, 12:31
Помогаю со студенческими работами здесь

Копирование файла не используя системные библиотеки. нужен совет
Нужно скопировать один файл в другой( названия вводятся с клавиатуры). написал, но не работает комп...

специфика создание 32 - х битного и 64 - х битного приложение
Господа допустим есть программа 32-х битная как из неё сделать 64-х битную . Интересует вообще как...

Вывод 24 битного BMP из файла
Подскажите, пожалуйста, как прочитать 24 битный BMP файл и осуществить его вывод в 13h графическом...

Придание универсальности коду для построения осциллограммы 1-канального 8 битного wav файла
Вообщем имеется код для построения осциллограммы 1-канального 8 битного wav файла. Необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru