从三个像素我计算出它们的LSB(最低有效位);例如,这些是三个像素的三个连续LSB:010
然后,使用第一个和第二个LSB,我执行XOR操作:1
第一个和第三个LSB的操作-XOR-相同:0
这两个二进制值 - 1
和0
- 用于隐藏由二进制值组成的消息。
假设三个像素具有这三个LSB 000
二进制值。然后创建一个表来隐藏/插入两个位:
+----------+
| 000 |
+----------+
| 00 | 000 |
+----+-----+
| 01 | 001 |
+----+-----+
| 10 | 010 |
+----+-----+
| 11 | 100 |
+----+-----+
当消息中的两位是00
三个像素中没有一个' LSB已更改...但当消息位为01
时,最后一个LSB更改为00 1 。
现在,假设三个像素具有这三个LSB 001
,那么用于LSB替换的表是:
+----------+
| 001 |
+----------+
| 00 | 000 |
+----+-----+
| 01 | 001 |
+----+-----+
| 10 | 101 |
+----+-----+
| 11 | 011 |
+----+-----+
我需要对剩余的LSB组合执行相同操作:010
,011
,100
,101
,110
,111
我已经尝试了不同的逻辑操作来创建一个表,如这两个表。
答案 0 :(得分:1)
基本上,使用一组特定的计算,可以将三位的位abc
简化为一对位de
,
d = a XOR b
e = a XOR c
对于每个de
对,您希望派生最接近任意三像素的abc
三元组ijk
。
这是XOR操作表
result from
0 00, 11
1 01, 10
这里的重要部分是,您可以从两个可能的组合中获得相同的结果,这些组合相互补充。
在您的情况下,您有一个独立的条件a XOR b
和一个从属条件a XOR c
,因为a
都使用了a
。 b
(和c
)可以是这两个值中的任意一个,但a
只有一个基于abc
的选项。
减少到特定de
组合的abcde -> fgh
三元组的数量可以通过对每个独立限制使用2来计算,并且对于每个从属限制使用1并将它们相乘。因此,2 x 1 = 2.其中一半是另一半的补充。
一个更复杂的例子是f = a XOR b
g = a XOR c
h = d XOR e
,
abcde
由于限制是独立的,依赖的,独立的,因此您可以得到2 x 1 x 2 = 4个fgh
组合,这些组合会减少到相同的de
。再一次,有一半是对另一半的补充。
无论如何,对于每个abc
对,计算减少它的两个ijk
三元组,然后计算每个三元组和像素三元组de
之间的Hamming distance (HD)。值较低的结果是您想要修改像素的三元组,以便它们减少到特定的000
对。
例如,三元组111
和00
会缩减为000
对。如果像素中的LSB为001
,010
,100
或000
,则您希望将它们修改为110
。如果它们是101
,011
,111
或111
,请将其修改为000
。
HD显然可以是介于0和3之间的值。由于三元组相互补充,如果三元组与实际像素之间的HD为1,则HD与另一个三元组将为2因此,两者加起来为3.同样,为像素111
构建的表格将与 | 000 | 111
---+-----+----
00 | 000 | 111
01 | 001 | 110
10 | 010 | 101
11 | 100 | 011
的表格相辅相成。
<div class="parallax" [ngStyle]="{'background-image': 'url('+ parallaxImage+')'}"></div>