发明名称 一种加密域SURF图像特征提取方法
摘要 本发明涉及一种加密域的SURF特征提取方法,包括:构建Paillier加密系统和DGK加密系统,生成相应的公匙与私匙;用户端利用Paillier加密系统,以生成的公匙对图像进行加密,然后将加密后的图像发送给服务器端;服务器端对加密后的图像提取SURF特征点;服务器端对提取的SURF特征点进行校正;服务器端提取SURF特征描述子。本发明利用Pallier同态加密方法的同态特性,提出一种加密域的SURF特征提取方法。该方法无需解密即可对加密后的图像直接提取SURF特征,避免了图像信息的泄漏;而且取出的SURF特征点数和位置与明文域算法完全一致,描述子与明文域的误差也仅为0.0002932%。
申请公布号 CN103812638A 申请公布日期 2014.05.21
申请号 CN201410031154.7 申请日期 2014.01.22
申请人 北京工业大学 发明人 卓力;白宇;彭远帆;张燕;张菁;李晓光
分类号 H04L9/00(2006.01)I 主分类号 H04L9/00(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 张慧
主权项 1.一种加密域的SURF特征提取方法,其特征在于,无需解密即可针对加密后的图像直接提取图像的SURF特征,所述方法包括以下步骤:步骤1:构建Paillier加密系统和DGK加密系统,生成相应的公匙与私匙,用于图像的加密和解密;步骤2:用户端利用Paillier加密系统,以步骤1生成的公匙对图像进行加密,然后将加密后的图像发送给服务器端;步骤3:服务器端对加密后的图像提取SURF特征点;步骤3.1:计算图像每个点的海森矩阵;步骤3.2:计算每个海森矩阵对应的行列式值;(1)将图像的像素值放大到100倍;(2)计算每个海森矩阵对应的行列式值;利用方格滤波器与图像的卷积来代替高斯二阶导数与图像的卷积近似计算海森矩阵对应的行列式值;假设x、y和xy方向的滤波器与图像的卷积结果分别为D<sub>xx</sub>、D<sub>yy</sub>和D<sub>xy</sub>,海森矩阵H<sub>approx</sub>的行列式值的计算公式为:det[H<sub>approx</sub>]=D<sub>xx</sub>D<sub>yy</sub>-(0.9D<sub>xy</sub>)<sup>2</sup>    (1)步骤3.3:在所有行列式值中寻找局部极值,该局部极值对应的点即为特征点;步骤4:服务器端对提取的SURF特征点进行校正,即曲线拟合;设特征点坐标为X=(σ,y,x)<sup>T</sup>,校正后特征点的坐标X′=(σ′,y′,x′)<sup>T</sup>,则:<maths num="0001"><![CDATA[<math><mrow><msup><mi>&sigma;</mi><mo>&prime;</mo></msup><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>A</mi><mn>1</mn></msub><mo>|</mo></mrow><mrow><mo>|</mo><mi>A</mi><mo>|</mo></mrow></mfrac><mo>,</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>A</mi><mn>2</mn></msub><mo>|</mo></mrow><mrow><mo>|</mo><mi>A</mi><mo>|</mo></mrow></mfrac><mo>,</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>A</mi><mn>3</mn></msub><mo>|</mo></mrow><mrow><mo>|</mo><mi>A</mi><mo>|</mo></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,<maths num="0002"><![CDATA[<math><mrow><msub><mi>A</mi><mn>1</mn></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>x</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>A</mi><mn>2</mn></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mtext></mtext><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mi>&sigma;</mi><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>x</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>A</mi><mn>3</mn></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>y</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>x</mi></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>,</mo><mi>A</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;y</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>&sigma;x</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><mi>yx</mi></mrow></mfrac><mfrac><mrow><msup><mo>&PartialD;</mo><mn>2</mn></msup><mi>F</mi></mrow><mrow><mo>&PartialD;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow></mfrac></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>式中,σ为该点所在的尺度,y为该点的纵坐标,x为该点的横坐标,F表示该点对应的海森矩阵的行列式值;步骤5:服务器端提取SURF特征描述子;步骤5.1:以特征点为圆心,计算半径为6σ圆内x和y方向上的Haar小波响应系数HaarX和HaarY,公式如下:HaarX=(E(x+σ,y+σ)+E(x,y-σ)-E(x,y+σ)-E(x+σ,y-σ))-                           (3)(E(x,y+σ)+E(x-σ,y-σ)-E(x-σ,y+σ)-E(x,y-σ))HaarY=(E(x-σ,y)+E(x+σ,y+σ)-E(x+σ,y)-E(x-σ,y+σ))-                         (4)(E(x+σ,y)+E(x-σ,y-σ)-E(x-σ,y)-E(x+σ,y-σ))式中,E(x,y)为积分图像中点(x,y)处的加密值;步骤5.2:根据Haar小波响应系数计算主方向;(1)旋转顶点在圆心、夹角为60°的扇形区域,旋转扇形区域的步长为0.15弧度,将整个区域分成42个部分;(2)判断点(HaarX,HaarY)所属的扇形区域;假设点(HaarX,HaarY)与原点的连线和横轴的夹角为β,某个扇形区域的两条边与横轴的夹角分别为α,α+60°;如果α<β<α+60°,则点(HaarX,HaarY)属于该扇形区域;否则,继续判断该点与该扇形区域相邻的扇形区域的关系,直到找出该点所属的扇形区域;在加密域比较角度β与α大小的方法如下:当<img file="FDA0000460415350000021.GIF" wi="210" he="85" />与X_α异号时,如果<img file="FDA0000460415350000022.GIF" wi="288" he="80" />则β>α,反之亦然;当<img file="FDA0000460415350000023.GIF" wi="216" he="89" />与X_α同号时,如果<maths num="0003"><![CDATA[<math><mrow><mfrac><mi>&Sigma;HaarY</mi><mi>&Sigma;HaarX</mi></mfrac><mo>></mo><mfrac><mrow><mi>Y</mi><mo>_</mo><mi>&alpha;</mi></mrow><mrow><mi>X</mi><mo>_</mo><mi>&alpha;</mi></mrow></mfrac><mo>,</mo></mrow></math>]]></maths>则β>α,如果<maths num="0004"><![CDATA[<math><mrow><mfrac><mi>&Sigma;HaarY</mi><mi>&Sigma;HaarX</mi></mfrac><mo>&lt;</mo><mfrac><mrow><mi>Y</mi><mo>_</mo><mi>&alpha;</mi></mrow><mrow><mi>X</mi><mo>_</mo><mi>&alpha;</mi></mrow></mfrac><mo>,</mo></mrow></math>]]></maths>则β<α;(3)求扇形区域内<img file="FDA0000460415350000026.GIF" wi="584" he="106" />的最大值,最大值对应的方向即为特征点的主方向;步骤5.3:将Haar响应旋转到主方向,即计算Haar响应值在主方向上的投影;(1)计算E(sinθ)与E(cosθ),θ为主方向的角度;以<img file="FDA0000460415350000027.GIF" wi="272" he="94" />代替sinθ值;若主方向为<maths num="0005"><![CDATA[<math><mrow><mrow><mo>(</mo><mi>E</mi><mrow><mo>(</mo><mi>&Sigma;HaarX</mi><mo>)</mo></mrow><mo>,</mo><mi>E</mi><mrow><mo>(</mo><mi>&Sigma;HaarY</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>则:<img file="FDA0000460415350000029.GIF" wi="1469" he="204" />(2)计算d<sub>x</sub>和d<sub>y</sub>在主方向上的投影d′<sub>x</sub>和d′<sub>y</sub>,具体公式如下:<maths num="0006"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>d</mi><mi>x</mi><mo>&prime;</mo></msubsup><mo>=</mo><mo>-</mo><msub><mi>d</mi><mi>x</mi></msub><mo>&times;</mo><mi>sin</mi><mi>&theta;</mi><mo>+</mo><msub><mi>d</mi><mi>y</mi></msub><mo>&times;</mo><mi>cos</mi><mi>&theta;</mi></mtd></mtr><mtr><mtd><msubsup><mi>d</mi><mi>y</mi><mo>&prime;</mo></msubsup><mo>=</mo><msub><mi>d</mi><mi>x</mi></msub><mo>&times;</mo><mi>cos</mi><mi>&theta;</mi><mo>+</mo><msub><mi>d</mi><mi>y</mi></msub><mo>&times;</mo><mi>sin</mi><mi>&theta;</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>式中,θ为主方向的角度;步骤5.4:计算每个子窗口<img file="FDA0000460415350000031.GIF" wi="486" he="86" />与<img file="FDA0000460415350000032.GIF" wi="140" he="88" />的值,并生成描述子。
地址 100124 北京市朝阳区平乐园100号