一个像素可以嵌入多少位(最大位数)?
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位。
我有一张 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位。