Сколько битов (максимальное количество битов) может быть встроено в пиксель?

У меня есть изображение в градациях серого 512x512. Таким образом, каждый пиксель содержит 8 бит. Могу ли я внедрить всего 8 бит в пиксели, в которые я хочу встроить данные? Это возможно? (Мне нужно изображение только для встраивания данных). Если я хочу встроить данные в 10 000 пикселей из общего числа 512 * 512 пикселей, могу ли я встроить в общей сложности 80 000 бит данных или 10 КБ данных?


person ayovat12    schedule 17.09.2017    source источник
comment
Я не знаю, что вы на самом деле делаете, но, конечно, вы можете хранить 8 бит в каждом пикселе. Но тогда, вероятно, это не так много сокрытия данных.   -  person sascha    schedule 17.09.2017
comment
Вы можете встроить 256 КБ данных в изображение размером 512x512x8. Но вы не можете вставлять данные в изображение, не изменяя его внешний вид. Что именно вы спрашиваете?   -  person Nick    schedule 17.09.2017
comment
Объясните это: Могу ли я встроить в пиксели, в которые я хочу встроить данные, всего 8 бит? ... У вас есть 8-битное или 24-битное изображение в градациях серого (например: 8 бит на канал RGB)?   -  person VC.One    schedule 17.09.2017
comment
Да я знаю, что изображение изменится визуально. Я бы не встраивал данные во все пиксели, а в набор выбранных пикселей! Спасибо @NickA   -  person ayovat12    schedule 17.09.2017
comment
@VC.One 24-битное изображение в оттенках серого по сути является 8-битным, поскольку все 3 байта на пиксель в 24-битном изображении должны быть одинаковыми, иначе это не было бы изображение в оттенках серого.   -  person Nick    schedule 17.09.2017
comment
@NickИстинная точка зрения. Я только что проснулся.   -  person VC.One    schedule 17.09.2017


Ответы (2)


Стандартное изображение в градациях серого с 256 уровнями для каждого пикселя требует 8 бит на пиксель. Это связано с тем, что для кодирования 256 различных уровней требуется 8 бит. Если у вас есть изображение размером 512 x 512, то общее количество пикселей во всем изображении составляет 262 144 пикселя. Итак, все изображение содержит 8 бит * 262 144 = 2 097 152 бит информации.

Если вы возьмете подмножество этих пикселей и закодируете 8 бит «различной» информации, обратите внимание, что результирующее изображение, скорее всего, изменится по внешнему виду. 8 битов информации в каждой координате пикселя ранее кодировали интенсивность пикселя (от 0 до 255). Если вы замените это значение другим значением, то интенсивность будет другой, и общее изображение будет выглядеть иначе.

person rudolph1024    schedule 17.09.2017
comment
Большое спасибо! Вы случайно не знаете, какая была самая большая полезная нагрузка данных (в килобайтах), встроенная при разумном значении PSNR в изображении для обратимого сокрытия данных? - person ayovat12; 17.09.2017
comment
Это зависит от того, что вы считаете разумным пиковым отношением сигнал/шум. Если вы исправите PSNR, вы можете установить максимальное ограничение на количество шума, которое вы можете внести в процесс сокрытия данных. Также имейте в виду, что существуют обратимые методы сокрытия данных, которые не направлены на максимизацию PSNR (например, см. " rel="nofollow noreferrer">link.springer.com/chapter/10.1007/978-3-319-19321-2_22) - person rudolph1024; 17.09.2017
comment
@ayovat12 Для встраивания младшего бита пикселя, как описано здесь, вам будет трудно назвать PSNR разумным, если вы встраиваете более 4 бит на пиксель, в зависимости от того, какую информацию вы встраиваете и насколько занято изображение обложки. - person Reti43; 17.09.2017
comment
Ой! Я не знал, что! Но не изменит ли тогда визуальное качество изображения? - person ayovat12; 17.09.2017
comment
@ayovat12 Метод, описанный в этой публикации, утверждает, что: экспериментальные результаты показали, что может быть достигнут лучший эффект повышения контрастности, чем в предыдущих работах, и что помимо обратимости результаты оценки показывают, что визуальное качество тестовых изображений было сохраняется после сокрытия данных даже лучше, чем три специальные функции MATLAB. - person rudolph1024; 17.09.2017
comment
@ Reti43 Reti43 Я использовал разумный, так как читал, что более высокий PSNR даст лучшее визуальное качество. В моем случае я еще не пробовал встраивать пиксели. Поэтому я хотел знать, если я встрою 8 бит примерно в 10 000 пикселей из 262 144 пикселей, могу ли я понять, будет ли PSNR высоким/низким? - person ayovat12; 17.09.2017
comment
@rudolph1024 rudolph1024 у вас есть какие-нибудь идеи по моему предыдущему комментарию о высоком/низком значении PSNR? Спасибо! - person ayovat12; 17.09.2017
comment
Вы полностью заменяете 8 битов в каждом пикселе для 10 000 пикселей или делаете что-то вроде замены 4 битов в каждом пикселе, чтобы получить в общей сложности 20 000 пикселей? - person rudolph1024; 17.09.2017
comment
@ ayovat12 Запись 8 бит на пиксель полностью перезапишет его, поэтому в итоге вы получите 10 тыс. пикселей, которые будут выглядеть как случайный шум. Это ~ 4% от общего изображения, так что да, это будет заметно. Лучше распределить эту информацию по большему количеству пикселей, эффективно используя более низкую скорость встраивания бит на пиксель. - person Reti43; 17.09.2017
comment
@ rudolph1024 в худшем случае, чтобы встроить максимум данных, я бы вставил 8 бит полностью на все 10 000 пикселей! - person ayovat12; 17.09.2017

Если вы хотите встроить 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 бита сохраненных данных.

person Nick    schedule 17.09.2017
comment
Большое спасибо! Но на самом деле я использую другой метод (в котором невозможно встроить каждый альтернативный пиксель), где я буду использовать только подмножество всех пикселей! Вы случайно не знаете, какая была самая большая полезная нагрузка данных (в килобайтах), встроенная при разумном значении PSNR в изображении для обратимого сокрытия данных? - person ayovat12; 17.09.2017