water水印(DCT变换过程)

DCT变换:
低频和高频来源是声音的频率,这里根据纹理形象化了;
高频/低频是指图像从纹理角度看,纹理细密/细小/稠密的为高频信息,例如均匀一致的路面,水面等,低频就是指那些较粗的纹理,如边缘信息等,图象上明
亮变化快而显著的信息就是“高频”信息; 图象上明亮变化慢而相似的信息就是“低频”信息。
对于图像来说。 空域的高频可以理解为细节信号,比如当一幅大图缩小n倍后,图像的细节就看不到了, 
我们就可以理解为高频信号被滤掉了,而剩下的图像部分就可理解为低频了。 

低频灰度变化较慢的区域,通常是背景。 
高频是灰度变化剧烈区域,通常是边界。

DCT以8x8的 像素为单位进行,生成的是8x8的DCT系数数据块。DCT变换的最大特点是对于一般的图像都能够将像块的能量集中于少数低频DCT系数上,即生成 8x8DCT系数块中,仅 左上角的少量低频系数数值较大其余系数的数值很小,这样就可能只编码和传输少数系数而不严重影响图像质量。 
DCT不能直接对图像产生压缩作用,但对 图像的能量具有很好的集中效果,为压缩打下了基础,比如jpeg和h.264都是基于DCT变换的,所以数字水印添加后,水印不会被丢失;

DCT变换特点:
DCT是正交变换,它可以将8x8图像空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件中都容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。
为什么采用8x8的图像块,其原因是由于计算量和像素之间关系的数量,许多研究表明,在15或20个像素之后,像素间的相关性开始下降。就是说,一列相似的像素通常会持续15到20个像素那么长,在此之后,像素就会改变幅度水平(或反向)。

图像的空间域的信息表示:
模拟图像经采样后成为离散化的亮度值然后分成一个个宏块,而一个宏块有分成8x8大小的块,可以用一个矩阵来表示这个块:
water水印(DCT变换过程)
N=8,矩阵中元素f(i,j)表示块中第i行、第j列像素的亮度值。把该矩阵看作一个空间域,显然,块中这些亮度值的大小有一定的随机性,无序性,或者说亮度值的分布没有什么特征;DCT变换就是来解决这个问题的,把这些随机的数据变的有序,便于对数据进行编码压缩。
空间域到变换域公式)一维DCT正交变换的公式为:
water水印(DCT变换过程)
变换域到空间域的变换 二维DCT逆变换公式:
water水印(DCT变换过程)
其中:
water水印(DCT变换过程)


图形或视频压缩技术:
1. 对图片进行 DCT变换,DCT以8x8的像块为单位进行,生成的是8x8的DCT系数数据块。
2.  量化:量化过程就是以某个量化步长去除DCT系数,对一个8x8的DCT变换块中的64个DCT变换系数采用不同的量化精度,以保证尽可能多地包含特定的DCT空间频率信息,又使量化精度不超过需要。DCT变换系数中,低频系数对视觉感应的重要性较高,因此分配的量化精度较细;高频系数对视觉感应的重要性较低,分配的量化精度较粗,通常情况下,一个DCT变换块中的大多数高频系数量化后都会变为零。 
3.  之型扫描
DCT变换产生的是一8x8的二维数组,为进行传输,还须将其转换为一维排列方式。有两种二维到一维的转换方式,或称扫描方式:之型扫描(Zig-Zag)和交替扫描,其中之型扫描是最常用的一种。由于经量化后,大多数非零DCT系数集中于8x8二维矩阵的左上角,即低频分量区,之型扫描后,这些非零DCT系数就集中于一维排列数组的前部,后面跟着长串的量化为零的DCT系数;
water水印(DCT变换过程)
4.  游程编码
只有非零系数被编码。一个非零系数的编码由两部分组成:前一部分表示非零系数前的连续零系数的数量(称为游程),后一部分是那个非零系数。这样就把之型扫描的优点体现出来了,因为之型扫描在大多数情况下出现连零的机会比较多,游程编码的效率就比较高。当一维序列中的后部剩余的DCT系数都为零时,只要用一个“块结束”标志(EOB)来指示,就可结束这一8x8变换块的编码,产生的压缩效果是非常明显的。


图像转换库:netpbm;

DCT变换:
1. 将图片分成8*8的小块,然后进行正向的DCT变换,其中DCT正向变换系数将按照zigzag顺序排列,左上角第一个系数为直流系数,代表了此8*8字块的低频部分,其余为交流系数,按照箭头指示的zigzag顺序表示了交流系数由低频到高频的过渡;
2.人类最敏感的是DCT变换的低频系数,所以尽量保留低频系数,JPEG有损压缩会丢失高频系数,因此选植入水印的关键是要选取接近低频的中频系数位置;对系数进行调整,以表示水印,按照zigzag顺序排序的第9到第32个位置是合适的。
3.也可以两个相邻的系数表示一个水印点,当然要给一个阙值;


总结:
1. 利用netpbm库转换图像格式;
2. 对原始图片进行DCT变换;
3. 在低频系数,修改固定的低频系数,嵌入水印;
4. DCT逆变换,得到图片;
5. 加载变换后的图片,进行DCT变换;
6. 根据固定的低频系数,得到水印;
问题:图片加载到什么地方?是二维数组吗?
低频系数如何变换?根据什么运算?
需要看程序解决!

心得:
1. 起初对图像处理的知识几乎没有,不知道图像的格式,不知道DCT,不知道h.264.接到项目后,很茫然,无从下手;
2. 查看网络,首先找一些图像处理的基本知识,从大量的知识中,挖掘有同的东西,近于项目有关的知识,比如信道,编码技术等等信息,一概过滤,最快的时间,找到有用的知识,有一定的思路;
3. 查看大量的h.264的资料,由于不是专业出身,仅仅了解思想。h.264很庞大,当时也有像把h.264弄懂的欲望,后方放弃,只找与压缩算法相关的东西;后来发现h.264也是基于DCT算法的,但还有很多的算法,那些有用那些无用,花了大量的时间来需找,中间也看了很多项目没用的知识;
4. 查看网络上相关的算法,搜索论文,搜论问的目的是找一种可行的操作;找一种方法;
5. 从简单入手,了解BMP格式,分析,解析格式,把嵌入水印,和提取水印的函数接口流出;
6. 加入水印算法,从简单入手,空间域变换,最低域嵌入水印,失败;
7. 需找检测水印是否成功的方法,利用jpeg的算法替代h.264算法;
8. 找论文,研究DCT 算法,搜DCT代码,由于是嵌入式,算法尽量设计简单,考虑复杂度;
9. 发现网上代码很不靠谱,找论文,按照论文提出的简单算法,写程序,测试,成功;
10. 尝试加入图片做为水印,但发现失败,所以加入的是摄像头的编号;
一切从简单开始,从简单方法尝试,一步一步,踏踏实实的学习,就会找到解决方法;


 Cox等人于1995年提出了基于图像全局变换的水印方法,称之为扩频法。这也是目前大部分变换域水印算法中所用到的技术。它将满足正态分布的伪随机序列加入到图像的DCT变换后视觉最重要系数中,利用了序列扩频技术(SS)和人类视觉特性(HVS)。算法原理为先选定视觉重要系数,再进行修改,最常用的嵌入规则如下:

V1=V+ αWi(加法准则)

V1=V(1+ αWi)(乘法准则)

其中V、V1分别是修改前和修改后的频域系数,α是缩放因子,是第Wi个信息位水印。 
  一般说来,乘法准则的抗失真性能要优于加法准则。水印的检测是通过计算相关函数实现的。从嵌入水印的图像中提取出是嵌入规则的逆过程,把提取出来的水印与原水印作相似性运算,与制定的阈值比较,可确定是否存在水印。这是稳健性水印的奠基性算法。


  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值