数字图像 - 图像隐写

本文介绍了图像隐写技术,包括空域隐写和频域隐写方法。在空域隐写中,通过修改图像像素的最低有效位(LSB)来隐藏信息。在频域隐写中,利用傅里叶变换将水印嵌入图像的高频区域,以降低对图像质量的影响。此外,还提到了使用Python的stegano包进行隐写操作。
摘要由CSDN通过智能技术生成

图像隐写(Image Steganography)

引言

今天学习了图像隐写,图像隐写就是把信息隐藏写入到数字图像里面,一般情况下看不出有什么,需要去解析后才能获取隐藏的内容。然后自己写了下python代码实现下:1.从图像空域隐写信息;2.从图像频域隐写信息;3.用stegano包直接调用接口进行隐写。

空域隐写

显示器的标准格式就用(R,G,B)表示一个像素的颜色显示,其范围为黑色(0, 0, 0)~ 白色(255, 255, 255)。用每一个都是用8 bit的信息的表示,其中隐写的LSB(Least Significant Bits)算法就是用最后一个bit来写入信息而图像不至于失真太明显。

from PIL import Image, ImageDraw, ImageFont
import numpy as np
from matplotlib import pyplot as plt

# 画一张跟原始图像一样大小的水印图像,把字符串用黑色微软雅黑14号大小循环画成水印图像
def draw_a_water_mark_img(img_size, img_mode, water_mark_str):
    image_draw = Image.new(img_mode, img_size,"white")
    draw = ImageDraw.Draw(image_draw)

	# 字体大小,用的是微软雅黑
    font_size = 14
    water_mark_size = len(water_mark_str)
    x_step_num = int(img_size[0] / font_size)
    y_step_num = int(img_size[1] / font_size)

    k = 0
    for j in range(y_step_num):
        for i in range(x_step_num):
            draw.text((i * font_size,j * font_size),water_mark_str[k%water_mark_size], font=ImageFont.truetype("msyh.ttc",font_size),fill="black")
            k=k+1
    return image_draw

# 通过先右移再左移的移位操作使最后的1个bit为0,形成新的原始图像
def make_least_significant_bit_0(img):
    img_list = list(img.getdata())
    new_im
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值