Сколько памяти необходимо для хранения стандартного экрана vga 640x480 256
Обновлено: 21.11.2024
Определение объема памяти дисплея на адаптере
Большинство существующих VGA-карт имеют 256 КБ на борту; однако есть вероятность, что на некоторых платах VGA их меньше. Чтобы на самом деле определить, есть ли на карте 256 КБ, необходимо фактически записать в память дисплея и прочитать значения. Если ОЗУ отсутствует в ячейке, то считанное значение не будет равно записанному значению. При этом целесообразно использовать несколько значений, поскольку неопределенный результат может совпадать с записанным значением. Кроме того, карта может использовать псевдонимы адресов, в результате чего, скажем, одни и те же 64 КБ ОЗУ появляются 4 раза в адресном пространстве 256 КБ, поэтому разумно изменить адрес и посмотреть, отразится ли это изменение где-либо еще в памяти дисплея. Кроме того, карта может буферизовать одну ячейку видеопамяти в наборе микросхем, из-за чего создается впечатление, что ОЗУ находится по адресу, где ее нет, поэтому вам может потребоваться чтение или запись во вторую ячейку, чтобы очистить буфер. Дело не в том, что если в поле «Расширенная память» не установлено значение 1, адаптер имеет только 64 КБ встроенной памяти, поэтому этот бит должен быть установлен в 1, прежде чем пытаться определить размер памяти.
Управление памятью дисплея
Аппаратное обеспечение VGA содержит оборудование, которое может выполнять битовые манипуляции с данными и позволяет хосту работать на всех четырех плоскостях дисплея за одну операцию. Эти функции довольно просты, но достаточно сложны, чтобы большинство программистов VGA предпочитали их игнорировать. К сожалению, правильное использование этих регистров имеет решающее значение для программирования 16 цветовых режимов VGA. Кроме того, знание этой функции во многих случаях может повысить производительность в других режимах, включая текстовый и 256-цветный режимы. В дополнение к обычным операциям чтения и записи аппаратное обеспечение VGA обеспечивает расширенные операции, такие как возможность быстрого сравнения, одновременная запись в несколько плоскостей и быстрое перемещение данных из одной области памяти дисплея в другую, более быстрые логические операции (И/ OR/XOR), а также чередование битов и маскирование.
Основы работы с цифровыми изображениями
Содержание:
1) Мотивы использования цифровых изображений.
2) Требования к генерации и хранению цвета (RGB).
3) Апплет для смешивания цветов.
4) Дизеринг.
5) Расчет места для хранения.
6) Уменьшение глубины цвета
7) Стандартные отраслевые форматы (GIF, JPEG, TIFF, BMP, PICT).
Носители для хранения и срок годности
Традиционно визуальная информация записывалась художником с использованием различных носителей или фотографами с помощью фотопленки. Каждый носитель имеет свой набор преимуществ, привлекательных для конкретного художника или фотографа. Каждая среда также имеет свой собственный набор ограничений. Например, камень, используемый скульптором, ограничен в цветовой гамме. В меньшей степени пленка и краска не всегда могут иметь желаемый цветовой диапазон. Однако скульптура продлевает жизнь, если ее должным образом защитить от непогоды. И краска, и фотопленка более подвержены разрушительному действию времени, теряя яркость цвета и четкость изображения. В частности, кинематографические изображения со временем исчезают до неузнаваемости. Срок службы черно-белой фотографии обычно составляет от 100 до 150 лет, если отпечатки и негативы хранятся в темноте при контролируемой температуре и влажности, когда их не просматривают. Большинство красок и пленок разлагаются (выцветают) в присутствии света. Срок годности цветной фотографии гораздо короче, возможно, всего от 40 до 80 лет. Большая часть ранних цветных фотодокументов эпохи президента Джона Ф. Кеннеди (1961–1963) была утеряна. Эти разрушительные действия можно предотвратить, если хранить носители (отпечатки, негативы, картины, письменные документы) в условиях с контролируемым освещением, температурой и влажностью, но не предотвращать их.
С другой стороны, цифровые изображения не подвержены старению в смысле потери цвета или резкости. Однажды записанный, он существует без потери качества в течение всего срока службы носителя. Кроме того, в отличие от других носителей, возможно изготовление точных копий. Возможность делать копии без потери качества — важная характеристика цифровых носителей. Если бы потолок Сикстинской капеллы работы Микеланджело был записан в цифровом виде после завершения, его реставраторам не пришлось бы сегодня задаваться вопросом, восстановили ли они его в точных цветах и линиях, созданных художником.
Вернуться к содержанию.
Требования к цвету и памяти
Традиционные телевизоры используют аналоговые сигналы для отображения изображений (синусоидальные сигналы). Компьютерные мониторы цифровые по своей природе.Изображение на мониторе состоит из рядов маленьких точек, называемых пикселями. С каждым пикселем связан цвет. с этим. Когда точки достаточно малы и расположены достаточно близко друг к другу, глаз воспринимает не точки, а непрерывное изображение. Типичная плотность записи для мониторов персональных компьютеров (ПК) включает 640 (по горизонтали) на 480 (по вертикали, стандартный VGA), 800 на 600 и 1024 на 768 (SVGA). Как правило, чем больше вы платите, тем выше разрешение и потенциальное качество изображения. Еще одним важным соображением является количество цветов, связанных с каждым пикселем. Монохромные экраны, например черно-белые или янтарно-черные, ассоциируют только два цвета с каждым пикселем. Другие распространенные ассоциации: 256 цветов на пиксель; 32 768 цветов; 65 536 цветов и 16 777 216 цветов на пиксель. Диапазон доступных цветов называется палитрой. Основное ограничение на размер палитры (количество цветов) традиционно было связано с объемом памяти, необходимой для хранения и/или отображения изображения. Компьютеры используют двоичную систему счисления для записи информации. Базовой единицей информации является «бит», который может хранить только два значения. Таким образом, для монохромных экранов требуется только один бит на пиксель. Для хранения более двух цветов на пиксель используются группы связанных битов. Например, чтобы связать 256 цветов с пикселем, требуется 8 бит (2**8 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 256); Для 32 766 цветов требуется 16 бит. На самом деле ситуация немного сложнее. Для представления цвета на экране каждый пиксель фактически состоит из трех цветовых компонентов: красного, зеленого и синего. Их часто называют значением RGB пикселя. Например, предположим, что значение (интенсивность) красного, зеленого и синего может принимать 256 значений (от 0 до 255) для пикселя. Значение RGB (255, 0, 0) будет означать красный пиксель, значение RGB (0, 255, 0) будет зеленым, а значение RGB (0, 0, 255) будет синим. RGB (255, 255, 255) — белый, (0, 0, 0) — черный. Изменение значения RGB трех цветовых элементов заставляет глаз воспринимать широкий диапазон цветов. Это означает, что (3 цвета) * (8 бит на цвет) = 24 бита для записи цвета для каждого пикселя. Общий диапазон цветов при 24 битах на пиксель (8 на значение RGB) составляет 256 * 256 * 256 = 16 777 216 цветов. Кроме того, многие мониторы сохраняют значение непрозрачности изображения, для которого требуется еще больше битов (обычно 8 бит). Непрозрачность указывает, какая часть изображения ниже текущего изображения может просвечиваться. В дополнение к предоставлению художнику свободы выражения, непрозрачность позволяет использовать цифровые водяные знаки для защиты материала от интеллектуальной кражи.
Вернуться к содержанию.
Вы можете поэкспериментировать со смешением цветов со следующим апплетом Java. Ваш дисплей может не поддерживать 16 777 216. Если он поддерживает меньше максимального количества цветов, он сопоставит указанный вами цвет с ближайшим цветом в его ограниченной палитре. Квадрат на экране должен быть розовым (RGB = 255, 175, 175), если ваш монитор настроен правильно и розовый цвет находится в палитре. Введите нужные значения для красного, зеленого и синего (от 0 до 255), а затем нажмите клавишу возврата, чтобы обновить экран.
Вернуться к содержанию.
Дизеринг
Многие программные пакеты используют процесс, называемый дизерингом, для создания большего количества цветов, чем позволяет текущая цветовая палитра. Основной процесс заключается в смешивании блоков пикселей разных цветов на вкус в чередующихся узорах. Вблизи эффект кажется лоскутным. На расстоянии глаз смешивает цвета, создавая эффект желания. Например, предположим, что монитор поддерживает только черный и белый цвета, а нам нужен серый. Чередование пикселей черного и белого может повлиять на желаемый оттенок серого. Больше черных пикселей для темно-серого, больше белых пикселей для более светлых оттенков серого. Если смотреть с достаточного расстояния, следующий рисунок будет казаться серым.
Вернуться к содержанию.
Разрешение и место для хранения
Вернемся к идее хранилища, необходимого для изображения. Старые компьютерные мониторы допускают всего 256 цветов в палитре. Предположим, у вас монитор с разрешением 640 на 480 пикселей и 256 цветами на пиксель. Отсюда следует 640 * 480 = 307 200 пикселей. Напомним, что для 256 значений требуется 8 бит памяти компьютера. Следовательно (307 200 пикселей) * (8 бит на пиксель) = 2 457 600 бит памяти. Обычный метод продажи компьютерной памяти — 8-битные группы, называемые байтами. Следовательно, для изображения потребуется (2 457 600 бит) / (8 бит на байт) = 307 200 байт компьютерной памяти. Если предположить, что 24 бита на пиксель (часто называемый истинным цветом), то для разрешения 800 на 600 потребуется 24 * 800 * 600 = 11 520 000 бит памяти или 11 520 000 / 8 = 1 440 000 байт памяти. Изображение, отображаемое или сохраняемое с разрешением 1024 на 768 и 24-битным цветом, потребует 2 359 296 байт памяти.Поскольку для отображения изображения требуется дополнительная информация, компьютерным графическим картам обычно требуется не менее 4 мегабайт памяти для получения удовлетворительных изображений. Высокопроизводительным системам может потребоваться 8 или даже 16 мегабайт памяти на изображение. Чем выше качество желаемого изображения, тем больше требуется места для хранения и, следовательно, выше стоимость записи изображения. В большинстве цифровых камер низкой и средней стоимости используется разрешение 640 * 480 = 307 200 пикселей или 800 * 600 = 480 000 пикселей с 24 битами на пиксель для записи цвета. Сканеры и принтеры обычно оцениваются по количеству точек (пикселей) на дюйм, которое они поддерживают.
Обратите внимание, что разрешение экрана (количество пикселей и цветов) определяет объем памяти, необходимый для "снимка экрана" из Интернета. Окончательный размер документа, содержащего изображения из Интернета, цифровых камер и сканеров, зависит от того, на какой скорости был снят или создан материал. Эти же аргументы применимы к определению требований к памяти для цифровых камер. Что происходит, когда изображение, первоначально снятое с разрешением 800 на 600 и 32 766 цветов, отображается на экране с разрешением 1024 на 768 и 16 777 216 цветов. Компьютер расширяет изображение, чтобы заполнить необходимое пространство. Как правило, более крупное изображение несколько теряет в качестве. Аналогичный эффект наблюдается при увеличении фотографии за пределами качества негатива.
Вернуться к содержанию.
Уменьшение глубины
-
Многие художественные программы позволяют пользователю уменьшить «глубину» изображения. В качестве типичного примера изображение из 16 777 216 цветов может быть уменьшено до изображения, содержащего 32 766 цветов или 256 цветов. В зависимости от изображения пользователь может не заметить разницу в качестве изображения. Это часто делается для уменьшения размера хранимого изображения или уменьшения объема информации, которая должна быть передана в удаленное место по средству связи. Обратите внимание, что после уменьшения и сохранения качество исходного изображения невозможно восстановить. В качестве примера рассмотрим две версии приведенной выше картинки. Картинка слева содержит 128 246 уникальных цветов. Изображение справа было получено путем сохранения исходного изображения с использованием палитры из 256 цветов. Программное обеспечение пыталось сопоставить каждый пиксель в палитре из 128 246 цветов с ближайшим соответствием в палитре из 256 цветов. Потеря цвета (детали) наиболее заметна на лепестках в правом нижнем углу изображения. При необходимости измените размер изображений, чтобы они располагались рядом в окне просмотра для сравнения.
Вернуться к содержанию.
Стандартные отраслевые форматы хранения
Файлы изображений хранятся на компьютерах в универсальных форматах, поэтому их можно передавать и интерпретировать различными типами аппаратного и программного обеспечения. Наиболее популярными форматами, используемыми в настоящее время в Интернете, являются формат обмена графикой (GIF или .jpg), Объединенная группа экспертов по фотографии (JPEG или .jpg) и формат файла изображения с тегами (TIFF или .tif). JPEG и GIF особенно популярны в Интернете. Как в формате GIF, так и в формате JPEG существует несколько вариантов хранения информации. Также существуют специальные форматы поставщиков, такие как BMP (битовое отображение, .bmp) на компьютерах с Microsoft Windows и PICT (.pic) на компьютерах Apple. Целью большинства форматов записи является уменьшение размера сохраняемого изображения. Например, многие программные пакеты, работающие под Microsoft Windows, поддерживают RLE (кодирование длин серий). В качестве конкретного примера (если вы позволите несколько вольностей с техническими деталями), строка или 20 красных пикселей в строке могут храниться как 20R, а не как RRRRRRRRRRRRRRRRRRRRRR. Чем больше избыточности в изображении, тем больше места можно сэкономить. Многие методы кодирования зависят от числовых процедур для уменьшения памяти. Хотя эти числовые процедуры намного эффективнее уменьшают размер хранимого изображения, они часто делают это за счет точности. Как показано на приведенных выше изображениях, потерю точности может быть трудно предсказать. Если бит время от времени теряется, человеческий глаз может не заметить эту потерю. Обратите внимание, что уменьшение количества цветов в изображении для экономии места не всегда может помочь. Изображение с количеством цветов менее или равным 256 можно сохранить в формате BMP, используя только 8 бит на пиксель. Если 0 < количество цветов < 16 777 216, BMP использует 24 бита на пиксель. Однако JPEG имеет тенденцию использовать 24 бита на пиксель независимо от количества сохраненных цветов. Однако вам может потребоваться меньше места для хранения, поскольку алгоритм сжатия работает с уменьшенным количеством цветов.
Этот контент был заархивирован и больше не поддерживается Университетом Индианы. Информация здесь может быть неточной, а ссылки могут быть недоступны или ненадежны.
На протяжении многих лет в ПК использовалось множество различных мониторов и видеокарт. Видеокарты и мониторы описываются следующими характеристиками:
- Количество пикселей. Пиксель – это одна точка, отображаемая на экране. Большинство экранных изображений состоят из сотен пикселей. Добавление большего количества пикселей к изображению делает изображение более подробным. Изображение на экране обычно описывается двумя числами. Первое число — это количество пикселей в верхней части экрана, а второе — количество пикселей в нижней части экрана.
- Количество цветов. Графические карты могут отображать ограниченное количество цветов. Самые старые мониторы могли отображать только два или четыре цвета. В настоящее время 256 цветов — это минимум для большинства систем. Количество цветов выше 256 обычно описывается тем, сколько компьютерных битов используется для хранения цвета в памяти. 16 бит – более 65 000 цветов, 2 4 бит – более 16 миллионов цветов.
Ниже перечислены некоторые из наиболее распространенных стандартов видеокарт и мониторов для ПК:
- SVGA (Super VGA). Одна из самых популярных этикеток, которые наносятся на видеокарты и мониторы. Карта или монитор SVGA способны отображать больше пикселей (точек на экране) и/или цветов, чем базовый VGA. Например, видеокарта SVGA может отображать 16-битный цвет с разрешением 800 x 600 пикселей.
- Карты 3D-ускорения. Эти карты содержат специализированное оборудование, которое ускоряет процесс отображения трехмерных изображений на экране. Обычно они предназначены для работы с монитором SVGA.
- VGA (адаптер видеографики): в настоящее время является базовым стандартом для видеокарт и мониторов ПК. True VGA поддерживает 16 цветов при разрешении 640 x 480 пикселей или 256 цветов при разрешении 320 x 200 пикселей.
- XGA: стандарт, используемый в некоторых моделях IBM PS/2. XGA поддерживает 256 цветов при разрешении 1024 x 728 пикселей или 16 битных цветов при разрешении 640 x 480 пикселей.
- EGA (улучшенный графический адаптер): после CGA — адаптер, способный отображать 16 цветов при разрешении экрана 640 x 350 пикселей.
- CGA (адаптер цветной графики): первый цветной монитор и видеокарта для ПК. Возможность воспроизведения 16 цветов с разрешением 160 x 200 пикселей.
- MDA (адаптер монохромного дисплея): монитор или видеокарта, которые могут отображать только один цвет. Больше не используется, но может быть найден в некоторых старых системах. Обычно поддерживает только текст.
- Графическая карта Hercules: карта, позволяющая ПК отображать графику на мониторе MDA.
Дополнительную информацию о стандартах отображения видео на ПК можно найти по адресу:
VGA – это массив видеографики, который иногда называют адаптером видеографики. Это видеокарта, которая является интерфейсом между компьютером и соответствующим ему монитором. Карта VGA является наиболее распространенной видеокартой — почти каждая видеокарта совместима с VGA — и ее довольно легко программировать. Он предлагает множество различных видеорежимов, от 2 до 256 цветов, и разрешения от 320x200 до 640x480. В этом руководстве особое внимание уделяется единственному 256-цветному режиму VGA, известному как режим 0x13.
Структура режима 0x13
В режиме 0x13 размеры экрана составляют 320 пикселей в ширину и 200 пикселей в высоту. Это отображается от 0 до 319 по оси x и от 0 до 199 по оси y с началом координат (0,0) в верхнем левом углу (рис. 1). ). Так как это 256-цветный режим, каждый пиксель представляет 8 бит (2 8 = 256) или один байт, поэтому необходимая память составляет 320*200 или 64 000 байт.
Рисунок 1. Структура режима 0x13.
Настройка видеорежима
Чтобы установить видеорежим, вызовите прерывание 0x10 (видеофункции BIOS) с 0 (нулем) в регистре AH и желаемым номером режима в регистре AL. Для режима 0x13 код (Borland C) будет следующим:
Чтобы вернуться в текстовый режим после завершения программы, просто установите номер режима равным 3.
Построение пикселя
Простым способом построения пикселя является использование функции 0x0C при прерывании BIOS 0x10. Для этой функции установите CX и DX в положение пикселя x и y. Отображаемый цвет зависит от значения в AL. См. Таблицу I для списка распространенных цветов.
Этот метод построения пиксельных графиков прост, но очень медленный. BIOS выполнит определенные проверки, чтобы убедиться, что ввод действителен, а затем проверит, находятся ли координаты (x,y) в пределах границ экрана, и наконец, он рассчитает смещение к видеопамяти. Более быстрый способ построения пикселя — запись непосредственно в видеопамять.
Режим памяти 0x13
Как упоминалось ранее, память, необходимая для режима 0x13, составляет 64 000 байт. Эта память расположена в сегменте 0xA000 в памяти компьютера. Простая запись в эту область памяти также приведет к записи на экран. Отображаемый цвет зависит от значения байта, записанного в память.
Таблица I. Первые 16 цветов VGA.
Поскольку память является линейной (в отличие от экрана компьютера, который имеет измерения как x, так и y), для построения пикселя необходимо вычислить смещение в памяти компьютера. .Для этого значение y умножается на ширину экрана, или 320, и к этому прибавляется значение x. Таким образом, чтобы построить пиксель в позиции (256,8), сначала вычислите 256+8*320=2816 или 0xB00, затем запишите в сегмент 0xA000, смещение 0xB00. Следующий программный сегмент создает указатель на адрес 0xA000:0000, вычисляет смещение по двум переменным, а затем записывает в рассчитанную ячейку памяти.
Быстрое построение пикселя
Предыдущий код имеет следующие характеристики:
- Переменная offset должна быть коротким типом данных без знака (16 бит в диапазоне от 0 до 65 535), поскольку размер памяти, необходимой для режима 0x13, составляет 64 000 байт. Использование беззнакового короткого типа данных помогает гарантировать, что мы не будем случайно записывать в область памяти, которая не является частью видеопамяти, что может привести к сбою нашей программы.
- Если бы y было равно 5, а x равно 340, пиксель отображался бы как (20,6), так как видеопамять в режиме 0x13 является линейной, а ширина экрана составляет всего 320. Функция BIOS не отображала бы пиксель на экране для (340,5), так как он обрезает границы экрана.
- Указатель на сегмент памяти VGA должен быть далеко при компиляции в меньших модулях памяти. Если используется модуль памяти COMPACT, LARGE или HUGE, ключевое слово far можно удалить.
- В большинстве расширителей DOS 32-битный указатель защищенного режима на видеопамять будет иметь значение 0xA0000 вместо указателя смещения сегмента 0xA0000000L .
Программа: pixel.c
Следующая программа демонстрирует, насколько быстрее осуществляется запись напрямую в видеопамять. Он строит 50 000 пикселей с помощью BIOS, затем делает то же самое, записывая непосредственно в видеопамять, а затем отображает результаты.
DJGPP 2.0 View pixel.c
Загрузить pixel.zip (содержит pixel.c, pixel.exe) Borland C, Turbo C и т. д. View pixel.c
Загрузить pixel.zip (содержит pixel .c, пиксель.exe)
Возникли проблемы с компиляцией или запуском программы? См. страницу устранения неполадок.
Эта программа, как и все другие программы в этом руководстве, работала на процессоре 486dx 33 МГц с 8 МБ памяти, 128 КБ кэш-памяти и 16-разрядной картой ISA SVGA. Результаты работы pixel.exe на этом компьютере были следующими:
Сдвиг
Способ еще больше ускорить прорисовку пикселей — использовать смещение вместо умножения при вычислении смещения. Сдвиг числа влево означает перемещение всех битов числа влево, что дает эффект умножения на два (рис. 3).
Рис. 3. Сдвиг числа влево.
Если число n было сдвинуто влево три раза, результатом будет 2 3 n или 8n. В C это делается с помощью оператора:
Чтобы умножить число на 320, которое не является степенью двойки, разбейте число на степени двойки: 256 и 64. Например,
320у = 256у + 64у,
поэтому рассчитайте смещение следующим образом:
В следующем разделе, посвященном основным элементам рисования, этот прием часто используется.
Читайте также: