Задача №9. Кодирование звуковой и графической информации. Передача информации.


Автор материалов — Лада Борисовна Есакова.

При оцифровке звука в памяти запоминаются только отдельные значения сигнала. Чем чаще записывается сигнал, тем лучше качество записи.

Частота дискретизации f – это количество раз в секунду, которое происходит преобразование аналогового звукового сигнала в цифровой. Измеряется в Герцах (Гц).

Глубина кодирования (а также, разрешение) – это количество бит, выделяемое на одно преобразование сигнала. Измеряется в битах (Бит).

Возможна запись нескольких каналов: одного (моно), двух (стерео), четырех (квадро).

Обозначим частоту дискретизации – f (Гц), глубину кодирования – B(бит), количество каналов – k, время записи – t(Сек).

Количество уровней дискретизации d можно рассчитать по формуле: d = 2B.

Тогда объем записанного файла V(бит)  = f * B * k

* t.

Или, если нам дано количество уровней дискретизации,

V(бит)  = f * log2d * k * t.

Единицы измерения объемов информации:

1 б (байт) = 8 бит

1 Кб (килобайт) = 210 б

1 Мб (мегабайт) = 220 б

1 Гб (гигабайт) = 230 б

1 Тб (терабайт) = 240 б

1 Пб (петабайт) = 250 б

 

При оцифровке графического изображения качество картинки зависит от количества точек и количества цветов, в которые можно раскрасить точку.

Если X – количество точек по горизонтали,

Y – количество точек по вертикали,

I – глубина цвета (количество бит, отводимых для кодирования одной точки), то количество различных цветов в палитре N = 2I. Соответственно, I = log2N.

Тогда объем файла, содержащего изображение, V(бит) = X * Y * I

Или, если нам дано количество цветов в палитре, V(бит) = X * Y * log2N.

Скорость передачи информации по каналу связи (пропускная способность канала) вычисляется как количество информации в битах, переданное за 1 секунду (бит/с).

Объем переданной информации вычисляется по формуле V = q * t, где q – пропускная способность канала, а t – время передачи.

 

Кодирование звука

Пример 1.

Производится двухканальная (стерео) звукозапись с частотой дискретизации 16 кГц и глубиной кодирования 32 бит. Запись длится 12 минут, ее результаты записываются в файл, сжатие данных не производится. Какое из приведенных ниже чисел наиболее близко к размеру полученного файла, выраженному в мегабайтах?

1) 30               2) 45           3)  75         4)  90

Решение:

V(бит)  = f(Гц)* B(бит) * k * t(Сек),

где V – размер файла, f – частота дискретизации, B – глубина кодирования, k – количество каналов, t – время.

Значит, V(Мб) = (f * B * k * t ) / 223

Переведем все величины в требуемые единицы измерения:

V(Мб) = (16*1000 * 32 * 2 * 12 * 60 ) / 223

Представим все возможные числа, как степени двойки:

V(Мб) = (24 * 23 * 125 * 25 * 2 * 22 * 3 * 15 * 22) / 223 = (5625 * 217) / 223 = 5625 / 26 =

5625 / 64 ≈ 90.

Ответ: 4

!!! Без представления чисел через степени двойки вычисления становятся намного сложнее.

!!! Частота – это физическая величина, а потому 16 кГц = 16 * 1000 Гц, а не 16 * 210. Иногда этой разницей можно пренебречь, но на последних диагностических работах она влияла на правильность ответа.

 

Пример 2.

В те­че­ние трех минут про­из­во­ди­лась четырёхка­наль­ная (квад­ро) зву­ко­за­пись с ча­сто­той дис­кре­ти­за­ции 16 КГц и 24-бит­ным раз­ре­ше­ни­ем. Сжа­тие дан­ных не про­из­во­ди­лось.

Какая из при­ве­ден­ных ниже ве­ли­чин наи­бо­лее близ­ка к раз­ме­ру по­лу­чен­но­го файла?

 

1) 25 Мбайт

2) 35 Мбайт

3) 45 Мбайт

4) 55 Мбайт

Решение:

V(бит)  = f(Гц)* B(бит) * k * t(Сек),

где V – размер файла, f – частота дискретизации, B – глубина кодирования (или разрешение), k – количество каналов, t – время.

Значит, V(Мб) = (f * B * k * t ) / 223 = (16 * 1000 * 24 * 4 * 3 * 60) / 223 = (24 * 23 * 125 * 3 * 23 * 22

* 3 * 15 * 22) / 223 = (125 * 9 * 15 * 214) / 223 = 16875 / 29 = 32, 96 ≈ 35

Ответ: 2

 

Пример 3.

Ана­ло­го­вый зву­ко­вой сиг­нал был записан сна­ча­ла с ис­поль­зо­ва­ни­ем 64 уров­ней дис­кре­ти­за­ции сиг­на­ла, а затем с ис­поль­зо­ва­ни­ем 4096 уров­ней дис­кре­ти­за­ции сиг­на­ла. Во сколь­ко раз уве­ли­чил­ся ин­фор­ма­ци­он­ный объем оциф­ро­ван­но­го звука?

            1) 64

2) 8

3) 2

4) 12

Решение:

V(бит)  = f * log2d * k * t, где V – размер файла, f – частота дискретизации, d – количество уровней дискретизации, k – количество каналов, t – время.

V1 = f * log264 * k * t = f * 6 * k * t

V2 = f * log24096 * k * t = f * 12 * k * t

V2 / V1 = 2

Пра­виль­ный ответ ука­зан под но­ме­ром 3.

Ответ: 3

 

Кодирование изображения

Пример 4.

Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 64×64 пикселей при условии, что в изображении могут использоваться 256 различных цветов? В ответе запишите только целое число, единицу измерения писать не нужно.

Решение:

V(бит) = X * Y * log2N, где V – объем памяти, X,Y – количество пикселей по горизонтали и вертикали, N – количество цветов.

V (Кб) = (64 * 64 * log2256) / 213 = 212 * 8 / 213 = 4

Ответ: 4

 

Пример 5.

Для хранения растрового изображения размером 64×32 пикселя отвели
1 килобайт памяти. Каково максимально возможное число цветов в палитре изображения?

Решение:

V(бит) = X * Y * log2N, где V – объем памяти, X,Y – количество пикселей по горизонтали и вертикали, N – количество цветов.

log2N = V /( X*Y) = 213 / (26 * 25) = 4

N = 16

Ответ:16

 

Сравнение двух способов передачи данных

Пример 6.

До­ку­мент объ­е­мом 5 Мбайт можно пе­ре­дать с од­но­го ком­пью­те­ра на дру­гой двумя спо­со­ба­ми:

А) Сжать ар­хи­ва­то­ром, пе­ре­дать архив по ка­на­лу связи, рас­па­ко­вать.

Б) Пе­ре­дать по ка­на­лу связи без ис­поль­зо­ва­ния ар­хи­ва­то­ра.

Какой спо­соб быст­рее и на­сколь­ко, если

– сред­няя ско­рость пе­ре­да­чи дан­ных по ка­на­лу связи со­став­ля­ет 218 бит в се­кун­ду,

– объем сжа­то­го ар­хи­ва­то­ром до­ку­мен­та равен 80% от ис­ход­но­го,

– время, тре­бу­е­мое на сжа­тие до­ку­мен­та – 35 се­кунд, на рас­па­ков­ку – 3 се­кун­ды?

В от­ве­те на­пи­ши­те букву А, если спо­соб А быст­рее или Б, если быст­рее спо­соб Б. Сразу после буквы на­пи­ши­те ко­ли­че­ство се­кунд, на­сколь­ко один спо­соб быст­рее дру­го­го. Так, на­при­мер, если спо­соб Б быст­рее спо­со­ба А на 23 се­кун­ды, в от­ве­те нужно на­пи­сать Б23. Слов «се­кунд», «сек.», «с.» к от­ве­ту до­бав­лять не нужно.

 

Решение:

Спо­соб А. Общее время скла­ды­ва­ет­ся из вре­ме­ни сжа­тия, рас­па­ков­ки и пе­ре­да­чи. Время пе­ре­да­чи t рас­счи­ты­ва­ет­ся по фор­му­ле t = V / q, где V — объём ин­фор­ма­ции, q — скорость пе­ре­да­чи дан­ных.

Объем сжатого документа: 5 * 0,8 = 4 Мб =4 * 223 бит.

Найдём общее время: t = 35 с + 3 с + 4 * 223 бит / 218 бит/с = 38 + 27 с = 166 с.

Спо­соб Б. Общее время сов­па­да­ет с вре­ме­нем пе­ре­да­чи: t = 5 * 223 бит / 218 бит/с = 5 * 25 с = 160 с.

Спо­соб Б быст­рее на 166 — 160 = 6 с.

Ответ: Б6

 

Определение времени передачи данных

Пример 7.

Ско­рость пе­ре­да­чи дан­ных через ADSL─со­еди­не­ние равна 128000 бит/c. Через дан­ное со­еди­не­ние пе­ре­да­ют файл раз­ме­ром 625 Кбайт. Опре­де­ли­те время пе­ре­да­чи файла в се­кун­дах.

Решение:

Время t = V / q, где V — объем файла, q — скорость пе­ре­да­чи дан­ных.

t = 625 * 210 байт / (2 7 * 1000) бит/c = 625 * 213 бит / (125 * 210) бит/c = 5 * 23 с = 40 с.

Ответ: 40

 

Пример 8.

У Васи есть до­ступ к Ин­тер­нет по вы­со­ко­ско­рост­но­му од­но­сто­рон­не­му ра­дио­ка­на­лу, обес­пе­чи­ва­ю­ще­му ско­рость по­лу­че­ния им ин­фор­ма­ции 217 бит в се­кун­ду. У Пети нет ско­рост­но­го до­сту­па в Ин­тер­нет, но есть воз­мож­ность по­лу­чать ин­фор­ма­цию от Васи по низ­ко­ско­рост­но­му те­ле­фон­но­му ка­на­лу со сред­ней ско­ро­стью 215 бит в се­кун­ду. Петя до­го­во­рил­ся с Васей, что тот будет ска­чи­вать для него дан­ные объ­е­мом 4 Мбай­та по вы­со­ко­ско­рост­но­му ка­на­лу и ре­транс­ли­ро­вать их Пете по низ­ко­ско­рост­но­му ка­на­лу. Ком­пью­тер Васи может на­чать ре­транс­ля­цию дан­ных не рань­ше, чем им будут по­лу­че­ны пер­вые 512 Кбайт этих дан­ных. Каков ми­ни­маль­но воз­мож­ный про­ме­жу­ток вре­ме­ни (в се­кун­дах), с мо­мен­та на­ча­ла ска­чи­ва­ния Васей дан­ных, до пол­но­го их по­лу­че­ния Петей? В от­ве­те ука­жи­те толь­ко число, слово «се­кунд» или букву «с» до­бав­лять не нужно.

 

Решение:

Нужно опре­де­лить, сколь­ко вре­ме­ни будет пе­ре­да­вать­ся файл объ­е­мом 4 Мбай­та по ка­на­лу со ско­ро­стью пе­ре­да­чи дан­ных 215 бит/с; к этому вре­ме­ни нужно до­ба­вить за­держ­ку файла у Васи (пока он не по­лу­чит 512 Кбайт дан­ных по ка­на­лу со ско­ро­стью 217 бит/с).

Время скачивания дан­ных Петей: t1= 4*223 бит / 215 бит/с = 210 c.

Время за­держ­ки: t2 = 512 кб / 217 бит/с = 2(9 + 10 + 3) — 17 c = 25 c.

Пол­ное время: t1 + t2 = 210 c + 25 c = (1024 + 32) c = 1056 c.

Ответ: 1056

 

Пример 9.

Данные объемом 60 Мбайт передаются из пункта А в пункт Б по каналу связи, обеспечивающему скорость передачи данных 219 бит в секунду, а затем из пункта Б в пункт В по каналу связи, обеспечивающему скорость передачи данных 220 бит в секунду. Задержка в пункте Б (время между окончанием приема данных из пункта А и началом передачи в пункт В) составляет 25 секунд. Сколько времени (в секундах) прошло с момента начала передачи данных из пункта А до их полного получения в пункте В? В ответе укажите только число, слово «секунд» или букву «с» добавлять не нужно.

Решение:

Полное время складывается из времени передачи из пункта А в пункт Б (t1), задержки в пункте Б (t2) и времени передачи из пункта Б в пункт В (t3).

t1 = (60 * 223) / 219 =60 * 16 = 960 c

t2 = 25 c

t3 = (60 * 223) / 220 =60 * 8 = 480 c

Полное время t1 + t2 +t3 = 960 + 25 + 480 = 1465 c

Ответ: 1465

Спасибо за то, что пользуйтесь нашими материалами. Информация на странице «Задача №9. Кодирование звуковой и графической информации. Передача информации, Время записи звукового файла, время передачи данных, определение объема информации.» подготовлена нашими авторами специально, чтобы помочь вам в освоении предмета и подготовке к ЕГЭ и ОГЭ. Чтобы успешно сдать необходимые и поступить в высшее учебное заведение или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий. Также вы можете воспользоваться другими статьями из разделов нашего сайта.

Публикация обновлена: 08.03.2023

Кодирование графической информации. Вариант 1

Подсказка: нахождение информационного объема графического файла



Представление графической информации

Вариант 1

1. На экране с разрешающей способностью 640х200 высвечиваются только двухцветные изображения. Какой минимальный объём видеопамяти (в байтах) необходим для хранения изображения?

2. Укажите минимальный объём памяти (в Килобайтах), достаточный для хранения любого растрового изображения размером 64х64 пикселей, если известно, что в изображении используется палитра из 256 цветов. Саму палитру хранить не нужно.

    1) 128                 2) 2                 3) 256             4) 4

3. Для хранения растрового изображения размером 64х64 пикселей отвели 512 байт памяти. Каково максимально возможное число цветов в палитре изображения?

    1) 16                   2) 2                 3) 256             4) 1024

4.  В процессе преобразования растрового графического файла количество цветов уменьшилось с 1024 до 32. Во сколько раз уменьшился размер файла?

    1) 5                       2) 2                 3) 3                 4) 4

5. Для хранения изображения размером а х а пикселей необходимо 32 Кб памяти. Найдите а, если количество цветов в палитре равно 65536.

    1) 8                       2) 128             3) 2048           4) 64

6. Изображение размером х а имеет размер 4 Кбайта. Найдите а, если известно, что используется палитра с 65536 цветами.

    1) 16                     2) 32               3) 64               4) 128

7. Для хранения растрового изображения размером 752х512 пикселей отвели 235 Кбайт памяти. Каково максимально возможное число цветов в палитре изображения?

       1) 8                      2) 16               3) 32               4) 62

8. Для хранения в растровом графическом файле изображения размером 640х1504 пикселей отвели 705 Кбайт памяти (без учёта размера заголовка). Каково максимально возможное число цветов в палитре изображения?

       1) 8                      2) 64               3) 512             4) 1024

9. В процессе преобразования растрового графического файла количество цветов в палитре уменьшилось с 256 до 16. Во сколько раз уменьшился объём файла (без учёта размера заголовка), если известно, что под один пиксель отводится наименьшее число бит для хранения номера цвета в палитре?

       1) 16                    2) 2                 3) 32               4) 4

10. В процессе преобразования растрового графического файла количество цветов в палитре увеличилось с 8 до 512. Во сколько раз увеличился информационный объём файла (без учёта размера его заголовка), если известно, что под один пиксель отводится наименьшее число бит для хранения номера цвета в палитре, одинаковое для всех цветов?

       1) 3                      2) 16               3) 32               4) 64

Ответы: №1 – 16000, №2 – 4, №3 – 2, №4 – 2, №5 – 2, №6 – 2, №7 – 3, №8 – 2, №9 – 2, №10 – 1.


c — инвертирование растрового изображения делает изображение черным. Но непоследовательно

Биткаунт=8, значит таблица цветов (палитра) обязательна — см. здесь. Это означает, что значения в массиве пикселей (т. е. ваша переменная bmpImageData ) не являются цветами, а фактически индексируются в палитре. Таким образом, вы не можете напрямую изменить bmpImageData .

Итак, если пиксель[0,0] содержит, скажем, 3, вам нужно найти 3-ю запись в цветовой палитре, чтобы определить, какому цвету она соответствует.

Палитра должна быть после BITMAPINFOHEADER и DIB, поэтому она находится в байтах 55-435.

Я предлагаю вам распечатать эти байты в шестнадцатеричном формате и посмотреть на них. Я предполагаю, что вы увидите, что они идут RGBA, RGBA, RGBA, но что A (альфа или прозрачность) будет равна нулю, то есть не используется. Поэтому я ожидаю, что они будут выглядеть так, с R = G = B (поскольку они в оттенках серого):

 xx xx xx 00 yy yy yy 00 zz zz zz 00
 

Затем, чтобы инвертировать ваше изображение, измените каждый xx 9От 0004 до 255-xx (а также y и z ) в палитре без необходимости обрабатывать все bmpImageData вообще.

В моем ответе есть некоторые несоответствия, но это потому, что я вижу только файл JPEG , когда пытаюсь отладить файл BMP . Одно несоответствие заключается в том, что пространство между DIB и массивом пикселей составляет 436-54 байта, то есть 382 байта, что не делится на 3 или 4 и, следовательно, не обеспечивает очень разумный размер палитры с использованием 3 или 4 байтов на запись. ... но возьмите шестнадцатеричные данные, и мы посмотрим, сможем ли мы приблизиться к правильному ответу.

Если вы используете ImageMagick (доступен бесплатно для Unix/Linux и Windows здесь), вы можете использовать команду идентифицировать следующим образом, чтобы помочь вам отладить свой код:

 идентифицируйте -verbose lena.bmp
  Формат: BMP (растровое изображение Microsoft Windows)
  Класс: Псевдокласс
  Геометрия: 512x512+0+0
  Единицы: пиксели на сантиметр
  Тип: Оттенки серого
  Базовый тип: Оттенки серого
  Endianess: не определено
  Цветовое пространство: серый
  Глубина: 8 бит
  Глубина канала:
    серый: 8 бит
  Статистика канала:
    Пиксели: 262144
    Серый:
      мин: 28 (0,109804)
      макс: 244 (0,956863)
      среднее значение: 124,071 (0,486554)
      стандартное отклонение: 47,9288 (0,187956)
      эксцесс: -0,839484
      асимметрия: -0,0822738
  Цвета: 28
  Гистограмма:
       474: ( 28, 28, 28) #1C1C1C серый(28)
      4477: ( 36, 36, 36) #242424 серый(36)
     13395: ( 44, 44, 44) #2C2C2C серый(44)
     15131: ( 52, 52, 52) #343434 серый(52)
      9461: ( 60, 60, 60) #3C3C3C серый(60)
      6569: ( 68, 68, 68) #444444 серый(68)
      7027: ( 76, 76, 76) #4C4C4C серый(76)
      7733: ( 84, 84, 84) #545454 серый(84)
     10330: ( 92, 92, 92) #5C5C5C серый(92)
     14865: (100,100,100) #646464 серый(100)
     12095: (108,108,108) #6C6C6C серый(108)
     11631: (116,116,116) #747474 серый(116)
     16153: (124,124,124) #7C7C7C серый(124)
     17429: (132,132,132) #848484 серый(132)
     17623: (140,140,140) #8C8C8C серый(140)
     18636: (148,148,148) #949494 серый(148)
     19688: (156,156,156) #9C9C9C серый(156)
     12554: (164,164,164) #A4A4A4 серый(164)
      9848: (172,172,172) #ACACAC серый(172)
      7380: (180,180,180) #B4B4B4 серый(180)
      5589: (188,188,188) #BCBCBC серый(188)
      7162: (196 196 196) #C4C4C4 серый(196)
      7451: (204,204,204) #CCCCCC серый(204)
      6699: (212,212,212) #D4D4D4 серый(212)
      2293: (220,220,220) #DCDCDC серый(220)
       425: (228,228,228) #E4E4E4 серый(228)
        22: (236 236 236) #ECECEC серый(236)
         4: (244 244 244) #F4F4F4 серый(244)
  Записи цветовой карты: 256
  Цветовая карта:
         0: ( 0, 0, 0) #000000 серый(0)
         1: (128, 0, 0) #800000 серый(128)
         2: (0,128, 0) #008000 серый(0)
         3: (128,128, 0) #808000 серый(128)
         4: (0, 0,128) #000080 серый(0)
         5: (128, 0,128) #800080 серый(128)
         6: (0,128,128) #008080 серый(0)
         7: (128,128,128) #808080 серый(128)
         8: ( 28, 28, 28) #1C1C1C серый(28)
         9: (140,140,140) #8C8C8C серый(140)
        10: (84, 84, 84) #545454 серый(84)
        11: (196,196,196) #C4C4C4 серый(196)
        12: ( 60, 60, 60) #3C3C3C серый(60)
        13: (172,172,172) #ACACAC серый(172)
        14: (116,116,116) #747474 серый(116)
        15: (228,228,228) #E4E4E4 серый(228)
        16: (44, 44, 44) #2C2C2C серый(44)
        17: (156,156,156) #9C9C9C серый(156)
        18: (100,100,100) #646464 серый(100)
        19: (212,212,212) #D4D4D4 серый(212)
        20: ( 76, 76, 76) #4C4C4C серый(76)
        21: (188,188,188) #BCBCBC серый(188)
        22: (132,132,132) #848484 серый(132)
        23: (244 244 244) #F4F4F4 серый(244)
        24: (36, 36, 36) #242424 серый(36)
        25: (148 148 148) # 949494 серый(148)
        26: ( 92, 92, 92) #5C5C5C серый(92)
        27: (204,204,204) #CCCCCC серый(204)
        28: (68, 68, 68) #444444 серый(68)
        29: (180,180,180) #B4B4B4 серый(180)
        30: (124,124,124) #7C7C7C серый(124)
        31: (236 236 236) #ECECEC серый(236)
        32: ( 52, 52, 52) #343434 серый(52)
        33: (164,164,164) #A4A4A4 серый(164)
        34: (108,108,108) #6C6C6C серый(108)
        35: (220,220,220) #DCDCDC серый(220)
        36: ( 0, 0, 0) #000000 серый(0)
        37: ( 0, 0, 0) #000000 серый(0)
        38: ( 0, 0, 0) #000000 серый(0)
        39: ( 0, 0, 0) #000000 серый(0)
        40: ( 0, 0, 0) #000000 серый(0)
        41: ( 0, 0, 0) #000000 серый(0)
        42: ( 0, 0, 0) #000000 серый(0)
        43: ( 0, 0, 0) #000000 серый(0)
        44: ( 0, 0, 0) #000000 серый(0)
        45: ( 0, 0, 0) #000000 серый(0)
        46: ( 0, 0, 0) #000000 серый(0)
        47: ( 0, 0, 0) #000000 серый(0)
        48: ( 0, 0, 0) #000000 серый(0)
        49: ( 0, 0, 0) #000000 серый(0)
        50: ( 0, 0, 0) #000000 серый(0)
        51: ( 0, 0, 0) #000000 серый(0)
        52: ( 0, 0, 0) #000000 серый(0)
        53: ( 0, 0, 0) #000000 серый(0)
        54: ( 0, 0, 0) #000000 серый(0)
        55: ( 0, 0, 0) #000000 серый(0)
        56: ( 0, 0, 0) #000000 серый(0)
        57: ( 0, 0, 0) #000000 серый(0)
        58: ( 0, 0, 0) #000000 серый(0)
        59: ( 0, 0, 0) #000000 серый(0)
        60: ( 0, 0, 0) #000000 серый(0)
        61: ( 0, 0, 0) #000000 серый(0)
        62: ( 0, 0, 0) #000000 серый(0)
        63: ( 0, 0, 0) #000000 серый(0)
        64: ( 0, 0, 0) #000000 серый(0)
        65: ( 0, 0, 0) #000000 серый(0)
        66: ( 0, 0, 0) #000000 серый(0)
        67: ( 0, 0, 0) #000000 серый(0)
        68: ( 0, 0, 0) #000000 серый(0)
        69: ( 0, 0, 0) #000000 серый(0)
        70: ( 0, 0, 0) #000000 серый(0)
        71: ( 0, 0, 0) #000000 серый(0)
        72: ( 0, 0, 0) #000000 серый(0)
        73: ( 0, 0, 0) #000000 серый(0)
        74: ( 0, 0, 0) #000000 серый(0)
        75: ( 0, 0, 0) #000000 серый(0)
        76: ( 0, 0, 0) #000000 серый(0)
        77: ( 0, 0, 0) #000000 серый(0)
        78: ( 0, 0, 0) #000000 серый(0)
        79: ( 0, 0, 0) #000000 серый(0)
        80: ( 0, 0, 0) #000000 серый(0)
        81: ( 0, 0, 0) #000000 серый(0)
        82: ( 0, 0, 0) #000000 серый(0)
        83: ( 0, 0, 0) #000000 серый(0)
        84: ( 0, 0, 0) #000000 серый(0)
        85: ( 0, 0, 0) #000000 серый(0)
        86: ( 0, 0, 0) #000000 серый(0)
        87: ( 0, 0, 0) #000000 серый(0)
        88: ( 0, 0, 0) #000000 серый(0)
        89: ( 0, 0, 0) #000000 серый(0)
        90: ( 0, 0, 0) #000000 серый(0)
        91: (0, 0, 0) #000000 серый(0)
        92: ( 0, 0, 0) #000000 серый(0)
        93: ( 0, 0, 0) #000000 серый(0)
        94: ( 0, 0, 0) #000000 серый(0)
        95: ( 0, 0, 0) #000000 серый(0)
        96: ( 0, 0, 0) #000000 серый(0)
        97: ( 0, 0, 0) #000000 серый(0)
        98: ( 0, 0, 0) #000000 серый(0)
        99: ( 0, 0, 0) #000000 серый(0)
       100: ( 0, 0, 0) #000000 серый(0)
       101: ( 0, 0, 0) #000000 серый(0)
       102: ( 0, 0, 0) #000000 серый(0)
       103: ( 0, 0, 0) #000000 серый(0)
       104: ( 0, 0, 0) #000000 серый(0)
       105: ( 0, 0, 0) #000000 серый(0)
       106: ( 0, 0, 0) #000000 серый(0)
       107: ( 0, 0, 0) #000000 серый(0)
       108: ( 0, 0, 0) #000000 серый(0)
       109: ( 0, 0, 0) #000000 серый(0)
       110: ( 0, 0, 0) #000000 серый(0)
       111: ( 0, 0, 0) #000000 серый(0)
       112: ( 0, 0, 0) #000000 серый(0)
       113: ( 0, 0, 0) #000000 серый(0)
       114: ( 0, 0, 0) #000000 серый(0)
       115: ( 0, 0, 0) #000000 серый(0)
       116: ( 0, 0, 0) #000000 серый(0)
       117: ( 0, 0, 0) #000000 серый(0)
       118: ( 0, 0, 0) #000000 серый(0)
       119: ( 0, 0, 0) #000000 серый(0)
       120: ( 0, 0, 0) #000000 серый(0)
       121: ( 0, 0, 0) #000000 серый(0)
       122: ( 0, 0, 0) #000000 серый(0)
       123: ( 0, 0, 0) #000000 серый(0)
       124: ( 0, 0, 0) #000000 серый(0)
       125: ( 0, 0, 0) #000000 серый(0)
       126: ( 0, 0, 0) #000000 серый(0)
       127: ( 0, 0, 0) #000000 серый(0)
       128: ( 0, 0, 0) #000000 серый(0)
       129: ( 0, 0, 0) #000000 серый(0)
       130: ( 0, 0, 0) #000000 серый(0)
       131: ( 0, 0, 0) #000000 серый(0)
       132: ( 0, 0, 0) #000000 серый(0)
       133: ( 0, 0, 0) #000000 серый(0)
       134: ( 0, 0, 0) #000000 серый(0)
       135: ( 0, 0, 0) #000000 серый(0)
       136: ( 0, 0, 0) #000000 серый(0)
       137: ( 0, 0, 0) #000000 серый(0)
       138: ( 0, 0, 0) #000000 серый(0)
       139: ( 0, 0, 0) #000000 серый(0)
       140: ( 0, 0, 0) #000000 серый(0)
       141: ( 0, 0, 0) #000000 серый(0)
       142: ( 0, 0, 0) #000000 серый(0)
       143: ( 0, 0, 0) #000000 серый(0)
       144: ( 0, 0, 0) #000000 серый(0)
       145: ( 0, 0, 0) #000000 серый(0)
       146: ( 0, 0, 0) #000000 серый(0)
       147: ( 0, 0, 0) #000000 серый(0)
       148: ( 0, 0, 0) #000000 серый(0)
       149: ( 0, 0, 0) #000000 серый(0)
       150: ( 0, 0, 0) #000000 серый(0)
       151: ( 0, 0, 0) #000000 серый(0)
       152: ( 0, 0, 0) #000000 серый(0)
       153: ( 0, 0, 0) #000000 серый(0)
       154: ( 0, 0, 0) #000000 серый(0)
       155: ( 0, 0, 0) #000000 серый(0)
       156: ( 0, 0, 0) #000000 серый(0)
       157: ( 0, 0, 0) #000000 серый(0)
       158: ( 0, 0, 0) #000000 серый(0)
       159: ( 0, 0, 0) #000000 серый(0)
       160: ( 0, 0, 0) #000000 серый(0)
       161: ( 0, 0, 0) #000000 серый(0)
       162: ( 0, 0, 0) #000000 серый(0)
       163: ( 0, 0, 0) #000000 серый(0)
       164: ( 0, 0, 0) #000000 серый(0)
       165: ( 0, 0, 0) #000000 серый(0)
       166: ( 0, 0, 0) #000000 серый(0)
       167: ( 0, 0, 0) #000000 серый(0)
       168: ( 0, 0, 0) #000000 серый(0)
       169: ( 0, 0, 0) #000000 серый(0)
       170: ( 0, 0, 0) #000000 серый(0)
       171: ( 0, 0, 0) #000000 серый(0)
       172: ( 0, 0, 0) #000000 серый(0)
       173: ( 0, 0, 0) #000000 серый(0)
       174: ( 0, 0, 0) #000000 серый(0)
       175: ( 0, 0, 0) #000000 серый(0)
       176: ( 0, 0, 0) #000000 серый(0)
       177: ( 0, 0, 0) #000000 серый(0)
       178: ( 0, 0, 0) #000000 серый(0)
       179: ( 0, 0, 0) #000000 серый(0)
       180: ( 0, 0, 0) #000000 серый(0)
       181: ( 0, 0, 0) #000000 серый(0)
       182: ( 0, 0, 0) #000000 серый(0)
       183: ( 0, 0, 0) #000000 серый(0)
       184: ( 0, 0, 0) #000000 серый(0)
       185: ( 0, 0, 0) #000000 серый(0)
       186: ( 0, 0, 0) #000000 серый(0)
       187: ( 0, 0, 0) #000000 серый(0)
       188: ( 0, 0, 0) #000000 серый(0)
       189: ( 0, 0, 0) #000000 серый(0)
       190: ( 0, 0, 0) #000000 серый(0)
       191: ( 0, 0, 0) #000000 серый(0)
       192: ( 0, 0, 0) #000000 серый(0)
       193: ( 0, 0, 0) #000000 серый(0)
       194: ( 0, 0, 0) #000000 серый(0)
       195: ( 0, 0, 0) #000000 серый(0)
       196: ( 0, 0, 0) #000000 серый(0)
       197: ( 0, 0, 0) #000000 серый(0)
       198: ( 0, 0, 0) #000000 серый(0)
       199: ( 0, 0, 0) #000000 серый(0)
       200: ( 0, 0, 0) #000000 серый(0)
       201: ( 0, 0, 0) #000000 серый(0)
       202: ( 0, 0, 0) #000000 серый(0)
       203: ( 0, 0, 0) #000000 серый(0)
       204: ( 0, 0, 0) #000000 серый(0)
       205: ( 0, 0, 0) #000000 серый(0)
       206: ( 0, 0, 0) #000000 серый(0)
       207: ( 0, 0, 0) #000000 серый(0)
       208: ( 0, 0, 0) #000000 серый(0)
       209: ( 0, 0, 0) #000000 серый(0)
       210: ( 0, 0, 0) #000000 серый(0)
       211: ( 0, 0, 0) #000000 серый(0)
       212: ( 0, 0, 0) #000000 серый(0)
       213: ( 0, 0, 0) #000000 серый(0)
       214: ( 0, 0, 0) #000000 серый(0)
       215: ( 0, 0, 0) #000000 серый(0)
       216: ( 0, 0, 0) #000000 серый(0)
       217: ( 0, 0, 0) #000000 серый(0)
       218: ( 0, 0, 0) #000000 серый(0)
       219: ( 0, 0, 0) #000000 серый(0)
       220: ( 0, 0, 0) #000000 серый(0)
       221: ( 0, 0, 0) #000000 серый(0)
       222: ( 0, 0, 0) #000000 серый(0)
       223: ( 0, 0, 0) #000000 серый(0)
       224: ( 0, 0, 0) #000000 серый(0)
       225: ( 0, 0, 0) #000000 серый(0)
       226: ( 0, 0, 0) #000000 серый(0)
       227: ( 0, 0, 0) #000000 серый(0)
       228: ( 0, 0, 0) #000000 серый(0)
       229: ( 0, 0, 0) #000000 серый(0)
       230: ( 0, 0, 0) #000000 серый(0)
       231: ( 0, 0, 0) #000000 серый(0)
       232: ( 0, 0, 0) #000000 серый(0)
       233: ( 0, 0, 0) #000000 серый(0)
       234: ( 0, 0, 0) #000000 серый(0)
       235: ( 0, 0, 0) #000000 серый(0)
       236: ( 0, 0, 0) #000000 серый(0)
       237: ( 0, 0, 0) #000000 серый(0)
       238: ( 0, 0, 0) #000000 серый(0)
       239: ( 0, 0, 0) #000000 серый(0)
       240: ( 0, 0, 0) #000000 серый(0)
       241: ( 0, 0, 0) #000000 серый(0)
       242: ( 0, 0, 0) #000000 серый(0)
       243: ( 0, 0, 0) #000000 серый(0)
       244: ( 0, 0, 0) #000000 серый(0)
       245: ( 0, 0, 0) #000000 серый(0)
       246: ( 0, 0, 0) #000000 серый(0)
       247: ( 0, 0, 0) #000000 серый(0)
       248: (192 192 192) #C0C0C0 серый(192)
       249: (255, 0, 0) #FF0000 серый(255)
       250: ( 0,255, 0) #00FF00 серый(0)
       251: (255,255, 0) #FFFF00 серый(255)
       252: (0, 0,255) #0000FF серый(0)
       253: (255, 0,255) #FF00FF серый(255)
       254: (0,255,255) #00FFFF серый(0)
       255: (255,255,255) #FFFFFF серый(255)
  Цель рендеринга: Перцептивный
  Гамма: 0,454545
  Цветность:
    красный первичный: (0,64,0,33)
    зеленый первичный: (0,3,0,6)
    синий первичный: (0,15,0,06)
    точка белого: (0,3127,0,329)
  Цвет фона: серый(255)
  Цвет границы: серый(223)
  Матовый цвет: серый(189)
  Прозрачный цвет: серый(0)
  Чересстрочная развертка: нет
  Интенсивность: Не определено
  Написать: более
  Геометрия страницы: 512x512+0+0
  Распоряжаться: не определено
  Итераций: 0
  Сжатие: не определено
  Ориентация: не определена
  Характеристики:
    дата:создать: 2014-10-01T09:18:15+01:00
    дата:изменить: 2002-11-25T01:33:53+00:00
    подпись: dcd0e6587dcdeaaba5999a9bb384473f1af19f7a4c09ffee95356ea51bec22ce
  Артефакты:
    имя файла: /Users/mark/Desktop/lena. bmp
    подробно: правда
  Испорченный: Правда
  Размер файла: 263 КБ
  Количество пикселей: 262K
  Пикселей в секунду: 26,21 МБ
  Время пользователя: 0.000u
  Прошедшее время: 0:01.009Версия: ImageMagick 6.8.9-7 Q16 x86_64 10 сентября 2014 г. http://www.imagemagick.org
 

Как видите, на изображении всего 28 уникальных цветов, а палитра, как вы заметили, заполнена лишь частично.

Еще один метод, который поможет вам отладить код, заключается в том, что ImageMagick выгружает все ваше изображение в виде текста, например: я показываю только первые 8 пикселей, но вы поняли идею:

 convert lena.bmp -colorspace rgb txt: - | более
# Перечисление пикселей ImageMagick: 512 512 255,rgb
0,0: (85,85,85) #555555 RGB(85,85,85)
1,0: (95,95,95) #5F5F5F RGB(95,95,95)
2,0: (85,85,85) #555555 RGB(85,85,85)
3,0: ​​(95,95,95) #5F5F5F rgb(95,95,95)
4,0: (95,95,95) #5F5F5F rgb(95,95,95)
5,0: (85,85,85) #555555 RGB(85,85,85)
6,0: (95,95,95) #5F5F5F rgb(95,95,95)
7,0: (85,85,85) #555555 RGB(85,85,85)
 

OpenGL: размер текстуры и видеопамять

спросил

Изменено 9лет, 10 месяцев назад

Просмотрено 5к раз

Я делаю растровую игру с разрушаемым ландшафтом в стиле Worms, используя OpenGL. Я хотел бы знать, где ограничения с точки зрения видеопамяти для размера миров.

В настоящее время я использую блоки текстур 512*512 RGBA для ландшафта.

  • Сколько памяти, грубо говоря, может занять такая текстура 512*512 RGBA?
  • Производится ли внутреннее автоматическое сжатие?
  • Сколько видеопамяти может быть свободно на компьютерах большинства пользователей?
  • память
  • opengl
  • графика
  • текстуры
  • процедурная генерация

Сколько памяти, грубо говоря, можно ожидать для такой текстуры 512*512 RGBA?

Недостаточно информации. Вы должны всегда использовать размерные форматы изображений OpenGL (GL_RGBA 8 , GL_RGBA 16 ).

GL_RGBA8 занимает 32 бита на пиксель, что составляет 4 байта. Следовательно, 512*512*4 = 1 МБ.

Производится ли внутреннее автоматическое сжатие?

Сколько видеопамяти должно быть свободно на компьютерах большинства пользователей?

Сколько вы сейчас используете?

OpenGL будет выгружать данные изображения на страницы в соответствии с доступным пространством. Если у вас закончилась память графического процессора, OpenGL с радостью выделит системную память и загрузит изображения по мере необходимости.

Но, честно говоря, ваша маленькая игра Worms ничего не стоит с точки зрения объема памяти. Может быть, 64 МБ, когда вы закончите, максимум. Вам не о чем беспокоиться.

1

Я бы об этом особо не беспокоился. Даже с размером мира 8192*2048 (4 экрана в ширину и 2 экрана в высоту, что очень много для игры в стиле Worms) вам потребуется всего 8*2*4=64 Мб (добавьте мип-карты, другие текстуры, фреймбуфер), вы должны уместиться в 128 МБ. границы. Насколько мне известно, такая память есть даже у старых GPU (о картах на GeForce4 мы не говорим, верно?).

У старых графических процессоров могут быть ограничения на размер каждой текстуры, но, поскольку вы уже разделили свой мир на фрагменты размером 512x512, это не будет проблемой.

Если видеопамять становится проблемой, вы можете разрешить пользователям использовать текстуры половинного размера (т. е. уменьшать разрешение мира до 4096*1024 и 256x256 щелей) и извлекать новые/отбрасывать неиспользуемые области по требованию.

С 32-bpp (4 байта) вы получите 4*512*512 = 1 МБ

См. информацию о сжатии текстур: http://www.oldunreal.com/editing/s3tc/ARB_texture_compression.pdf

3

Опять же, это зависит от вашего двигателя, но на вашем месте я бы сделал так:

Поскольку ваша текстура ландшафта, вероятно, будет повторно использовать некоторые мозаичные текстуры, и вам нужно знать, присутствует ли пиксель или уничтожен, то, учитывая, что вы используете мозаичные текстуры размером не более 256x256, вы определенно можете обойтись внутренним GL_RG16. формат (где каждый компонент будет координатой текстуры, которую вам нужно будет сопоставить с [0, 255] -> [0.0, 1.0] и вы зарезервируете какое-то специальное значение, чтобы указать, что ландшафт разрушен) для вашей текстуры ландшафта, что делает каждый блок 512x512 занимает 0,5 МБ.