通过什么计算rgb值会发生变化?

时间:2015-12-10 02:48:37

标签: javascript binary hex decimal steganography

这里我有一些代码可以创建一个隐藏另一个图像的图像。 我打印出一些rgb值来查看更改(在实现函数chopToHide和函数移位之后,但我不明白数字已经改变了什么计算)。这段代码是一个较大程序的一部分,用于将一个图像隐藏在另一个图像中(隐写术) 这是我工作的环境:http://www.dukelearntoprogram.com/course1/example/index.php

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"bank_account[country]": @"CA",
                         @"ubank_account[currency]": @"cad",
                         @"bank_account[name]":@"Jane Austen",
                         @"bank_account[account_holder_type]": @"individual",
                         @"bank_account[routing_number]":@"110000000",
                         @"bank_account[account_number]": @"000123456789"
                         };
[manager POST:@"https://api.stripe.com/v1/tokens" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

1 个答案:

答案 0 :(得分:0)

此代码正在努力的想法是将每个颜色通道的0..255(8位,#34;字节")的颜色范围缩小到0..15(4位,a&# 34; nybble")两个图片上的每个颜色通道,然后将两个nybbles组合成一个字节。颜色在高nybble中的图片将产生可感知的颜色变化(以16为增量);隐藏在低nybble中的图片会不知不觉地遮蔽主画面像素的颜色。

公式应为:

steganoImageColour = (overtImageColour & 240) | (covertImageColour >> 4)

或等效(但不是那么快):

steganoImageColour = (Math.floor(overtImageColour / 16) * 16) +
                     Math.floor(covertImageColour / 16)

要提取隐藏图像,您只需将低凹凸处理并将其提升至高位:

reconstructedCovertImageColour = (steganoImageColour & 15) << 4

或等效,

reconstructedCovertImageColour = (steganoImageColour % 16) * 16

例如,如果在公开图像(173 255 47)中有绿黄色像素,而在隐藏图像(135 206 250)中有浅蓝色天空像素,则生成的像素为(168 252 47),仍然非常接近原始的绿黄色,但可以从它重建(128 192 240),这非常接近原始的浅蓝天。

&#13;
&#13;
<div style="background-color: rgb(173,255,47)">overt (green-yellow)</div>
<div style="background-color: rgb(135,206,250)">covert (light sky blue)</div>
<div style="background-color: rgb(168,252,47)">stegano (close enough to green-yellow)</div>
<div style="background-color: rgb(128,192,240)">reconstructed covert (close enough to light sky blue)</div>
&#13;
&#13;
&#13;