一个像素可以嵌入多少位(最大位数)?

How many bits(maximum number of bits) can be embedded in a pixel?

我有一张 6 英寸 512x512 的灰度图像。因此,每个像素包含 8 位。我可以将总共 8 位嵌入到我希望嵌入数据的像素中吗?这可能吗? (我只需要图像来嵌入数据)。如果我想在总共512*512像素中的10,000个像素中嵌入数据,那么我是否可以总共嵌入80,000位数据或10kB数据?

每个像素有 256 级的标准灰度图像需要每个像素 8 位。这是因为需要 8 位来编码 256 个不同的级别。如果您有一张尺寸为 512 x 512 的图像,则整个图像的像素总数为 262,144 像素。因此,整个图像包含 8 位 * 262,144 = 2,097,152 位的信息。

如果您要获取这些像素的一个子集并对 "different" 信息的 8 位进行编码,请注意生成的图像的外观可能会发生变化。每个像素坐标处的 8 位信息预先编码了像素强度(从 0 到 255)。如果您将此值替换为其他值,则强度会有所不同,整体图像也会有所不同。

如果您想在位深度为 8 位的 512x512 图像中嵌入 10KiB 的数据,我建议通过更改每个像素的 LSB 仅在每个像素中存储 1 位数据。

每隔一个像素仅更改 1 位数据就可以存储 (512*512*1)/2 位数据,即 16KiB 数据。这样您就可以存储所有需要的数据,同时仅以非常有限的方式更改图像。

例如,这是一张嵌入了不同数量白噪声的图像(通过每个像素嵌入 n 字节),您可以看到 [= 中嵌入了多少噪声(数据) 28=] 下面:

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)

可以看出,将高达 64KiB 的数据嵌入到 512x512x8 的图像中是完全合理的,因为通过编辑每个像素的 2 LSB,图像几乎没有明显的变化,因此一个像素被编码为:

XXXX XXYY

其中X来自原始图像,Y是存储数据的2位。