1.面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,具体包括:水印嵌入阶段:
输入文本图像进行预处理与文本区域筛选,保留包含字符内容的有效文本区域,对有效文本区域执行字符级识别与结构化分析,获得字符实例的定位框,并按文本行进行行级组织与编号;
生成水印比特序列作为有效载荷,并在水印比特序列中引入全局校验字段;
将有效载荷与全局校验字段构成的载荷全局序列划分为长度相同的多个源块;
为每一行文本设定独立的确定性种子,基于确定性种子对源块进行无序冗余编码生成数据块,在无序冗余编码时引入块内纠错编码,将每个数据块进一步编码为区域块;
将区域块拆分成比特块,每个比特块等长,在每个字符实例中嵌入比特块,在每B个区域块后写入锚点,将B个区域块和一个锚点构成的结构作为一个周期结构;
水印提取阶段:
针对经屏幕显示,相机拍摄传播或可能发生局部裁剪后的文本图像,定位存在字符实例的区域并按行组织与编号;
提取每个字符实例中的比特块,进而得到每行的比特序列,对比特序列中的每一位从零开始编号;引入同步器对候选左裁剪量crop_bits 进行枚举;
基于每个候选 crop_bits提取锚点,计算每个锚点的匹配代价;基于每个候选 crop_bits提取区域块,对区域块进行代价评估;
基于匹配代价和代价评估的结果选择每行最优的左裁剪量;
基于最优的左裁剪量提取水印信息;
采用喷泉码方式对源块进行无序冗余编码,为每一行文本设定独立的确定性种子seed,具体为:seed = row × 100000 + t_local;
其中,row为行号,t_local为行内区域块编号;基于确定性种子确定构成数据块的源块的索引和度数;
对于每行内存在的周期从零开始依次编号,基于每个候选 crop_bits提取锚点,具体为:针对任意一个候选crop_bits,根据周期结构在行比特序列中提取第i个锚点bits_i时,该锚点应满足如下条件:
0 ≤obs_a_i 且 obs_a_i + anchor_len≤L;
其中,obs_a_i为第i个锚点的起点,anchor_len为锚点的长度,L为一行比特序列的长度;
bits_i = row_bits[obs_a_i : obs_a_i + anchor_len];
其中,row_bits为提取比特流函数,obs_a_i的表达式如下所示:obs_a_i= orig_a_i ‑ crop_bits;
其中,orig_a_i为理想无裁剪情况下第i个锚点的起点,orig_a_i的表达式如下所示:orig_a_i= cycle_idx × cycle_len + B×block_len;
其中,cycle_idx为第i个锚点对应的周期编号,cycle_len为周期的长度,block_len为区域块长度。
2.根据权利要求1所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,该方法还包括在水印嵌入阶段引入行尾冗余写入策略:针对任意一行文本,在不写入新的锚点的前提下,使用真实区域块覆盖行尾剩余空间。
3.根据权利要求1所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,将区域块拆分成1比特。
4.根据权利要求1所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,对候选左裁剪量crop_bits 进行枚举具体为:候选crop_bits 从0依次取值到max_crop_bits;当crop_bits=0时,表示理想无裁剪情况;crop_bits=1时,表示左裁剪量为1比特位,max_crop_bits表示预设的最大左裁剪量,max_crop_bits<L,L为一行比特序列的长度。
5.根据权利要求1所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,计算锚点的匹配代价具体为:对任意候选crop_bits下的第i个锚点进行软解码,确定第i个锚点中不同位之间的汉明距离;并根据如下三种情况确定候选crop_bits下的第i个锚点的匹配代价:情况一:若能够确定唯一且最小汉明距离dist,同时dist小于等于预设的阈值,则锚点计数加1,并按照如下公式计算第i个锚点的匹配代价:cost = anchor_cost_for_dist(dist);
其中,anchor_cost_for_dist为汉明距离代价函数,用于基于dist的数值,预设不同的汉明距离代价值,dist越大汉明距离代价值越大;
情况二:若dist小于等于预设的阈值,但存在多个并列的最小汉明距离dist,则锚点计数加1,并按照如下公式计算第i个锚点的匹配代价:cost = anchor_cost_for_dist(dist)+ cost_anchor_ambiguous;
其中,cost_anchor_ambiguous为预设的歧义惩罚值;
情况三:若dist大于预设的阈值,则按照如下公式计算第i个锚点的匹配代价:cost = cost_anchor_miss;
其中,cost_anchor_miss为预设的未命中惩罚值,且cost_anchor_miss>cost_anchor_ambiguous;
将某个候选crop_bits下所有锚点的匹配代价相加,作为该候选crop_bits的锚点匹配代价。
6.根据权利要求5所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,基于每个候选 crop_bits提取区域块,具体为:同步器提取周期编号为cycle_jdx中的第bi个区域块时,该第bi个区域块应满足如下条件:obs_start_bi ≥ 0 且obs_start_bi + block_len ≤L;
其中,obs_start_bi为第bi个区域块的起点;
bitsblock = row_bits[obs_start_bi : obs_start_bi + block_len];
其中,bitsblock为提取的区域块,bi=0,1,…,B‑1;obs_start_bi的表达式为:obs_start_bi= orig_start_ bi ‑ crop_bits;
其中,orig_start_ bi为理想无裁剪情况下第bi个区域块的起点:orig_start_ bi = cycle_jdx * cycle_len + bi * block_len;
对区域块进行代价评估,具体为:
对第bi个区域块进行块内纠错:
情况一:若无需纠正直接通过,则区域块个数加1,并根据如下公式计算第bi个区域块的代价值cost_block:cost_block=reward_block_clean;
其中,reward_block_clean为预设的情况一对应的奖励值;
情况二:若需要纠正,且纠正后通过,则区域块个数加1,并根据如下公式计算第bi个区域块的代价值cost_block:cost_block = cost_block_corrected;
其中,cost_block_corrected为预设的情况二对应的奖励值;
情况三:若不可纠正,则根据如下公式计算第bi个区域块的代价值cost_block:cost_block = cost_block_uncorrectable;
其中,cost_block_uncorrectable为预设的情况三对应的惩罚值;
将任一个候选crop_bits中所有的区域块的代价值累加作为该候选crop_bits的区域块代价值。
7.根据权利要求6所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,选择每行最优的左裁剪量,具体为:将候选crop_bits的锚点匹配代价和区域块代价值相加;
若存在唯一的最小相加值,选择最小相加值对应的候选crop_bits作为最优左裁剪量;
若最小相加值不唯一,则在最小相加值中选择锚点块数量最多的候选crop_bits作为最优左裁剪量;
若最小相加值中最多锚点块数量不唯一,则先筛选出相加值最小且锚点块数量最多的候选crop_bits,在筛选出的候选crop_bits中选择区域块数量最多的候选crop_bits作为最优左裁剪量;
若最小相加值中最多锚点块和最多数据块数量均不唯一,则先筛选出相加值最小,锚点块数量最多且数据块数量最多的候选crop_bits,在筛选出的候选crop_bits中选择数值最小的候选crop_bits作为最优左裁剪量。
8.根据权利要求1所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法,其特征在于,根据最优左裁剪量提取水印具体为:确定每行比特序列最优左裁剪量后,得到每行的区域块,构成区域块集合,对区域块进行块内纠错,对于不可纠正的区域块直接丢弃,对于需要纠正,且纠正后通过的区域块输出其对应的数据块,将这些数据块的集合记作corrected,对于无需纠正的区域块,输出其对应的数据块,将这些数据块的集合记作clean;
先采用clean集合中的数据块恢复相应的源块,将源块进行拼接得到载荷全局序列,对载荷全局序列进行全局校验,若校验通过则输出水印,否则,将corrected集合中的数据块加入到clean集合中,再次恢复源块,将源块进行拼接得到载荷全局序列,对载荷全局序列进行全局校验,若校验通过则输出水印,否则输出提取失败。
9.一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述的面向屏摄场景的锚点同步喷泉码抗裁剪文本水印方法的步骤。