基于Python实现数字图像可视化水印系统
资源下载地址:https://download.csdn.net/download/sheziqiong/85604939
LSB 基本算法
LSB 基本算法包括 LSB 基本算法水印嵌入和 LSB 基本算法水印提取两个部分。点击按钮可以进行相应的功能,右侧分别是它们的介绍。
LSB 基本算法水印嵌入由用户选择图片和隐藏信息,对图像进行最低有效位隐写后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。
LSB 基本算法水印提取由用户选择提取信息的保存路径,程序将读取 LSB 隐写时保存的图像并提取出信息并保存到用户选择的路径。
在进行 LSB 基本算法水印提取之前,需要先在下方输入提取信息的长度。
图 5.4 可视化数字水印系统 LSB 基本算法界面
LSB 算法改进
LSB 算法改进包括“LSB 随机间隔法”和“LSB 区域校验位算法”两个部分。点击按钮可以进行相应的功能,右侧分别是它们的介绍。
LSB 随机间隔法包括随机间隔法水印嵌入和随机间隔水印提取。
LSB 区域校验位算法包括区域校验位算法水印嵌入和区域校验位算法水印提取。
图 5.5 可视化数字水印系统 LSB 算法改进界面
①LSB 随机间隔法
LSB 随机间隔法包括“LSB 随机间隔法水印嵌入”和“LSB 随机间隔法水印提取”两个功能。点击按钮可以进行相应的功能,下方分别是它们的介绍。
随机间隔法水印嵌入由用户选择图片和隐藏信息,对图像进行随机间隔的
LSB 隐写后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。随机间隔的步长在上方由用户输入。
随机间隔法水印提取由用户选择提取信息的保存路径,程序将使用同样的随机种子,读取随机间隔法水印嵌入时保存的图像并提取出信息并保存到用户选择的路径。
在用户进行随机间隔法嵌入和提取之前,需要首先在上方设置随机间隔的步长。如果用户不设置,步长默认为 2。如果步长设置得过长,以至于信息无法完整在图片中隐藏,程序会弹出消息框提示用户步长设置过长。
在用户进行随机间隔法提取之前,还需要在下方输入提取信息的长度。
图 5.6 可视化数字水印系统 LSB 随机间隔法界面
②LSB 区域校验位算法
LSB 区域校验位算法包括“LSB 区域校验位算法水印嵌入”和“LSB 区域校验位算法水印提取”。点击按钮可以进行相应的功能,下方是它们的介绍。
区域校验位算法水印嵌入由用户选择图片和隐藏信息,对图像进行区域校验位的 LSB 隐写后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。区域校验位算法的区域大小由用户输入。
区域校验位算法水印提取由用户选择提取信息的保存路径,读取区域校验位算法水印嵌入时保存的图像并提取出信息并保存到用户选择的路径。
在用户进行区域校验位算法嵌入和提取之前,需要首先在上方设置区域校验位的区域大小。如果用户不设置,区域大小默认为 4。如果区域大小设置得过长,以至于信息无法完整在图片中隐藏,程序会弹出消息框提示用户区域大小设置过长。在用户进行区域校验位算法提取之前,还需要在下方输入提取信息的长度。
图 5.7 可视化数字水印系统 LSB 区域校验位算法界面
图像降级算法及其改进
图像降级算法及其改进包括“图像降级算法”和“图像降级算法改进”两个部分。点击按钮可以进行相应的功能,右侧分别是它们的介绍。
图像降级算法包括图像降级算法水印嵌入和图像降级算法水印提取。
图像降级算法改进包括图像降级算法改进水印嵌入和图像降级算法改进水印提取。
图 5.8 可视化数字水印系统图像降级算法及其改进界面
① 图像降级算法
图像降级算法包括“图像降级算法水印嵌入”和“图像降级算法水印提取” 两个功能。点击按钮可以进行相应的功能,右侧分别是它们的介绍。
图像降级算法水印嵌入由用户选择载体图片和水印图片,将载体图片的四个最低为比特位替换成水印图片的四个最高比特位,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。
图像降级算法水印嵌入水印提取由用户选择要提取信息的图片和提取信息的保存位置,程序读取要提取信息的图片,提取出隐藏的图片并保存。
图 5.9 可视化数字水印系统图像降级算法界面
② 图像降级算法改进
图像降级算法改进包括“图像降级算法改进水印嵌入”和“图像降级算法改进水印提取”两个功能。点击按钮可以进行相应的功能,右侧分别是它们的介绍。
图像降级算法改进水印嵌入由用户选择载体图片和水印图片,将水印图片的信息的八位的二进制数分成四块,每块分别加入到载体图片上去,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。
图像降级算法水印嵌入水印提取由用户选择要提取信息的图片和提取信息的保存位置,程序读取要提取信息的图片,提取出隐藏的图片并保存。
图 5.10 可视化数字水印系统图像降级算法改进界面
3.2.3 变换域水印界面
变换域水印包括“DCT 水印嵌入”和“DCT 水印提取”两个功能。点击按钮可以进行相应的功能,下方是它们的介绍。
DCT 水印嵌入由用户选择图片和隐藏信息,对图像进行离散余弦变换后,将秘密信息写入,然后绘制原始图像和隐写后的图像的直方图对比,并保存隐写后的图像。
DCT 提取由用户选择提取信息的保存路径,程序将读取 DCT 隐写时保存的图像并提取出信息并保存到用户选择的路径。
图 5.11 可视化数字水印系统变换域水印界面
3.3 系统功能展示
3.3.1 空间域水印
LSB 基本算法
LSB 基本算法水印嵌入
首先点击“LSB 基本算法水印嵌入”按钮,进行嵌入操作。
图 5.12 LSB 基本算法界面
下面会弹出提示,请用户选择要进行 LSB 隐写的图像。
图 5.13 提示用户选择 LSB 隐写图像界面
点击“确定”,进行选择要隐写的图像,点击“打开”。
图 5.14 选择 LSB 隐写图像界面
图 5.15 载体图像
下面会提示用户选择要隐藏的信息,用户需要提前将要隐藏的信息放入一个 txt 文本文件中,然后选择这个文件,点击打开。
图 5.16 提示用户选择要隐藏的信息界面
图 5.17 选择隐藏信息的界面
这是我们准备隐写入图像中的信息,
“Visual watermarking system based on digital image by hxx”
图 5.18 待隐写的秘密信息
下面程序就会将隐藏信息用 LSB 算法嵌入到用户选择的图片中。隐写成功后会弹出提示,告诉用户隐写已完成,并且将隐写后的图像保存在程序所在的目录下,命名为用户选择文件的文件名 +_LSB-generate。
点击确定后,会出现原始图像和隐藏信息的图像的对比图,并绘制它们的直方图。
图 5.20 原始图像和隐藏信息的图像对比图以及直方图
LSB 基本算法水印提取首先预计要提取的信息的长度,输入提取信息的长度。注意这里的提取信息
的长度是信息转换为二进制后的比特长度。
以我们嵌入的信息为例,“Visual watermarking system based on digital image
by hxx”这段文本,转换为二进制后是
“ 01010110011010010111001101110101011000010110110000100000011101110110
0001011101000110010101110010011011010110000101110010011010110110100101
1011100110011100100000011100110111100101110011011101000110010101101101
0010000001100010011000010111001101100101011001000010000001101111011011
1000100000011001000110100101100111011010010111010001100001011011000010
0000011010010110110101100001011001110110010100100000011000100111100100
”
其信息长度为 448,在这里我们输入 448,点击“输入提取信息的长度”按钮。
图 5.21 输入提取信息的长度
会弹出提示,提取信息长度已经设置成功。
图 5.22 提取信息长度已设置的提示框
之后点击“LSB 基本算法水印提取”按钮。
图 5.23 点击“LSB 基本算法水印提取”按钮
按照弹出的提示,选择要提取隐藏信息的图像,选择后点击打开。
图 5.24 选择提取隐藏信息的图像
选择要将提取的信息保存的位置,点击确定。
图 5.25 提示用户选择隐藏信息的保存位置
选择好保存的文件夹后点击“选择文件夹”。
图 5.26 选择隐藏信息的保存位置
之后弹出提示,隐藏信息已提取,保存为 LSB_recover.txt。
图 5.27 隐藏信息已提取提示框
来到选择保存信息的文件夹,打开 LSB_recover.txt,可以看到信息已被正确提取。
图 5.28 提取的隐藏信息
当然,用户在提取信息的时候,可能并不知道信息的具体长度,这就需要用户根据提取出来的内容进行尝试几次,就可以正确提取,例如,以上面的信息提取为例,当我们输入提取信息长度为 100 时,提取的信息为
图 5.29 提取信息的长度输入较小时的结果
可以看到此时有效的信息似乎还没有结束。
当输入提取信息长度为 600 时,提取的信息为
图 5.30 提取信息的长度输入较大时的结果
可以看到有效的信息到“hxx”就结束了,后面就是乱码了,所以我们可以确定隐藏的信息就是“Visual watermarking system based on digital image by hxx”。
LSB 算法改进
LSB 随机间隔法
①LSB 随机间隔法水印嵌入
首先设置随机间隔的步长(如果用户没有设置,那么默认为 2),我们假定设置为 5。
图 5.31 设置随机间隔的步长
程序会弹出提示,随机间隔步长已被设置为 5。
图 5.32 提示随机间隔步长已被设置
当然,随机间隔的步长不能无限大,必须要能保证隐藏信息能够被全部嵌入到载体图片中。如果步长设置得过长,程序会弹出提示,不过要等用户给定载体图片和隐藏信息后才能判断出来。
点击“LSB 随机间隔法水印嵌入”按钮,进行嵌入操作。
图 5.33 点击“LSB 随机间隔法水印嵌入”按钮
下面会弹出提示,请用户选择要进行 LSB 随机间隔隐写的图像。点击“确定” 进行选择要隐写的图像。选择图像后点击“打开”。
图 5.34 LSB 随机间隔法的载体图像
下面会提示用户选择要隐藏的信息,用户需要提前将要隐藏的信息放入一个 txt 文本文件中,然后选择这个文件。
这是我们准备隐写入图像中的信息,
“Visual watermarking system based on digital image by hxx”选择好信息文件后,点击“打开”。
图 5.35 打开水印信息
此时,如果给定的步长设置不合适,程序就会弹出提示,告诉用户步长设置过大,请重新设置。
图 5.36 提示步长设置过大
下面程序就会将隐藏信息用随机间隔算法嵌入到用户选择的图片中。隐写成功后会弹出提示,告诉用户隐写已完成,并且将隐写后的图像保存在程序所在的目录下,命名为用户选择文件的文件名 +_random_interval-generated。
图 5.37 提示图像隐写完成
点击确定后,会出现原始图像和隐藏信息的图像的对比图,并绘制它们的直方图。
图 5.38 原始图像和隐藏信息图像的对比图以及直方图
②LSB 随机间隔法水印提取
首先也要设置随机间隔的步长,并且,要想正确提取信息,提取时设置的步长要和隐写时设置的步长相同。然后在下方输入提取信息的长度。在这里我们输入 448,点击“输入提取信息的长度”按钮。之后会弹出提示,提取信息长度已经设置成功。之后点击“LSB 随机间隔法水印提取”按钮。
图 5.39 点击“LSB 随机间隔法水印提取”按钮
按照弹出的提示,选择要提取隐藏信息的图像和选择要将提取的信息保存的位置。
之后弹出提示,隐藏信息已提取,保存为 LSB-random_interval-recover.txt
来到选择保存信息的文件夹,打开 LSB-random_interval-recover.txt,可以看到,信息已被正确提取。
- 图 5.40 提取的隐藏信息
- LSB 区域校验位算法
- ①LSB 区域校验位算法水印嵌入
- 首先设置区域校验位算法的区域大小(如果用户没有设置,那么默认为 4),我们假定设置为 5。
图 5.41 设置区域校验位的区域大小
程序会弹出提示,区域大小已被设置为 5。
- 图 5.42 提示区域大小已被设置
- 当然,区域大小不能无限大,必须要能保证隐藏信息能够被全部嵌入到载体图片中。如果区域大小设置得过大,程序会弹出提示,不过要等用户给定载体图片和隐藏信息后才能判断出来。
- 点击“LSB 随机间隔法水印嵌入”按钮,进行嵌入操作。
图 5.43 点击“LSB 区域校验位算法水印嵌入”按钮
下面会弹出提示,请用户选择要进行 LSB 区域校验位隐写的图像。
- 图 5.44 LSB 区域校验位算法载体图像
- 下面会提示用户选择要隐藏的信息。用户需要提前将要隐藏的信息放入一个 txt 文本文件中,然后选择这个文件。
- 这是我们准备隐写入图像中的信息
- “Visual watermarking system based on digital image by hxx”,选择好信息文件后,点击“打开”。
- 此时,如果给定的区域大小设置不合适,程序就会弹出提示,告诉用户区域大小设置过大,请重新设置。
图 5.45 提示区域设置过大
下面程序就会将隐藏信息用区域校验位算法,嵌入到用户选择的图片中。隐写成功后会弹出提示,告诉用户隐写已完成,并且将隐写后的图像保存在程序所在的目录下,命名为用户选择文件的文件名 +_LSB-regional_verification-generated。
点击确定后,会出现原始图像和隐藏信息的图像的对比图,并绘制它们的直方图。
- 图 5.46 原始图像和隐藏信息图像的对比图以及直方图
- ②LSB 区域校验位算法水印提取
- 首先也要设置区域校验位算法的区域大小,并且,要想正确提取信息,提取时设置的区域大小要和隐写时设置的区域大小相同。
- 然后在下方输入提取信息的长度。在这里我们输入 448,点击“输入提取信息的长度”按钮。
- 之后点击“LSB 区域校验位算法水印提取”按钮。
图 5.47 点击“LSB 区域校验位算法水印提取”按钮
按照弹出的提示,选择要提取隐藏信息的图像和要将提取的信息保存的位置,之后弹出提示,隐藏信息已提取,保存为 LSB-regional_verification-recover.txt。来到选择保存信息的文件夹,打开 LSB-regional_verification-recover.txt,可以看到信息已被正确提取。
- 图 5.48 提取的隐藏信息
- 图像降级算法及其改进
- 图像降级算法
- ① 图像降级算法水印嵌入
- 首先点击“图像降级算法水印嵌入”按钮,进行嵌入操作。
- 图 5.49 点击“图像降级算法水印嵌入”按钮
- 下面会弹出提示,请用户选择被嵌入水印的载体图像。向图片中添加图片水印,对嵌入图片的大小有限制,嵌入的图片的大小不能大于隐藏信息的图片。
- 这是我们准备的载体图片和嵌入载体图片的水印图片。
图 5.50 载体图片
图 5.51 水印图片
选择载体图片后点击“打开”。之后会提示用户选择要隐写的图片,选择好隐写图片后,点击“打开”。
下面程序就会将要隐写的图片,用 LSB 算法,嵌入到用户选择的图片中。隐写成功后会弹出提示,告诉用户隐写已完成,并且将隐写后的图像保存在程序所在的目录下,命名为用户选择文件的文件名 +_image_with_mark。
点击确定后,会出现原始图像和隐藏信息的图像的对比图,并绘制它们的直方图。
- 图 5.52 原始图像和隐藏信息的图像对比图以及直方图
- ③ 图像降级算法水印提取
- 点击“图像降级算法水印提取”按钮。
- 图 5.53 点击“图像降级算法水印提取”按钮
- 按照弹出的提示,选择要提取隐藏信息的图像和要将提取的信息保存的位置。
- 之后弹出提示,水印图片已提取,保存为 mark_get.png。
图 5.54 提示水印图片已提取
来到选择保存信息的文件夹,打开 mark_get.png,可以看到隐藏的图片已被正确提取。
图 5.55 提示的水印图片
图像降级算法改进
图像降级算法改进的水印嵌入和提取的操作过程与图像降级算法的水印嵌入和提取完全相同,最终的区别在于得到的隐写信息的图像的画质会有所提升,而水印图像的长和宽需要分别小于等于载体图片长和宽的 1/4。
图 5.56 图像降级算法改进的原始图像和隐藏信息的图像对比图以及直方图
变换域水印
DCT 水印嵌入
首先点击“DCT 算法水印嵌入”按钮,进行嵌入操作。
图 5.57 点击“DCT 算法水印嵌入”按钮
下面会弹出提示,请用户选择载体图像,选择图像后点击“打开”。
图 5.58 载体图像
下面会提示用户选择要隐藏的信息,用户需要提前将要隐藏的信息放入一个 txt 文本文件中,然后选择这个文件。
这是我们准备隐写入图像中的信息,
“Visual watermarking system based on digital image by hxx” 选择好信息文件后点击“打开”。
下面程序就会将隐藏信息用 DCT 算法,嵌入到用户选择的图片中。隐写成功后会弹出提示,告诉用户隐写已完成,并且将隐写后的图像保存在程序所在的目录下,命名为用户选择文件的文件名 +_DCT-generated
点击确定后,会出现原始图像和隐藏信息的图像的对比图,并绘制它们的直方图。
图 5.59 原始图像和隐藏信息图像的对比图以及直方图
DCT 水印提取
DCT 水印提取和 LSB 水印提取不同的一点是,DCT 水印提取输入的信息长度必须是正确的信息长度,否则将会是乱码,不能提取出正确的信息。首先设置提取信息的长度,然后点击“DCT 水印提取”按钮。
图 5.60 点击“DCT 水印提取”按钮
按照弹出的提示,选择要提取隐藏信息的图像和要将提取的信息保存的位置,选择好保存的文件夹后点击“选择文件夹”。
之后弹出提示,隐藏信息已提取,保存为 DCT_hidden_text.txt。然后来到选择保存信息的文件夹,打开 DCT_hidden_text.txt,可以看到信息已被正确提取。
图 5.61 提取的隐藏信息
资源下载地址:https://download.csdn.net/download/sheziqiong/85604939
基于Python实现数字图像可视化水印系统相关推荐
- 实战28:数字图像可视化水印系统的设计与实现(LSB算法、DCT算法、随机间隔算法、区域校验位算法、图像降级算法、图像降级算法改进等6种数字水印算法的实现)
基于数字图像的可视化水印系统按照水印算法的不同主要分为空间域水印和变换域水印两大类.空间域水印以 LSB 算法--最低有效位算法为代表,变换域水印以 DCT 算法--离散余弦变换算法为代表[10]. ...
- 基于python的房价可视化预测系统
资源下载地址:https://download.csdn.net/download/sheziqiong/86774405 资源下载地址:https://download.csdn.net/downl ...
- 基于Python的数字图形可视化水印系统的设计与实现
目录 1 经典数字图像水印算法 1 1.1 LSB 算法 1 1.2DCT 算法 2 2 经典数字图像水印算法的改进 7 2.1随机间隔算法 7 2.2区域校验位算法 8 2.3图像降级算法及其改进 ...
- 基于 python 数据库的可视化股票信息查询系统
基于 python 数据库的可视化股票信息查询系统 项目概述:从网页上爬取股票信息导入本地数据库.设计 GUI 图形界面,可以在图形界面中设定组合查询的条件,即特定融资增减比例等,在数据库中实行数据检 ...
- 基于Python热点新闻关键词数据分析系统
温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 利用网络爬虫技术从某新闻网站爬取最新的新闻数据,并进行版块分类,对某篇版块下的所有新闻进行中文分词, ...
- python flask 在线可视化平台系统
python flask 在线可视化平台系统 基于python flask的在线可视化平台 基于python flask可视化平台 基于python flask 词云分析系统 后端:python fl ...
- NVIDIA专家实战演示,教你快速搭建基于Python的车辆信息识别系统
主讲人 | 何琨 英伟达 量子位编辑 | 公众号 QbitAI 随着智慧城市.自动驾驶的快速落地,车辆的检测和识别应用场景非常广泛,如车牌识别.车流统计.车辆属性识别等. 近日,在英伟达x量子位发起的 ...
- CV公开课报名 | 快速搭建基于Python的车辆信息识别系统
位来 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 时下,智慧城市和自动驾驶快速发展,车辆的检测和识别应用场景非常广泛,如车牌识别.车流统计.车辆属性识别等. 但是从0搭建一个精度高.速度快的 ...
- python 文件格式转换_数据分析:基于Python的自定义文件格式转换系统
( 白宁超 2018年7月16日14:47:41 ) 导读:随着大数据的快速发展,自然语言处理.数据挖掘.机器学习技术应用愈加广泛.针对大数据的预处理工作是一项庞杂.棘手的工作.首先数据采集和存储,尤 ...
最新文章
- listary 指定目录搜索_everything
- P2241 统计方形(数据加强版)
- ElasticSearch(一)基础知识
- CentOS提示另一个目前运行的程序正在访问软件信息
- 互联网晚报 | 3月26日 星期六 |​ 竞拍规则优化,部分城市土地市场有所回暖;​​武汉房贷利率下调...
- 互联网被滥用的沟通“话术”
- IEEE 物联网相关的标准
- [redmine问题回复】redmine安装好后,在什么地方增加cvs配置库CVSROOT
- WDA基础七:TABStrip
- 2021年2月移动互联网全行业排行榜
- 《软件设计师》考点分布
- 李开复谈软件外包及软件安全(一)
- 电子技术部下半学期第一次培训
- 刘润《五分钟商学院》思维导图笔记 - 管理篇
- 计算机学生的高职英语课程,高职计算机英语课程教学方法探索
- 保龄球记分程序c语言,老鸟救命~关于保龄球记分规则的程序
- 封装HDLC协议实现两个路由器互相通信
- java逻辑值_java、 若x = 5,y = 10,则x y和x = y的逻辑值分别为 和 。...
- Pinterest模式:互联网新一轮热潮来临
- 每日一BUG(javax.el.PropertyNotFoundException: 类型[com.Bean.Goods]上找不到属性[img])