У меня есть изображение в градациях серого 512x512. Таким образом, каждый пиксель содержит 8 бит. Могу ли я внедрить всего 8 бит в пиксели, в которые я хочу встроить данные? Это возможно? (Мне нужно изображение только для встраивания данных). Если я хочу встроить данные в 10 000 пикселей из общего числа 512 * 512 пикселей, могу ли я встроить в общей сложности 80 000 бит данных или 10 КБ данных?
Сколько битов (максимальное количество битов) может быть встроено в пиксель?
Ответы (2)
Стандартное изображение в градациях серого с 256 уровнями для каждого пикселя требует 8 бит на пиксель. Это связано с тем, что для кодирования 256 различных уровней требуется 8 бит. Если у вас есть изображение размером 512 x 512, то общее количество пикселей во всем изображении составляет 262 144 пикселя. Итак, все изображение содержит 8 бит * 262 144 = 2 097 152 бит информации.
Если вы возьмете подмножество этих пикселей и закодируете 8 бит «различной» информации, обратите внимание, что результирующее изображение, скорее всего, изменится по внешнему виду. 8 битов информации в каждой координате пикселя ранее кодировали интенсивность пикселя (от 0 до 255). Если вы замените это значение другим значением, то интенсивность будет другой, и общее изображение будет выглядеть иначе.
Если вы хотите встроить 10 КБ данных в изображение 512x512, где глубина цвета составляет 8 бит, я бы рекомендовал просто хранить 1 бит данных в каждом втором пикселе, изменяя младший бит каждого.
Изменение всего 1 бита данных из каждого второго пикселя позволяет хранить (512*512*1)/2 бита данных или 16 КБ данных. Таким образом, вы можете хранить все данные, которые вам нужны, изменяя только изображение очень ограниченным образом.
В качестве примера, вот изображение с различным количеством встроенного в него белого шума (путем внедрения n
байтов на пиксель). Вы можете увидеть, сколько шума (данных) внедрено в таблицу ниже:
X | Y | bits used | data(KiB)
0 | 0 | 0 | 0
1 | 0 | 1 | 32
0 | 1 | 2 | 64
1 | 1 | 3 | 96
0 | 2 | 4 | 128
1 | 2 | 5 | 160
0 | 3 | 6 | 192
1 | 3 | 7 | 224
_ | _ | 8 | 256 (image omitted as just white noise)
Как видно, встраивание до 64 КБ данных в изображение 512x512x8 вполне разумно, ожидая незначительных заметных изменений в изображении путем редактирования 2 LSB каждого пикселя, чтобы пиксель кодировался как:
XXXX XXYY
Где X
пришло из исходного изображения, а Y
— это 2 бита сохраненных данных.