Parus16.ru

Парус №16
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

Тип урока: урок получения новых знаний.

Цель урока: познакомить учащихся с растровым способом кодирования графической информации.

ввести понятие растровой графики и рассмотреть кодирование растровых изображений.

Задачи урока:

— повторить способы перевода чисел в двоичной и десятичной системах кодирования;

— научиться выполнять кодирование графического изображения в двоичный код и обратно;

— воспитание информационной культуры;

— воспитание чувства товарищества, ответственности;

— привитие навыков самостоятельной работы;

— развитие познавательного интереса;

— развитие внимания, наблюдательности;

— развития навыка самоконтроля.

Содержимое разработки

Урок 9. Растровое кодирование графической информации

Тип урока: урок получения новых знаний.

Цель урока: познакомить учащихся с растровым способом кодирования графической информации.

ввести понятие растровой графики и рассмотреть кодирование растровых изображений.

Задачи урока:

— повторить способы перевода чисел в двоичной и десятичной системах кодирования;

— научиться выполнять кодирование графического изображения в двоичный код и обратно;

— воспитание информационной культуры;

— воспитание чувства товарищества, ответственности;

— привитие навыков самостоятельной работы;

— развитие познавательного интереса;

— развитие внимания, наблюдательности;

— развития навыка самоконтроля.

Рабочее место ученика, рабочее место учителя, мультимедиапроектор, Интернет, карточки с заданиями.

Ход урока

1.Организационный момент

2.Проверка домашнего задания

Презентация «Кодирование графической информации» (1 слайд)

1. Как называется представление информации с помощью последовательности 0 и 1? ( ДВОИЧНОЕ ИЛИ ЦИФРОВОЕ)

2. Как представить текстовую информацию?( заменяем на 8 нулей и единиц)

3. Демонстрирует слово, закодированное с помощью кодировки Windows . (11000011 11010000 11000000 11010100 11001000 11001010 11000000) Расшифруйте это слово ( графика)

Действительно, мы с вами уже умеем представлять текстовую информацию с помощью двоичных и десятичных кодов. А как быть с графической информацией? Ведь именно с помощью этого вида информации человек получает большинство знаний об окружающем нас мире, ведь даже не научившись читать, считать, маленький человечек рисует.

3.Изучение новой темы

Проблемный вопрос: Сможем ли мы, зная, как кодируется текстовая информация в компьютере, закодировать также и графическую? ( выслушиваются мнения). Сегодня мы с вами на уроке выясним, как кодируется графическая информация в компьютере и, какие способы для этого существуют ( слайды 3-4)

Учитель показывает различные рисунки, картины, в том числе и

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

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

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

Пиксель — наименьший элемент изображения на экране компьютера. Размер экранного пикселя приблизительно 0,0018 дюйма.

Степень четкости изображения зависит от количества строк на весь экран и количества точек в строке, которые представляют
разрешающую способность экрана, или просто разрешение. Чем больше строк и точек, тем четче и лучше изображение.

Растровый рисунок похож на мозаику, в которой каждый элемент (пиксель) закрашен определенным цветом. Каждая точка рисунка может быть закрашена или нет. Каждую пустую клетку рисунка закодируем нулем, а закрашенную клетку — единицей.( стр 24 учебника)

— Сколько бит используется для кодирования одного пикселя?

Изображение просматриваем по строкам сверху вниз. После полного просмотра первой строки просматривается вторая, за ней третья потом четвертая и так до последней строки экрана.

Попробуем решить обратную задачу — восстановить изображение по двоичному коду. ( № 37 стр 29 РТ)

Цветовое изображение может формироваться различными способами.Один из них – метод RGB (красный, зеленый, синий), который основан на том, что глаз человека восп воспринимает все цвета как сумму трех основных цветов — красного, зеленого и синего.

Читайте так же:
Видео world of tanks новый год

Закрепление изученного материала

Задание 1. Восстановите двоичный код картинки

Задание 2. Рабочая тетрадь: №37-38, с 29-31

Физкультминутка

Практическая работа

Работа в графическом редакторе Paint . Изменение палитры цветов.

Откройте графический редактор.

Выполните команду Палитра — Изменить палитру.

В открывшемся окне Изменение палитры щелкните на кнопке Определить цвет.

Проследите, как меняется Цвет/Заливка при вводе в специальные поля различных значений для основных цветов: красного, зеленого, синего.

Установите, какие цвета получаются при следующих значениях цветов. Заполните таблицу:

Перевод картинки расширения bmp в двоичный код

Возможно ли сразу перевести картинку, сохраненную в формате bmp c глубиной цвета 24 бит в двоичный код. И потом после некоторых манипуляций с этим двоичным кодом , вернуть обратно изображение. Возможно ли такое на Си ?

UPD я пытался считывать в лоб (то есть открыл в HEX редакторе , посмотрел на сигнатуру BM , что за ASCII символы аналогичные 16-ричным стоят. Их и считывал в массив , чтобы потом в 2 код перевести. Но проблема : сигнатура BM не считывается корректно ,- завершающие нули считываются по середине(это я про сигнатуру) , а без неё не получится корректно вернуть обратно картинку )

Считаю теперь с двоичного

Вот так выглядит картинка в hex редакторе hex

А вот так она записалась в массив в массиве Очевидно , что некорректно , перевести такой массив в двоичную интерпретацию у меня не выйдет

Для начала вам нужно ознакомиться с общим описанием формата, например, в Википедии: BMP.

Если упрощенно, в начале файла идут заголовки, потом уже сами бинарные данные:

Общая структура

  1. Заголовок из структуры BITMAPFILEHEADER и блока BITMAPINFO. Последний содержит:
    • Информационные поля.
    • Битовые маски для извлечения значений цветовых каналов (опциональные).
    • Таблица цветов (опциональная).
  2. Цветовой профиль (опциональный).
  3. Пиксельные данные.

По сути, чтобы добраться до описания пиксельных данных, нужно пропустить все заголовки.

Смотрим дальше, описание структуры BITMAPFILEHEADER (которая, собственно, идет с начала файла BMP):

  • 2 байта — bfType — сигнатура формата. По сути — две буквы BM
  • 4 байта — bfSize — размер файла в байтах
  • 4 байта — поля bfReserved1 , bfReserved2 — зарезервировано (не используется, в 99% случаев будет заполнено нулями)
  • 4 байта — bfOffBits — Положение пиксельных данных относительно начала данной структуры (в байтах).

Смотрим на ваш скриншот:

BITMAPFILEHEADER

В поле bfOffBits в файле записано число 0x36, и по смещению 0x36 от начала файла подряд идут значения FF (совпадение? не думаю). Тройка байт FF FF FF (8 бит * 3 = 24 бита на пиксель) как раз кодируют один пиксель белого цвета, т.е. это как раз и есть искомые пиксельные данные.

Что еще желательно знать? Во-первых при чтении нужно проверить, что картинка действительно имеет формат RGB с 24 битами на пиксель. Во-вторых нужно знать размер картинки.

Для этого нужно смотреть что идет следом за структурой. А следом идет структура BITMAPINFO, но сложность в том, что она может быть разных версий. Версия задается в первых четырех байтах. Самая древняя версия имела размер 12 байт, более новые от 40 байт и выше. Будем для простоты считать, что поддерживаем только новые форматы BMP, тем более что начало структуры BITMAPINFO у новых форматов совпадает.

Итак, в структурах BITMAPINFO новых форматах по порядку идут:

  • 4 байта — biSize — размер структуры, нужен для определения формата структуры
  • 4 байта — biWidth — ширина изображения
  • 4 байта — biHeight — высота изображения
  • 2 байта — biPlanes — количество «плоскостей» (в BMP не используется, а используется в курсорах и значках)
  • 2 байта — biBitCount — количество бит на пиксель
  • 4 байта — biCompression — использование сжатия (может использоваться, например, RLE или JPEG сжатие)
  • 4 байта — biSizeImage — размер пиксельных данных. В простейшем случае (без сжатия, например) будет равняться biWidth*biHeight*biBitCount/8 .
  • прочая информация.
Читайте так же:
Видеорегистратор advocam fd7 profi gps

Снова смотрим на скриншот:

BITMAPINFO

  • Размер структуры BITMAPINFO — 0x28 (40 байт) — соответствует версии структуры BITMAPINFOHEADER
  • Ширина изображения — 40 0B 00 00 = 0x0B << 8 | 0x40 = 2880 пикселей
  • Высота изображения — 54 06 00 00 = 0x06 << 8 | 0x54 = 1620 пикселей
  • biPlanes = 1
  • biBitCount — 0x18 = 24 бит на пиксель
  • biCompression — 0 (без сжатия)
  • biSizeImage — 00 93 D5 00 = 0xD5 << 16 | 0x93 << 8 | 0 = 13996800, то же самое если посчитать 2880*1620*24/8 = 13996800

Как с этим работать программно? Два варианта:

  • Прописываем в программе жестко, по каким смещениям какие поля нужно прочитать, через fseek переходим по нужным смещениям, читаем данные, что нужно проверяем, что нужно читаем
  • Подключаем заголовок windows.h , который автоматом подключает wingdi.h , объявляем переменные типов BITMAPFILEHEADER и BITMAPINFOHEADER , в них читаем данные от начала файла, потом из заголовка BITMAPINFOHEADER вытаскиваем поле bfOffBits , переходим по этому смещению с помощью fseek , читаем данные в заранее подготовленный массив пиксельных данных.

Псевдокод для второго случая:

Еще одна тонкость, если в поле biHeight лежит положительное число, то строки пикселей в файле записаны в обратном порядке (от нижней строки к верхней строке). Если отрицательное, то в прямом порядке.

Двоичное изображение — Binary image

Бинарное изображение является тот , который состоит из пикселей , которые могут иметь один ровно два цвета, как правило , черного и белого. Бинарные изображения также называют двухуровневого или два уровня , Пиксельный из двух цветов часто упоминаются как 1-Bit или 1bit . Это означает , что каждый пиксель сохраняется как один бит, то есть, 0 или 1. Имена черно-белый , B & W , монохромный или монохроматического часто используются для этой концепции, но может также обозначать любые изображения , которые имеют только одну выборку на пиксель, например изображения в градациях серого . В фотошопе Говоря языком, двоичное изображение — это то же самое, что и изображение в режиме «Bitmap».

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

Двоичное изображение может храниться в памяти как битовая карта , упакованный массив бит. Для изображения 640 × 480 требуется 37,5 КБ памяти. Из-за небольшого размера файлов изображений этот формат обычно используется в факсимильных аппаратах и ​​решениях для управления документами. Большинство двоичных изображений также хорошо сжимаются с помощью простых схем сжатия длин серий.

Бинарные изображения могут быть интерпретированы как подмножеств в двумерной целочисленной решетке Z 2 ; область обработки морфологических изображений во многом была вдохновлена ​​этой точкой зрения.

СОДЕРЖАНИЕ

  • 1 Операции с двоичными образами

Операции с бинарными изображениями

Целый класс операций с двоичными изображениями работает с окном изображения 3 × 3. Он содержит девять пикселей, поэтому 2 9 или 512 возможных значений. Рассматривая только центральный пиксель, можно определить, остается ли он установленным или не установленным, на основе окружающих пикселей. Примерами таких операций являются прореживание, расширение, поиск точек ветвления и конечных точек, удаление изолированных пикселей, сдвиг изображения на пиксель в любом направлении и разрыв H-соединений. «Игра жизни» Конвея также является примером работы окна 3 × 3.

Другой класс операций основан на понятии фильтрации с помощью элемента структурирования. Структурирующим элементом является двоичное изображение, обычно маленькое, которое передается по целевому изображению аналогично фильтру при обработке изображений в градациях серого. Поскольку пиксели могут иметь только два значения, морфологическими операциями являются эрозия (любые неустановленные пиксели в элементе структурирования вызывают сброс пикселя) и расширение (любые установленные пиксели в элементе структурирования вызывают установку пикселя). Важными операциями являются морфологическое открытие и морфологическое закрытие, которые состоят из эрозии с последующим расширением и расширением с последующей эрозией, соответственно, с использованием одного и того же структурирующего элемента. Открытие имеет тенденцию увеличивать маленькие отверстия, удалять мелкие предметы и разделять предметы. Закрытие сохраняет мелкие объекты, удаляет дыры и соединяет объекты.

Читайте так же:
Восстановление apple id через email

Очень важной характеристикой двоичного изображения является преобразование расстояния . Это дает расстояние каждого установленного пикселя от ближайшего неустановленного пикселя. Преобразование расстояния может быть эффективно вычислено. Это позволяет эффективно вычислять диаграммы Вороного , где каждому пикселю изображения присваивается ближайшая из набора точек. Это также позволяет делать скелетирование, которое отличается от прореживания тем, что скелеты позволяют восстановить исходное изображение. Преобразование расстояния также полезно для определения центра объекта и для сопоставления при распознавании изображений.

Другой класс операций — это сбор показателей, не зависящих от ориентации. Это часто важно при распознавании изображений, когда необходимо изменить ориентацию камеры. Не ориентированные метрики группы связанных или окруженных пикселей включают число Эйлера , периметр, площадь, компактность, площадь отверстий, минимальный радиус, максимальный радиус.

Сегментация изображения

Двоичные изображения создаются из цветных изображений путем сегментации . Сегментация — это процесс присвоения каждого пикселя исходного изображения двум или более классам. Если имеется более двух классов, то обычно получается несколько двоичных изображений. Самой простой формой сегментации, вероятно, является метод Оцу, который присваивает пиксели переднему или фоновому плану на основе интенсивности оттенков серого. Другой метод — алгоритм водораздела . Обнаружение краев также часто создает двоичное изображение с некоторыми пикселями, назначенными пикселям краев, и также является первым шагом в дальнейшей сегментации.

Скелеты

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

Интерпретация

Интерпретация двоичного значения пикселя также зависит от устройства. Некоторые системы интерпретируют битовое значение 0 как черное и 1 как белое, в то время как другие меняют значение значений на противоположное. В стандартном интерфейсе ПК TWAIN для сканеров и цифровых фотоаппаратов первый вкус называется ванилью, а второй — шоколадным .

Дизеринг часто используется для отображения полутоновых изображений.

1-бит в цифровом искусстве

Двоичное пиксельное искусство , более известное как 1- битное или 1- битное искусство, было методом отображения графики с ранних компьютеров. В то время как ранние компьютеры, такие как zx81, использовали это ограничение как необходимое оборудование, портативные игры с ЖК-дисплеем, такие как Game & Watch и Tamagotchi , наряду с ранними компьютерами с акцентом на графические пользовательские интерфейсы, такие как Macintosh, сделали большие шаги в продвижении культуры. , техника и эстетика ограничений 1-битного искусства.

Современные примеры 1-битного искусства видны в инди-видеоиграх и другом цифровом искусстве. Бестселлеры, такие как Gato Roboto , Return of Obra Dinn , Minit и World of Horror, используют 1bit как стиль, чтобы придать своим играм ощущение ретро или просто сэкономить время графических дизайнеров при разработке. В разработке находится даже новое 1-битное оборудование, такое как экспериментальная портативная консоль Playdate .

Для художников-пиксельщиков 1-бит стал обычным вызовом при создании искусства. Конкурс пиксельной графики Pixtoght потребовал, чтобы его участники использовали только два цвета для своего 10-го ежемесячного конкурса. Не многие художники в основном занимаются однобитным рисунком, но многие из них поддерживают связь друг с другом, чтобы обмениваться знаниями о работе с ограничениями и устраивать собственные коллаборации.

Брэндон Джеймс Грир, который делает популярные уроки YouTube по 1-битной и другой пиксельной графике, говорит, что «ограничение приводит к некоторым уникальным подходам» и что работа с 1-битом — «очень интересная и уникальная задача».

Читайте так же:
Видеорегистратор без батареи напрямую

Хотя 1bit сам по себе можно назвать художественным стилем , каждая часть тоже подпадает под второй стиль. Очевидные различия в 1-битных художественных стилях заключаются, например, в том, используется ли, насколько и какой вид дизеринга , разрешение изображения , использование контуров и степень детализации изображения.

Датчик изображения захватывает двоичные изображения

Датчик двоичного изображения с передискретизацией — это новый датчик изображения, напоминающий традиционную фотопленку. Каждый пиксель в датчике имеет двоичный ответ, что дает только однобитное квантованное измерение локальной интенсивности света.

Невзламываемый шифр Вернама

Продолжается цикл статей о шифровании и криптографии. В предыдущих сериях:

Сегодня разберём невзламываемый симметричный шифр.

Вся криптография основана на том, что для взлома шифра злоумышленнику потребуются десятки или сотни лет даже при доступе к большим вычислительным ресурсам. Но в симметричном шифровании есть алгоритмы, которые при правильном использовании вообще невозможно взломать. Один из таких алгоритмов — шифр Вернама.

Как работают такие алгоритмы

Общие правила для абсолютно стойких шифров в симметричном шифровании такие:

  1. Одно шифрование — один уникальный ключ. Второе сообщение шифровать этим же ключом уже нельзя.
  2. Ключ состоит из случайных битов, и каждый бит не зависит от другого. Это значит, что нельзя использовать в качестве ключа, например, отрывок из книги, потому что это резко снижает устойчивость шифра ко взлому.
  3. Длина ключа должна быть равна длине сообщения или ключ должен быть чуть длиннее. Если ключ короче сообщения, которое нужно зашифровать, то абсолютной стойкости не получится.

Если в алгоритме соблюдаются все три правила, то такой шифр взломать нельзя даже теоретически.

Шифр Вернама — это просто

В 1917 году телеграфист Гильберт Вернам изобрёл шифр, который основан на побитовом исключающем ИЛИ. Если коротко и просто, то на каждую букву вашего сообщения накладывается другая маскирующая буква, которая делает исходную букву нечитаемой.

Шифр Вернама — это сложно

Теперь попробуем объяснить подробнее.

1. Сообщение хранится в виде битов данных. Допустим, мы шифруем текст. Компьютер не умеет работать с текстом как таковым, он этот текст хранит как набор числовых кодов (проще говоря, у компьютера все буквы пронумерованы и он помнит только эти номера).

Числа, в свою очередь, компьютер хранит в виде двоичного кода, то есть битов данных. Это пока что не относится к шифрованию, это просто то, как хранится любая текстовая информация в компьютере.

БукваКод в ASCIIБиты данных
K7501001011
O7901001111
D6801000100

Если мы напишем KOD в кодировке ASCII, то для компьютера это будет последовательность из трёх чисел, а каждое число — это набор битов:

01001011 01001111 01000100

2. Берём случайные биты в качестве ключа шифрования. На входе у нас три числа по 8 бит. Чтобы их зашифровать, нам нужны 24 случайных бита. Возьмём их с потолка, они ничего не значат:

10101101 01111010 10101011

3. Накладываем коды друг на друга и применяем алгоритм шифрования. Шифр Вернама построен на принципе «исключающего ИЛИ», он же XOR. Он смотрит на каждую пару битов и пытается понять, они одинаковые или разные. Если биты одинаковые, результат проверки будет 0, если разные — 1.

Можно проверить себя так: XOR задаёт вопрос «Эти биты разные»? Если да — то 1, если нет — то 0.

Буква K1111
Ключ11111
XOR (Они разные?)11111

Если мы таким образом закодируем три буквы, мы получим три новых набора битов:

KOD (сообщение)010010110100111101000100
Ключ101011010111101010101011
Результат шифрования с помощью XOR111001100011010111101111

Получается, что на входе у нас было 24 бита данных и на выходе 24 бита данных. Но эти данные теперь совсем другие. Если перевести эти числа обратно в текст, мы получим:

Читайте так же:
Бесплатное приложение говорит кто звонит

KOD → æ5ï

Расшифровка шифра Вернама

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

  1. Если в ключе шифрования в каком-то бите стоит 1, то мы берём этот же бит в зашифрованном сообщении и меняем его. Если был 1, то меняем на 0. Если был 0, то меняем на 1.
  2. Если в ключе шифрования в каком-то бите стоит 0, то этот же бит в зашифрованном сообщении мы не меняем.
  3. Проходим так по каждому биту сообщения и получаем исходный текст.

Компьютер может совершать миллиарды таких операций в секунду. Главное — иметь на руках ключ для расшифровки.

Почему этот шифр невзламываемый

Для начала договоримся, что под взломом мы понимаем прочтение этого сообщения без ключа. Если бы у нас был ключ, мы бы прочитали это сообщение почти сразу, и это уже не взлом.

Теперь посмотрим, почему без ключа этот шифр невозможно взломать.

  • Каждый бит нашего исходного сообщения шифруется соответствующим битом, который берётся из ключа шифрования.
  • Ключ шифрования — это случайные биты, такой «цифровой шум». Он не имеет смысла и в нём нет никакой логики. Каждый следующий бит может быть каким угодно.
  • Шифрование происходит на самом низком уровне — на уровне битов. Мы даже не знаем, что перед нами: буквы, цифры, числа, картинки или аудио. Просто какой-то набор битов, которые выглядят как цифровой шум.

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

Пример работы

Если мы зашифруем так фразу «Привет, это журнал Код!», то можем получить что-то такое:

Штука в том, что одна и та же буква в шифровке не означает одинаковые буквы в исходном сообщении, потому что биты шифрования выбраны случайным образом. Поэтому при попытке расшифровки злоумышленник получит такие варианты:

Срочно подпишись на код

Верни деньги, а то вилы

мама, я сдал зачёт, ура

Ваш зам предатель и вор

Ваш зам ни при чём, вот

Также он может получить любые другие сочетания букв, цифр и пробелов в рамках тех 23 символов, которые у нас были в исходном сообщении. Может быть, это не текст вовсе, а набор цифр. Может быть, это текст на каком-то другом языке. Может быть, это не текст вовсе, а очень маленькая картинка. Все эти варианты можно получить из нашей зашифрованной строки, потому что злоумышленник не знает ключ.

Минусы шифра Вернама

Если бы у этого шифра не было минусов, все бы пользовались только им, но сейчас этот шифр используется редко. Всё дело в том, что им очень неудобно пользоваться, чтобы выполнить все условия.

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

Даже если удастся заранее передать набор ключей каждой стороне для будущих шифровок, их нужно держать в полной физической безопасности, чтобы нельзя было их украсть, подсмотреть, потерять или перепутать.

Именно из-за таких требований к безопасности ключа этот шифр сейчас используется очень редко.

Что дальше

Поиграем в шпионов и напишем свой алгоритм шифра Вернама на JavaScript. Заодно и посмотрим, как работает XOR.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector