1.一种基于多峰值直方图平移的可逆图像水印算法,其特征在于,包括水印嵌入方法,具体包括如下步骤:步骤1:对水印W作Arnold置乱变换得到W',将变换后的水印W'转变为一维二进制序列;
步骤2:遍历原始图像I的所有像素点,根据像素点的灰度值大小以及其出现的频率,生成原始图像的直方图;
步骤3:找到直方图中多个较为突出的峰值点,比较多个峰值点之间的距离,选取合适的峰值点与零值点,以零值点为边界,将直方图自适应的划分为多个水印嵌入区间,没有零值点用极小值点代替;
在直方图中选择峰值点时,根据像素点频率大小形成多个峰值点,根据嵌入水印量,对峰值点值按从大到小排序,选取峰值点值靠前的峰值点和相应零值点作为水印嵌入区域;
选取合适的峰值点与零值点,即根据嵌入水印量,对峰值点值按从大到小排序,选取峰值点值靠前的峰值点和相应零值点;
步骤4:在各个区间内找到峰值点pi、次峰值点mi、零值点ni,利用直方图平移算法在直方图的次峰值点处进行水印信息的嵌入;
步骤5:对直方图的各个嵌入区间利用步骤4的直方图平移算法进行水印信息的嵌入,从而完成整个图像水印信息的嵌入,得到含水印图像I′;
还包括水印提取方法,包括如下步骤:
S1:遍历含水印图像I′的所有像素点,根据像素点的灰度值大小以及其出现的频率,生成含水印图像的直方图;
S2:根据直方图分区方法,找到直方图中多个较为突出的峰值点,比较多个峰值点之间的距离,选取合适的峰值点与零值点,以零值点为边界,将直方图自适应的划分为多个水印提取区间,没有零值点用极小值点代替;
S3:根据S2得到的水印提取区间遍历含水印图像的像素点进行水印信息的提取,各个区间峰值点pi、次峰值点mi,零值点ni,根据直方图平移算法提取水印信息;
S4:对含水印图像分区间之后所有区间的像素进行处理,从而将完成整个图像水印信息的提取;
S5:对水印信息进行逆Arnold变换得到所需要的水印信息W。
2.根据权利要求1所述的基于多峰值直方图平移的可逆图像水印算法,其特征在于,利用直方图平移算法在直方图的次峰值点处进行水印信息的嵌入具体过程为:在某一区间中找到该区间的零点ni、次峰值点mi,若该区间内像素点的值x在m和n之间,则该像素的值加1,使得像素值为m+1的点的个数为零;对图像再次按序扫描,如果像素值x是m,而且嵌入的水印信息是1,则像素值x加1,否则,如果待嵌入的水印信息是0,则像素值x不变;
该嵌入区间像素值变化为:
其中,b∈{0,1},b为待嵌入的水印信息,x为嵌入水印之前该区间的像素值,x′为嵌入水印之后该区间的像素值。
3.根据权利要求1所述的基于多峰值直方图平移的可逆图像水印算法,其特征在于,所述S2中,将直方图自适应的划分为多个水印提取区间具体为:水印嵌入之后,由于各个嵌入区间的峰值点与零点保持不变,因此在水印信息提取的时候,水印提取区间的划分与嵌入区间划分相同。
4.根据权利要求3所述的基于多峰值直方图平移的可逆图像水印算法,其特征在于,所述S3中,根据S2得到的水印提取区间遍历含水印图像的像素点进行水印信息的提取,具体为:提取过程中像素变化为:
其中,x为嵌入水印后的该区间图像像素值,x′为提取水印后该区间的像素值,b∈{0,
1},b为提取的水印信息。