码迷,mamicode.com
首页 > 其他好文 > 详细

一种简单的图像隐写

时间:2015-05-02 15:17:14      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

    其实看完摘要,基本上原理就已经很明白了,就是通过一个全偶数的“刻板”,将刻字内容刻在上面就是把对应的地方改成奇数。提取的时候把奇数部分“翻印”出来就行了。下面看一下实现。

 

step1:找到一张图片[BMP格式],并将其所有的R通道值改成偶数

        为什么非得是bmp?我昨天也被图片格式给整了一把,简单来说,在我们比较熟知的集中图片格式中,如png、jpeg、bmp,只有bmp是无压缩的,我们可以精准的控制像素值。jpg图像由于受到的压缩的影响,像素值有1-3的波动,这还怎么搞啊。。。昨天我用PIL搞了一下午都在奇怪为什么图片保存后,像素值不是我设定好的。怒了就用C读取bmp图片试了一下成功了(纯c就能很简单的解析bmp),发现可以正常实现,就想到了图片格式这个梗。对于图片格式的细节我不想去细细研究,我就想得到图片的数据矩阵,改变矩阵值。所以就用bmp图片了。

 

技术分享

 

伪代码如下:

for i in range(w):
    for j in range(h):
        if img[i,j,R] %2 != 0:
            img[i,j,R] = img[i,j,R]+1 if img[i,j,R] <2 else img[i,j,R]-1

 

step2:在意个白色的图片上写上黑色的文字[同样是bmp]

技术分享

step3:通过读取写有隐藏信息的图片的像素值,将载体图片同等坐标的R像素值改成奇数

 for i in range(w):
    for j in range(h):
        if code[i,j,R] == 0 and code[i,j,G] == 0 and code[i,j,B] == 0:
            img[i,j,R] += 1

解码:

遍历有隐藏信息的图片,寻找R值为奇数的坐标;在空白图片对应的坐标设置一种颜色

for i in range(w):
    for j in range(h):
        if img[i,j,R] %2 != 0:
            out[i,j,R]=255
            out[i,j,G]=255
            out[i,j,B]=255

 

 

技术分享

 

 

完整的代码(Python+OpenCV2,其实就是用了一下读取、更改像素的功能)

隐藏信息:

#coding:utf-8
import cv2
import numpy as np
# import random
img = cv2.imread("lena.bmp")
code = cv2.imread("code.bmp")
w,h = img.shape[:2]
# print w,h
for i in range(w):
    for j in range(h):
        if img[i,j,2] %2 != 0:
            img[i,j,2] = img[i,j,2]+1 if img[i,j,2] <2 else img[i,j,2]-1
# cv2.imwrite("quanou.bmp",img)
for i in range(w):
    for j in range(h):
        if code[i,j,0] == 0 and code[i,j,1] == 0 and code[i,j,2] == 0:
            img[i,j,2] += 1
cv2.imwrite("final.bmp",img)

提取信息:

#coding:utf-8
import cv2
import numpy as np
img = cv2.imread("final.bmp")
out = np.zeros(img.shape,np.uint8)
w,h = img.shape[:2]
for i in range(w):
    for j in range(h):
        if img[i,j,2] %2 != 0:
            out[i,j,0]=255
            out[i,j,1]=255
            out[i,j,2]=255
cv2.imwrite("out.bmp",out)
顺便吐槽一下。OSCHINA的博客编辑也真是弱爆了,只支持jpg格式,每次编辑还TM只能上传一张照片,编辑还卡的没法

一种简单的图像隐写

标签:

原文地址:http://my.oschina.net/TACEY/blog/409065

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!