CN112509070B - 一种隐私保护Canny边缘检测方法 - Google Patents
一种隐私保护Canny边缘检测方法 Download PDFInfo
- Publication number
- CN112509070B CN112509070B CN202011408336.3A CN202011408336A CN112509070B CN 112509070 B CN112509070 B CN 112509070B CN 202011408336 A CN202011408336 A CN 202011408336A CN 112509070 B CN112509070 B CN 112509070B
- Authority
- CN
- China
- Prior art keywords
- cloud server
- image
- column
- row
- pixel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003708 edge detection Methods 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims abstract description 49
- 230000001629 suppression Effects 0.000 claims abstract description 39
- 238000006243 chemical reaction Methods 0.000 claims abstract description 11
- 238000001914 filtration Methods 0.000 claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims description 366
- 101100422770 Caenorhabditis elegans sup-1 gene Proteins 0.000 claims description 29
- 238000012360 testing method Methods 0.000 claims description 21
- 238000007689 inspection Methods 0.000 claims description 11
- 230000005764 inhibitory process Effects 0.000 claims description 8
- 238000012804 iterative process Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 101150090432 sip1 gene Proteins 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/136—Segmentation; Edge detection involving thresholding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
Abstract
本发明提出了一种隐私保护Canny边缘检测方法。本发明包括:客户端、第一云服务器、第二云服务器、第三云服务器。客户端加密源图像,得到一个加密图像和一个偏移图像,分别发送给第一云服务器和第二云服务器;第一云服务器和第二云服务器分别对各自接收到的图像进行颜色空间转换、高斯滤波、梯度计算,并在第三云服务器的帮助下完成低阈值检验、非极大值抑制、高阈值检验、边缘连接、孤立点抑制,之后将两个加密结果图像返回给客户端;客户端解密得到Canny边缘检测的结果。本发明优点在于,在不泄露源图像的隐私信息给云服务器的条件下,实现对源图像的Canny边缘检测,且达到与OpenCV标准Canny边缘检测几乎完全一样的结果。
Description
技术领域
本申请属于计算机图像处理、隐私保护计算领域,涉及一种隐私保护Canny边缘检测方法。
背景技术
在云计算时代,使用云服务器处理海量数据变得越来越普遍,但是云服务器上的数据可能包含用户的隐私信息。隐私保护计算可以对加密的数据进行计算,并获得与数据未加密时一样的结果,从而可以有效保护用户隐私。边缘检测在图像处理和计算机视觉中起着至关重要的作用:一方面,它能分离图像中的对象与背景,从而保留重要的结构属性并减少冗余信息;另一方面,它是许多其他图像操作的预处理。在边缘检测中,Canny算子可以精确地定位边缘,并且不易受噪声影响,因此使用非常广泛。未来随着云计算技术发展,越来越多的计算任务将在云端进行。所以,设计针对Canny边缘检测的隐私保护计算方案非常重要。
目前的隐私保护图像处理方案主要针对SIFT、SURF、HOG等数字特征。边缘是一种几何特征,与数字特征有很大不同:首先,边缘是用像素表示的,而数字特征是用数值表示的。在隐私保护计算中,数字特征只需要对数值进行加密,而边缘需要对每个像素的像素值和位置进行加密。目前针对数字特征的隐私保护计算方案使用数学加密算法或安全多方计算协议加密数字特征,但这些方法无法保证边缘的安全性。其次,边缘主要通过比较大小来检测,而数字特征主要通过计算得到。在操作数加密的情况下,计算的结果也是加密的,但比较大小的结果是非加密的。目前针对数字特征的隐私保护计算方案使用乱码电路、安全比较协议等对云服务器中的加密数据进行比较大小,比较之后会将结果直接泄露给云服务器,这对数字特征只会泄露关键点位置、梯度方向范围等信息,但是对于边缘则能让云服务器直接得到边缘检测的结果,这与隐私保护计算的目标不符。
基于以上问题,本发明提出了一种隐私保护Canny边缘检测方法来解决在云服务器上进行Canny边缘检测过程中的隐私保护问题,主要包括边缘加密和比较结果加密的问题。
发明内容:
本发明目的是在云服务器对源图像进行Canny边缘检测的过程中保护图像的隐私信息不泄露,同时得到与没有隐私保护几乎完全一样的边缘检测结果。隐私信息包括源图像和检测到的边缘中的像素值和位置。
本发明系统的技术方案为一种隐私保护Canny边缘检测系统,包括:客户端、第一云服务器、第二云服务器、第三云服务器;
所述客户端分别与所述的第一云服务器、第二云服务器通过无线方式连接;
所述第三云服务器分别与所述的第一云服务器、第二云服务器通过无线方式连接;
假设源图像用S表示,高、低阈值分别用Ht和Lt表示。
本发明的方法技术方案为一种隐私保护Canny边缘检测方法,包括以下步骤:
步骤1:客户端生成一个与源图像行、列、通道数均相同的偏移图像,偏移图像中每个通道的像素值在一定范围内随机选择,利用源图像以及偏移图像生成加密图像;
步骤2:第一云服务器和第二云服务器分别对各自接收到的图像进行颜色空间转换、高斯滤波、梯度计算;
步骤3:第一云服务器、第二云服务器结合第三云服务器计算辅助矩阵和辅助参数;
步骤4:第一云服务器和第二云服务器在第三云服务器的帮助下完成低阈值检验、非极大值抑制、高阈值检验;
步骤5:第一云服务器和第二云服务器在第三云服务器的帮助下完成边缘连接和孤立点抑制;
步骤6:第一云服务器和第二云服务器将加密的结果图像返回给客户端,客户端解密得到Canny边缘检测的结果;
作为优选,步骤1所述源图像为S,其每一个像素值为:
S(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,S(x,y,t)表示源图像第x行第y列第t通道的像素值,M为源图像的行数,N为源图像的列数,P为源图像的通道数,对于RGB图像,P=3,对于灰度图像,P=1;
步骤1所述偏移图像为B,其每一个像素值为:
B(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为偏移图像的行数,N为偏移图像的列数,P为偏移图像的通道数,B(x,y,t)表示偏移图像第x行第y列第t通道的像素值,即步骤1中所述偏移图像中每个通道的像素值,具体计算方法为步骤1中所述在一定范围内随机选择,选择在[0,213-1]范围内的随机整数作为每个通道的像素值;
步骤1所述利用源图像以及偏移图像生成加密图像为:
C=S+B
其中,C为加密图像,其每一个像素值为:
C(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为加密图像的行数,N为加密图像的列数,P为加密图像的通道数,C(x,y,t)表示加密图像第x行第y列第t通道的像素值;
客户端为高阈值Ht生成高阈值偏移量Hb,为低阈值Lt生成低阈值偏移量Lb,具体生成方法为选择在[0,215-1]范围内的随机整数作为Hb和Lb的值;
客户端利用高阈值、低阈值、高阈值偏移量、低阈值偏移量分别计算加密高阈值、加密低阈值为:
Hc=Ht+Hb
Lc=Lt+Lb
其中,Hc为加密高阈值,Lc为加密低阈值。
客户端为云服务器生成一个梯度标志flag,标记每个像素的梯度如何计算;
当flag为假时,梯度的计算方式为:
G(x,y)=|Gx(x,y)|+|Gy(x,y)|
其中,G为梯度图像,G(x,y)表示梯度图像第x行第y列的像素值,Gx为x方向梯度分量图像,Gx(x,y)表示x方向梯度分量图像第x行第y列的像素值,Gy为y方向梯度分量图像,Gy(x,y)表示y方向梯度分量图像第x行第y列的像素值,每个像素(x,y)的梯度G(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的绝对值计算得到;
当flag为真时,梯度的计算方式为:
每个像素(x,y)的梯度G(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的平方计算得到;
客户端将加密图像C、加密高阈值Hc、加密低阈值Lc、梯度标志flag传输至第一云服务器;
客户端将偏移图像B、高阈值偏移量Hb、低阈值偏移量Lb、梯度标志flag传输至第二云服务器。
作为优选,若加密图像C和偏移图像B为RGB颜色空间的图像,第一云服务器和第二云服务器首先使用相同的转换公式将加密图像C和偏移图像B由RGB颜色空间转换到灰度空间,生成灰度加密图像Cgray和灰度偏移图像Bgray:
Cgray=0.299·Cr+0.587·Cg+0.114·Cb
Bgray=0.299·Br+0.587·Bg+0.114·Bb
其中,为Cr、Cg、Cb分别为加密图像C中红、绿、蓝三种通道中的像素值组成的图像,Br、Bg、Bb分别为偏移图像B中红、绿、蓝三种通道中的像素值组成的图像;
第一云服务器、第二云服务器使用相同的高斯卷积核分别对灰度加密图像Cgray和灰度偏移图像Bgray进行卷积,得到高斯加密图像CG和高斯偏移图像BG;
第一云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯加密图像CG进行卷积,分别得到x方向加密梯度图像Cx和y方向加密梯度图像Cy;
第二云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯偏移图像BG进行卷积,分别得到x方向梯度偏移图像Bx和y方向梯度偏移图像By;
作为优选,步骤3所述辅助矩阵包括:第一组辅助矩阵以及第二组辅助矩阵;
第一组辅助矩阵是源图像S经过颜色空间转换、高斯滤波、梯度计算后的梯度图像Gx和
Gy的符号矩阵,包括第一符号矩阵α和第二符号矩阵β,其每一个元素(x,y)满足如下关系:
其中,α(x,y)为第一符号矩阵第x行第y列的元素值,β(x,y)为第二符号矩阵第x行第y列的元素值,Gx(x,y)为x方向梯度分量图像第x行第y列的像素值,Gy(x,y)为y方向梯度分量图像第x行第y列的像素值;
计算第一符号矩阵α的步骤如下:
步骤3.1:第一云服务器和第二云服务器首先进行像素重排序,两台云服务器生成相同的初始行号矩阵Rowsinitial和初始列号矩阵Colsinitial,其每一个元素(x,y)满足如下关系:
Rowsinitial(x,y)=x
Colsinitial(x,y)=y
x∈[0,M-1],y∈[0,M-1],
其中,Rowsinitial(x,y)表示初始行号矩阵第x行第y列的元素值,Colsinitial(x,y)表示初始列号矩阵第x行第y列的元素值,M为行号矩阵和列号矩阵的行数,N为行号矩阵和列号矩阵的列数;
两台云服务器使用相同的随机数种子迭代生成相同的随机整数,在每一轮迭代中,生成的随机数rand的范围为[0,Max],其中Max的初始值为M×N-1,两台云服务器利用随机数rand计算像素重排序后的行号row和列号col:
row=rand/N
col=rand%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序后的行号row为随机数rand除以N的商,像素重排序后的列号col为随机数rand除以N的余数;
同时,两台云服务器利用Max计算像素重排序前的行号row_max和列号col_max:
row_max=Max/N
colmax=Max%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序前的行号row_max为Max除以N的商,像素重排序前的列号col_max为Max除以N的余数;
两台云服务器将初始行号矩阵Rowsinitial和初始列号矩阵Colsinitil中的元素(row_max,col_max)和(row,col)进行替换;
每经过一轮迭代Max减少1,直到Max减小到1迭代结束,迭代结束后两台云服务器得到相同的行号矩阵Rows和列号矩阵Cols,其每一个元素(x,y)满足如下关系:
Rows(x,y)=x′
Cols(x,y)=y′
其中,Rows(x,y)表示行号矩阵第x行第y列的元素值,Cols(x,y)表示列号矩阵第x行第y列的元素值,x′为像素重排序后元素(x,y)的行号,y′为像素重排序后元素(x,y)的列号,利用行号矩阵Rows和列号矩阵Cols可以实现元素(x,y)和元素(x′,y′)之间的对应;
第一云服务器和第二云服务器利用行号矩阵Rows和列号矩阵Cols分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.2:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Cx(x′,y′)+r2
I2=r1·Bx(x′,y′)+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的像素(x′,y′),r1和r2的取值也不同;
第一云服务器将I1和发送给第三云服务器,第二云服务器将I2发送给第三云服务器;
步骤3.3:第三云服务器比较I1和I2,并按如下方式生成比较结果:
第三云服务器将O1发送给第一云服务器,将O2发送给第二云服务器;
步骤3.4:第一云服务器和第二云服务器分别按如下方式得到结果:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值;
步骤3.5:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复第一符号矩阵α中元素的顺序,即α中第x′行第y′列的元素值α(x′,y′)被置换为第x行第y列的元素值α(x,y),于是第一符号矩阵α在第一云服务器和第二云服务器上生成;
以上步骤组成了第一符号矩阵α的安全计算协议,其中步骤3.1、步骤3.5为像素重排序的步骤,步骤3.2至步骤3.4为安全比较协议的步骤,且安全比较协议只针对单个元素,第一符号矩阵α中的所有元素使用SIMD并行执行安全比较协议;
第二符号矩阵β的安全计算协议与第一符号矩阵α的安全计算协议相同,也要用到像素重排序和安全比较协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
第二组辅助矩阵包括x方向乘积矩阵xMul1和xMul2,以及y方向乘积矩阵yMul1和yMul2,这些矩阵只在flag为真时计算;
对于每一个元素(x,y),这些乘积矩阵分别满足如下关系:
xMul1(x,y)+xMul2(x,y)=Cx(x,y)·Bx(x,y)
yMul1(x,y)+yMul2(x,y)=Cy(x,y)·By(x,y)
其中,xMul1(x,y)表示x方向第一乘积矩阵第x行第y列的元素值,xMul2(x,y)表示x方向第二乘积矩阵第x行第y列的元素值,Cx(x,y)表示x方向加密梯度图像第x行第y列的像素值,Bx(x,y)表示x方向梯度偏移图像第x行第y列的像素值,yMul1(x,y)表示y方向第一乘积矩阵第x行第y列的元素值,yMul2(x,y)表示y方向第二乘积矩阵第x行第y列的元素值,Cy(x,y)表示y方向加密梯度图像第x行第y列的像素值,By(x,y)表示y方向梯度偏移图像第x行第y列的像素值;
计算x方向乘积矩阵xMul1和xMul2的步骤如下:
步骤3.6:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.7:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Cx(x′,y′)
I2=r2·Bx(x′,y′)
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],且对于不同的像素(x′,y′),r1和r2的取值不同;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤3.8:第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其绝对值的范围是(0,229-1],其符号与I1·I相同;
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
步骤3.9:第一云服务器和第二云服务器分别按如下方式得到结果:
xMul1(x′,y′)=O1/(r1·r2)
xMul2(x′,y′)=O2/(r1·r2)
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值;
步骤3.10:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复x方向第一乘积矩阵xMul1和x方向第二乘积矩阵xMul2中元素的顺序,即xMul1和xMul2中第x′行第y′列的元素值xMul1(x′,y′)和xMul2(x′,y′)分别被置换为第x行第y列的元素值xMul1(x,y)和xMul2(x,y),于是x方向第一乘积矩阵xMul1在第一云服务器上生成,x方向第二乘积矩阵xMul2在第二云服务器上生成;
以上步骤组成了x方向乘积矩阵xMul1和xMul2的安全计算协议,其中步骤3.6、步骤3.10为像素重排序的步骤,步骤3.7至步骤3.9为安全乘法协议的步骤,且安全乘法协议只针对单个元素,x方向乘积矩阵xMul1和xMul2中的所有元素使用SIMD并行执行安全乘法协议;
y方向乘积矩阵yMul1和yMul2的安全计算协议与x方向乘积矩阵xMul1和xMul2的安全计算协议相同,也要用到像素重排序和安全乘法协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
步骤3所述辅助参数包括低阈值乘积lMul1和lMul2,以及高阈值乘积hMul1和hMul2,这些参数同样只在flag为真时计算,满足如下关系:
lMul1+lMul2=Lc·Lb
hMul1+hMul2=Hc·Hb
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积,Lc为加密低阈值,Lb为低阈值偏移量,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积,Hc为加密高阈值,Hb为高阈值偏移量;
低阈值乘积lMul1和lMul2的计算过程如下:
第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Lc
I2=r2·Lb
其中,Lc为加密低阈值,Lb为低阈值偏移量,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是(0,215-1];
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其范围是(0,231-1];
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
第一云服务器和第二云服务器分别按如下方式得到结果:
lMul1=O1/(r1·r2)
lMul2=O2/(r1·r2)
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
以上步骤组成了低阈值乘积lMul1和lMul2的安全计算协议,采用了安全乘法协议,但是没有采用像素重排序和SIMD;
高阈值乘积hMul1和hMul2的安全计算协议与低阈值乘积lMul1和lMul2的安全计算协议相同,也要用到安全乘法协议,只是加密高阈值Hc和高阈值偏移量Hb分别替换上述步骤中的加密低阈值Lc和低阈值偏移量Lb;
作为优选,步骤4所述低阈值检验、非极大值抑制、高阈值检验三个操作连续执行,具体步骤如下:
步骤4.1:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,第一云服务器对x方向加密梯度图像Cx、y方向加密梯度图像Cy、第一符号矩阵α、第二符号矩阵β、x方向第一乘积矩阵xMul1、y方向第一乘积矩阵yMul1进行像素重排序,第二云服务器对x方向梯度偏移图像Bx、y方向梯度偏移图像By、第一符号矩阵α、第二符号矩阵β、x方向第二乘积矩阵xMul2、y方向第二乘积矩阵yMul2进行像素重排序,假设经过像素重排序后,Cx、Cy、Bx、By、α、β、xMul1、yMul1、xMul2、yMul2中第x行第y列的像素值Cx(x,y)、Cy(x,y)、Bx(x,y)、By(x,y)、α(x,y)、β(x,y)、xMul1(x,y)、yMul1(x,y)、xMul2(x,y)、yMul2(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)、Cy(x′,y′)、Bx(x′,y′)、By(x′,y′)、α(x′,y′)、β(x′,y′)、xMul1(x′,y′)、yMul1(x′,y′)、xMul2(x′,y′)、yMul2(x′,y′);
步骤4.2:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Lc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Lb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Lc是加密低阈值,Lb是低阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.3:当flag为假时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
其中,Rlow1(x′,y′)为低阈值检验第一加密结果图像第x′行第y′列的像素值,Rlow2(x′,y′)为低阈值检验第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.4:对于每一个像素(x′,y′),第一云服务器按如下方式生成确定梯度方向的输入:
I1=β(x′,y′)·Cy(x′,y′)-α(x′,y′)·Cx(x′,y′)·tan 22.5°+r1
I3=β(x′,y′)·Cy(x′,y′)-α(x′,y′)·Cx(x′,y′)·tan 67.5°+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的像素(x′,y′),r1和r2的取值也不同;
第二云服务器按如下方式生成确定梯度方向的输入:
I2=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 22.5°+r1
I4=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 67.5°+r2
其中,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.5:第三云服务器将I1与I2进行比较,将I3与I4进行比较,并按如下方式生成比较结果:
第三云服务器将o1和O3发送给第一云服务器,将O2和O4发送给第二云服务器;
步骤4.6:假设梯度方向θ的最大范围是(-180°,180°],第一云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值,β(x′,y′)为第二符号矩阵第x′行第y′列的元素值;
第二云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
步骤4.7:根据每一个像素(x′0,y′0)的梯度方向θ的范围,第一云服务器和第二云服务器确定每一个像素(x′0,y′0)在梯度方向和梯度方向的反方向上与之相邻的像素(x1,y1)和(x2,y2):
当θ∈(-180°,-157.5°]∪[-22.5°,22.5°]∪[157.5°,180°]时,(x1,y1)和(x2,y2)分别为(x′0,y′0-1)和(x′0,y′0+1);
当θ∈(-157.5°,-112.5°]∪(22.5°,67.5°]时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0-1)和(x′0+1,y′0+1);
当θ∈(-112.5°,-67.5°)∪(67.5°,112.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0)和(x′0+1,y′0);
当θ∈[-67.5°,-22.5°)∪[112.5°,157.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0+1)和(x′0+1,y′0-1);
确定像素(x′0,y′0)的相邻像素(x1,y1)和(x2,y2)后,两台云服务器检索行号矩阵Rows和列号矩阵Cols,得到像素(x1,y1)和(x2,y2)经过像素重排序后的像素(x′1,y′1)和(x′2,y′2);
步骤4.8:对于每一个像素(x′0,y′0),当flag为假时,第一云服务器按如下方式生成梯度比较的输入:
I1=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′1,y′1)·Cx(x′1,y′1)-β(x′1,y′1)
·Cy(x′1,y′1)+r1
I3=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′2,y′2)·Cx(x′2,y′2)-β(x′2,y′2)
·Cy(x′2,y′2)+r2
其中,Cx(x′0,y′0)是x方向加密梯度图像第x′0行第y′0列的像素值,Cy(x′0,y′0)是y方向加密梯度图像第x′0行第y′0列的像素值,Cx(x′1,y′1)是x方向加密梯度图像第x′1行第y′1列的像素值,Cy(x′1,y′1)是y方向加密梯度图像第x′1行第y′1列的像素值,Cx(x′2,y′2)是x方向加密梯度图像第x′2行第y′2列的像素值,Cy(x′2,y′2)是y方向加密梯度图像第x′2行第y′2列的像素值,α(x′0,y′0)是第一符号矩阵第x′0行第y′0列的元素值,α(x′1,y′1)是第一符号矩阵第x′1行第y′1列的元素值,α(x′2,y′2)是第一符号矩阵第x′2行第y′2列的元素值,β(x′0,y′0)是第二符号矩阵第x′0行第y′0列的元素值,β(x′1,y′1)是第二符号矩阵第x′1行第y′1列的元素值,β(x′2,y′2)是第二符号矩阵第x′2行第y′2列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的元素(x′0,y′0),r1和r2的取值也不同;
第二云服务器按如下方式生成梯度比较的输入:
I2=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′0)-α(x′1,y′1)·Bx(x′1,y′1)-β(x′1,y′1)
·By(x′1,y′1)+r1
I4=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′0)-α(x′2,y′2)·Bx(x′2,y′2)-β(x′2,y′2)
·By(x′2,y′2)+r2
其中,Bx(x′0,y′0)是x方向梯度偏移图像第x′0行第y′0列的像素值,By(x′0,y′0)是y方向梯度偏移图像第x′0行第y′0列的像素值,Bx(x′1,y′1)是x方向梯度偏移图像第x′1行第y′1列的像素值,By(x′1,y′1)是y方向梯度偏移图像第x′1行第y′1列的像素值,Bx(x′2,y′2)是x方向梯度偏移图像第x′2行第y′2列的像素值,By(x′2,y′2)是y方向梯度偏移图像第x′2行第y′2列的像素值;
当flag为真时,第一云服务器按如下方式生成梯度比较的输入:
其中,xMul1(x′0,y′0)为x方向第一乘积矩阵第x′0行第y′0列的元素值,yMul1(x′0,y′0)为y方向第一乘积矩阵第x′0行第y′0列的元素值,xMul1(x′1,y′1)为x方向第一乘积矩阵第x′1行第y′1列的元素值,yMul1(x′1,y′1)为y方向第一乘积矩阵第x′1行第y′1列的元素值,xMul1(x′2,y′2)为x方向第一乘积矩阵第x′2行第y′2列的元素值,yMul1(x′2,y′2)为y方向第一乘积矩阵第x′2行第y′2列的元素值;
第二云服务器按如下方式生成梯度比较的输入:
/>
其中,xMul2(x′0,y′0)为x方向第二乘积矩阵第x′0行第y′0列的元素值,yMul2(x′0,y′0)为y方向第二乘积矩阵第x′0行第y′0列的元素值,xMul2(x′1,y′1)为x方向第二乘积矩阵第x′1行第y′1列的元素值,yMul2(x′1,y′1)为y方向第二乘积矩阵第x′1行第y′1列的元素值,xMul2(x′2,y′2)为x方向第二乘积矩阵第x′2行第y′2列的元素值,yMul2(x′2,y′2)为y方向第二乘积矩阵第x′2行第y′2列的元素值;
如果(x′1,y′1)或(x′2,y′2)不存在,则其在所有上述图像和矩阵中的值为0;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.9:当flag为假时,第三云服务器将I1与I2进行比较,将将I3与I4进行比较,并按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
当flag为真时,第三云服务器按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
其中,RNMS1(x′0,y′0)为非极大值抑制第一加密结果图像第x′0行第y′0列的像素值,RNMS2(x′0,y′0)为非极大值抑制第二加密结果图像第x′0行第y′0列的像素值,Rlow1(x′0,y′0)为低阈值检验第一加密结果图像第x′0行第y′0列的像素值,Rlow2(x′0,y′0)为低阈值检验第二加密结果图像第x′0行第y′0列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.10:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Hc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Hb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第u′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Hc是加密高阈值,Hb是高阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.11:当flag为假时,第三云服务器按如下方式生成高阈值检验结果:
RRhigh2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成高阈值检验结果:
Rhigh2(x′,y′)=r
其中,Rhihh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值,RNMS1(x′,y′)为非极大值抑制第一加密结果图像第x′行第y′列的像素值,RNMS2(x′,y′)为非极大值抑制第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
第三云服务器将Rhigh1发送给第一云服务器,将Rhigh2发送给第二云服务器;
步骤4.12:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,即Rhigh1和Rhigh2中第x′行第y′列的像素值Rhigh1(x′,y′)和Rhigh2(x′,y′)分别被置换为第x行第y列的像素值Rhigh1(x,y)和Rhigh2(x,y),于是高阈值检验第一加密结果图像Rhigh1在第一云服务器上生成,高阈值检验第二加密结果图像Rhigh2在第二云服务器上生成;
以上步骤中,步骤4.1、步骤4.12组成了像素重排序的步骤;
步骤4.2、步骤4.3组成了低阈值检验的计算协议,低阈值检验加密结果图像Rlow1和Rlow2中的所有像素使用SIMD并行执行该计算协议;
步骤4.4至步骤4.6组成了确定梯度方向的计算协议,所有像素使用SIMD并行执行该计算协议;
步骤4.8、步骤4.9组成了梯度比较的计算协议,非极大值抑制加密结果图像RNMS1和RNMS2中的所有像素使用SIMD并行执行该计算协议;
确定梯度方向的计算协议和梯度比较的计算协议组成了非极大值抑制的计算协议;
步骤4.10、步骤4.11组成了高阈值检验的计算协议,高阈值检验加密结果图像Rhigh1和Rhigh2中的所有像素使用SIMD并行执行该计算协议;
步骤4.3采用了安全边缘表示对低阈值检验的结果进行加密;
步骤4.9采用了安全边缘表示对非极大值抑制的结果进行加密;
步骤4.11采用了安全边缘表示对高阈值检验的结果进行加密;
步骤5:第一云服务器和第二云服务器在第三云服务器的帮助下完成边缘连接和孤立点抑制;
作为优选,步骤5所述边缘连接以迭代的方式进行,每一轮迭代的步骤如下:
步骤5.1:第一云服务器为高阈值检验第一加密结果图像Rhigh1生成八个相邻图像,每个相邻图像的像素分别是Rhigh1中对应像素的一个相邻像素:
Ruppe Left1(x,y)=Rhigh1(x-1,y-1)
Rupper1(x,y)=Rhigh1(x-1,y)
RupperRight1(x,y)=Rhigh1(x-1,y+1)
RLeft1(x,y)=Rhigh1(x,y-1)
RRight1(x,y)=Rhigh1(x,y+1)
RlowerLeft1(x,y)=Rhigh1(x+1,y-1)
Rlower1(x,y)=Rhigh1(x+1,y)
RlowerRight1(x,y)=Rhigh1(x+1,y+1)
其中,RupperLeft1(x,y)为第一左上相邻图像第x行第y列的像素值,Rupper1(x,y)为第一上相邻图像第x行第y列的像素值,RupperRight1(x,y)为第一右上相邻图像第x行第y列的像素值,RLeft1(x,y)为第一左相邻图像第x行第y列的像素值,RRight1(x,y)为第一右相邻图像第x行第y列的像素值,RlowerLeft1(x,y)为第一左下相邻图像第x行第y列的像素值,Rlower1(x,y)为第一下相邻图像第x行第y列的像素值,RlowerRight1(x,y)为第一右下相邻图像第x行第y列的像素值;
如果相邻像素不存在,则用一个[0,255]范围内的随机整数作为其像素值;
第二云服务器也为高阈值检验第二加密结果图像Rhigh2生成八个相邻图像:
RupperLeft2(x,y)=Rhigh2(x-1,y-1)
Rupper2(x,y)=Rhigh2(x-1,y)
RupperRight2(x,y)=Rhigh2(x-1,y+1)
RLeft2(x,y)=Rhigh2(x,y-1)
RRight2(x,y)=Rhigh2(x,y+1)
RlowerLeft2(x,y)=Rhigh2(x+1,y-1)
Rlower2(x,y)=Rhigh2(x+1,y)
RlowerRight2(x,y)=Rhigh2(x+1,y+1)
其中,RupperLeft2(x,y)为第二左上相邻图像第x行第y列的像素值,Rupper2(x,y)为第二上相邻图像第x行第y列的像素值,RupperRight2(x,y)为第二右上相邻图像第x行第y列的像素值,RLeft2(x,y)为第二左相邻图像第x行第y列的像素值,RRight2(x,y)为第二右相邻图像第x行第y列的像素值,RlowerLeft2(x,y)为第二左下相邻图像第x行第y列的像素值,Rlower2(x,y)为第二下相邻图像第x行第y列的像素值,RlowerRight2(x,y)为第二右下相邻图像第x行第y列的像素值;
不存在的相邻像素要用与Rhigh1的相邻图像中相同的随机整数作为像素值;
步骤5.2:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵CoIs,第一云服务器对高阈值检验第一加密结果图像Rhigh1、第一左上相邻图像RipperLeft1、第一上相邻图像Rupper1、第一右上相邻图像RupperRight1、第一左相邻图像RLeft1、第一右相邻图像RRight1、第一左下相邻图像RlowerLeft1、第一下相邻图像Rlower1、第一右下相邻图像RlowerRight1进行像素重排序,第二云服务器对高阈值检验第二加密结果图像Rhigh2、第二左上相邻图像RupperLeft2、第二上相邻图像Rupper2、第二右上相邻图像RupperRight2、第二左相邻图像RLeft2、第二右相邻图像RRight2、第二左下相邻图像RlowerLeft2、第二下相邻图像Rlower2、第二右下相邻图像RlowerRight2进行像素重排序,假设经过像素重排序后,所有图像中第x行第y列的像素值(x,y)被置换为第x′行第y′列的像素值(x′,y′);
两台云服务器将所有图像的像素值加上一个相同的[0,255]范围内的随机整数后,将所有图像发送给第三云服务器。
步骤5.3:第三云服务器利用安全边缘表示的原理,根据高阈值检验加密结果图像Rhigh和Rhigh2中对应像素值的关系判断每一个像素(x′,y′)的类型,Rhigh1和Rhigh2中的像素满足如下三种关系:
Rhigh1(x′,y′)-Rhigh2(x′,y′)=-1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=0
其中,Rhigh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值;
满足第一种关系,则像素(x′,y′)为强边缘像素;
满足第二种关系,则像素(x′,y′)为弱边缘像素;
满足第三种关系,则像素(x′,y′)为非边缘像素;
第三云服务器根据左上相邻图像RupperLeft1和RupperLeft2、上相邻图像Rupper1和Rupper2、右上相邻图像RupperRight1和RupperRight2、左相邻图像RLeft1和RLeft2、右相邻图像RRight1和RRight2、左下相邻图像RlowerLeft1和RlowerLeft2、下相邻图像Rlower1和Rlower2、右下相邻图像RlowerRight1和RlowerRight2中对应像素的关系判断像素(x′,y′)的每一个相邻像素的类型;
如果一个弱边缘像素(x′,y′)的相邻像素中至少存在一个强边缘像素,则第三云服务器将像素(x′,y′)转换为强边缘像素,否则像素(x′,y′)类型不变,但是改变高阈值检验加密结果图像Rhigh1和Rhigh2中用于表示该像素灰度值的随机数,强边缘像素和非边缘像素同样只改变像素值,不改变类型;
所有像素转换完成后,第三云服务器将高阈值检验加密结果图像Rhigh1和Rhigh2分别发送给第一云服务器和第二云服务器;
步骤5.4:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,并将这两个图像作为下一轮迭代的输入;
以上步骤中,步骤5.1、步骤5.3只针对单个像素,高阈值检验加密结果图像Rhigh1和Rhigh2及其相邻图像中的所有像素使用SIMD并行执行这两步;
迭代过程直到没有弱边缘像素转换为强边缘像素时结束,边缘连接结束时,第一云服务器和第二云服务器分别保存边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2,Rcon1和Rcon2采用了安全边缘表示对边缘连接的结果进行加密;
步骤5所述孤立点抑制的步骤如下:
步骤5.5:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2进行像素重排序,假设经过像素重排序后,边缘连接加密结果图像Rcon1和Rcon2中第x行第y列的像素值Rcon1(x,y)和Rcon2(x,y)分别被置换为第x′行第y′列的像素值Rcon1(x′,y′)和Rcon2(x′,y′);
两台云服务器将边缘连接加密结果图像Rcon1和Rcon2中的所有像素加上一个相同的[0,255]范围内的随机整数,并发送给第三云服务器;
步骤5.6:第三云服务器根据安全边缘表示的原理判断边缘连接加密结果图像Rcon1和Rcon2中每一个像素(x′,y′)的类型,将Rcon1和Rcon2中所有的弱边缘像素转换为非边缘像素,其余像素只改变像素值,不改变类型,得到孤立点抑制加密结果图像Rsup1和Rsup2,将孤立点抑制第一加密结果图像Rsup1返回给第一云服务器,将孤立点抑制第二加密结果图像Rsup2返回给第二云服务器;
步骤5.7:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复孤立点抑制加密结果图像Rsup1和Rsup2中像素的顺序,即Rsup1和Rsup2中第x′行第y′列的像素值Rsup1(x′,y′)和Rsup2(x′,y′)分别被置换为第x行第y列的像素值Rsup1(x,y)和Rsup2(x,y),于是第一云服务器和第二云服务器分别保存孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2;
以上步骤中,步骤5.6只针对单个像素,边缘连接加密结果图像Rcon1和Rcon2中的所有像素使用SIMD并行执行这一步;
步骤5.7中,孤立点抑制加密结果图像Rsup1和Rsup2采用了安全边缘表示对孤立点抑制的结果进行加密;
作为优选,第一云服务器和第二云服务器分别将孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2发送给客户端,客户端按照如下方式进行解密:
R=Rsup1-Rsup2
其中,R为隐私保护Canny边缘检测的结果图像。
本发明的有益效果是:
在三台云服务器的协同计算下得到源图像的Canny边缘检测结果,该结果与未进行隐私保护时的Canny边缘检测结果几乎完全相同,同时三台云服务器无法获得源图像的隐私信息;通过像素重排序,第三云服务器无法恢复源图像或结果图像中像素的正确位置;通过安全比较和乘法协议,三台云服务器无法根据接收到的计算结果推断其他方的私有数据,从而无法获得源图像或结果图像中的像素值;通过安全边缘表示,第一云服务器和第二云服务器无法根据一个加密结果图像得到边缘检测的结果。
附图说明
图1是隐私保护Canny边缘检测方案的框架。
图2是隐私保护Canny边缘检测方案的流程。
图3是一个实施例中根据中心像素的梯度方向的范围确定其正反梯度方向上的相邻像素的过程。
图4是一个实施例中边缘连接的两次迭代的过程。
图5是一个实施例中安全边缘表示的效果图。
图6是一个实施例中像素重排序的效果图。
图7是隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比图。
具体实施方式
为了便于本领域普通技术人员理解和实施本申请,下面结合附图及实施例对本申请进一步地详细阐述,应当理解,所描述的实施例仅用于说明和解释本申请,并不用于限定本申请。
图1是隐私保护Canny边缘检测方案的框架,包括一台客户端和三台云服务器第一云服务器、第二云服务器、第三云服务器。客户端拥有包含隐私信息的图像,而第一云服务器、第二云服务器、第三云服务器拥有足够的计算和存储资源。进行隐私保护Canny边缘检测时,客户端对源图像进行加密,将其分割为两个加密后的图像,然后分别发送给第一云服务器和第二云服务器。第一云服务器和第二云服务器利用像素重排序、安全比较和乘法协议、安全边缘表示、SIMD等方法,在第三云服务器的帮助下逐步对两个加密图像进行Canny边缘检测。每次需要第三云服务器参与计算时,第一云服务器和第二云服务器都会使用相同的随机数种子生成相同的随机数、行号矩阵、列号矩阵,使用它们来加密其私有输入,并从第三云服务器获得加密的输出。Canny边缘检测完成后,第一云服务器和第二云服务器分别将其加密结果图像发送给客户端,客户端通过解密获得结果图像。
图2是隐私保护Canny边缘检测方案的流程,包括六个阶段:
第一阶段,客户端对源图像和Canny边缘检测的高、低阈值进行加密,并拆分成两个部分,分别上传到两台独立的云服务器第一云服务器和第二云服务器;
第二阶段,第一云服务器和第二云服务器分别对各自接收到的图像进行颜色空间转换、高斯滤波、梯度计算;
第三阶段,第一云服务器和第二云服务器在第三云服务器的帮助下计算辅助矩阵和辅助参数;
第四阶段,第一云服务器和第二云服务器在第三云服务器的帮助下完成低阈值检验、非极大值抑制、高阈值检验;
第五阶段,第一云服务器和第二云服务器在第三云服务器的帮助下完成边缘连接和孤立点抑制;
第六阶段,第一云服务器和第二云服务器将加密的结果图像返回给客户端,客户端解密得到Canny边缘检测的结果。
图3是一个实施例中根据中心像素(x′0,y′0)的梯度方向θ的范围确定其正反梯度方向上的相邻像素(x1,y1)和(x2,y2)的过程。假设梯度方向θ的最大范围是(-180°,180°],当θ∈(-180°,-157.5°]∪[-22.5°,22.5°]∪[157.5°,180°]时,(x1,y1)和(x2,y2)为(x′0,y′0)的左、右相邻像素,即(x′0,y′0-1)和(x′0,y′0+1);当θ∈(-157.5°,-112.5°]∪(22.5°,67.5°]时,(x1,y1)和(x2,y2)为(x′0,y′0)的左上、右下相邻像素,即(x′0-1,y′0-1)和(x′0+1,y′0+1);当θ∈(-112.5°,-67.5°)∪(67.5°,112.5°)时,(x1,y1)和(x2,y2)为(x′0,y′0)的上、下相邻像素,即(x′0-1,y′0)和(x′0+1,y′0);当θ∈[-67.5°,-22.5°)∪[112.5°,157.5°)时,(x1,y1)和(x2,y2)为(x′0,y′0)的右上、左下相邻像素,即(x′0-1,y′0+1)和(x′0+1,y′0-1)。在实施例中,像素(x′0,y′0)的梯度方向为倾斜箭头所指方向,即θ∈(-180°,-157.5°]∪[-22.5°,22.5°][157.5°,180°],因此正反梯度方向上的相邻像素(x1,y1)和(x2,y2)分别为(x′0,y′0-1)和(x′0,y′0+1)。
图4是一个实施例中边缘连接的两次迭代的过程。(1)中,中心像素为弱边缘像素,且八个相邻像素中存在两个强边缘像素,因此该弱边缘像素转换为强边缘像素;(2)中,中心像素为弱边缘像素,且八个相邻像素中不存在强边缘像素,因此该弱边缘像素类型不变。
图5是一个实施例中安全边缘表示的效果图。(1)为Canny边缘检测结果图像,(2)和(3)为加密结果图像。
图6是一个实施例中像素重排序的效果图。(1)为像素重排序前的结果图像,(2)为像素重排序后的结果图像。
图7是隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比图。第(1)列为源图像,第(2)列和第(4)列为标准Canny边缘检测的结果图像,第(3)列和第(5)列为隐私保护Canny边缘检测的结果图像,第(2)列和第(3)列中的结果图像在梯度用绝对值计算时得到,第(4)列和第(5)列中的结果图像在梯度用平方计算时得到。
表1是梯度用绝对值计算时,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比。TP代表在标准Canny边缘检测和隐私保护Canny边缘检测中同时被检测为边缘像素的像素百分比,FP代表在标准Canny边缘检测中被检测为非边缘像素但在隐私保护Canny边缘检测中被检测为边缘像素的像素百分比,FN代表在标准Canny边缘检测中被检测为边缘像素但在隐私保护Canny边缘检测中被检测为非边缘像素的像素百分比,TN代表在标准Canny边缘检测和隐私保护Canny边缘检测中同时被检测为非边缘像素的像素百分比。
表1:梯度用绝对值计算时,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比
表2是梯度用平方计算时,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比。
表2:梯度用平方计算时,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比
请见图1,隐私保护Canny边缘检测方案的框架,该方案运行在一台客户端和三台云服务器第一云服务器、第二云服务器、第三云服务器上。客户端拥有包含隐私信息的图像,而第一云服务器、第二云服务器、第三云服务器拥有足够的计算、存储资源。其中,第一云服务器和第二云服务器从客户端接收输入图像,对图像进行隐私保护Canny边缘检测,然后将结果返回给客户端;第三云服务器协助第一云服务器和第二云服务器进行计算。
隐私保护Canny边缘检测方案的安全目标是在云服务器上执行Canny边缘检测而不会泄漏隐私信息给云服务器。隐私信息包括源图像和检测到的边缘中像素值和位置。对于客户端,其隐私信息是源图像的像素值和位置,应防止这些信息泄露给第一云服务器、第二云服务器、第三云服务器;对于第一云服务器和第二云服务器,它们从客户端获得的输入和从第三云服务器获得的输出是其隐私信息,应防止输入泄露给对方和第三云服务器,防止输出泄露给对方;对于第三云服务器,其作用只是辅助计算,并不包含隐私信息。
方案中假设第一云服务器、第二云服务器、第三云服务器满足半信任模型,即它们会根据计算协议完成各自的计算任务,但可能会尝试根据中间结果来获取额外的隐私信息。此外,第一云服务器、第二云服务器、第三云服务器相互独立,不会合谋窃取隐私信息。这是一个实用的假设,因为云服务提供商之间的合谋可能损害其声誉和利益。
本发明隐私保护Canny边缘检测系统包括:客户端、第一云服务器、第二云服务器、第三云服务器;
所述客户端分别与所述的第一云服务器、第二云服务器通过无线方式连接;
所述第三云服务器分别与所述的第一云服务器、第二云服务器通过无线方式连接;
请见图2,隐私保护Canny边缘检测方案的流程,总共包括六个阶段。
假设源图像用S表示,高、低阈值分别用Ht和Lt表示。
步骤1:客户端生成一个与源图像行、列、通道数均相同的偏移图像,偏移图像中每个通道的像素值在一定范围内随机选择,利用源图像以及偏移图像生成加密图像;
步骤1所述源图像为S,其每一个像素值为:
S(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,S(x,y,t)表示源图像第x行第y列第t通道的像素值,M为源图像的行数,N为源图像的列数,P为源图像的通道数,对于RGB图像,P=3,对于灰度图像,P=1;
步骤1所述偏移图像为B,其每一个像素值为:
B(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为偏移图像的行数,N为偏移图像的列数,P为偏移图像的通道数,B(x,y,t)表示偏移图像第x行第y列第t通道的像素值,即步骤1中所述偏移图像中每个通道的像素值,具体计算方法为步骤1中所述在一定范围内随机选择,选择在[0,213-1]范围内的随机整数作为每个通道的像素值;
步骤1所述利用源图像以及偏移图像生成加密图像为:
C=S+B
其中,C为加密图像,其每一个像素值为:
C(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为加密图像的行数,N为加密图像的列数,P为加密图像的通道数,C(x,y,t)表示加密图像第x行第y列第t通道的像素值;
客户端为高阈值Ht生成高阈值偏移量Hb,为低阈值Lt生成低阈值偏移量Lb,具体生成方法为选择在[0,215-1]范围内的随机整数作为Hb和Lb的值;
客户端利用高阈值、低阈值、高阈值偏移量、低阈值偏移量分别计算加密高阈值、加密低阈值为:
Hc=Ht+Hb
Lc=Lt+Lb
其中,Hc为加密高阈值,Lc为加密低阈值。
客户端为云服务器生成一个梯度标志flag,标记每个像素的梯度如何计算;
当flag为假时,梯度的计算方式为:
G(x,y)=|Gx(x,y)|+|Gy(x,y)|
其中,G为梯度图像,G(x,y)表示梯度图像第x行第y列的像素值,Gx为x方向梯度分量图像,Gx(x,y)表示x方向梯度分量图像第x行第y列的像素值,Gy为y方向梯度分量图像,Gy(x,y)表示y方向梯度分量图像第x行第y列的像素值,每个像素(x,y)的梯度G(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的绝对值计算得到;
当flag为真时,梯度的计算方式为:
每个像素(x,y)的梯度H(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的平方计算得到;
客户端将加密图像C、加密高阈值Hc、加密低阈值Lc、梯度标志flag传输至第一云服务器;
客户端将偏移图像B、高阈值偏移量Hb、低阈值偏移量Lb、梯度标志flag传输至第二云服务器。
步骤2:第一云服务器和第二云服务器分别对各自接收到的图像进行颜色空间转换、高斯滤波、梯度计算;
若加密图像C和偏移图像B为RGB颜色空间的图像,第一云服务器和第二云服务器首先使用相同的转换公式将加密图像C和偏移图像B由RGB颜色空间转换到灰度空间,生成灰度加密图像Cgray和灰度偏移图像Bgray:
Cgray=0.299·Cr+0.587·Cg+0.114·Cb
Bgray=0.299·Br+0.587·Bg+0.114·Bb
其中,为Cr、Cg、Cb分别为加密图像C中红、绿、蓝三种通道中的像素值组成的图像,Br、Bg、Bb分别为偏移图像B中红、绿、蓝三种通道中的像素值组成的图像;
第一云服务器、第二云服务器使用相同的高斯卷积核分别对灰度加密图像Cgray和灰度偏移图像Bgray进行卷积,得到高斯加密图像CG和高斯偏移图像BG;
第一云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯加密图像CG进行卷积,分别得到x方向加密梯度图像Cx和y方向加密梯度图像Cy;
第二云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯偏移图像BG进行卷积,分别得到x方向梯度偏移图像Bx和y方向梯度偏移图像By;
步骤3:第一云服务器、第二云服务器结合第三云服务器计算辅助矩阵和辅助参数;
步骤3所述辅助矩阵包括:第一组辅助矩阵以及第二组辅助矩阵;
第一组辅助矩阵是源图像S经过颜色空间转换、高斯滤波、梯度计算后的梯度图像Gx和Gy的符号矩阵,包括第一符号矩阵α和第二符号矩阵β,其每一个元素(x,y)满足如下关系:
其中,α(x,y)为第一符号矩阵第x行第y列的元素值,β(x,y)为第二符号矩阵第x行第y列的元素值,Gx(x,y)为x方向梯度分量图像第x行第y列的像素值,Gy(x,y)为y方向梯度分量图像第x行第y列的像素值;
计算第一符号矩阵α的步骤如下:
步骤3.1:第一云服务器和第二云服务器首先进行像素重排序,两台云服务器生成相同的初始行号矩阵Rowsinitial和初始列号矩阵Colsinitial,其每一个元素(x,y)满足如下关系:
Rowsinitial(x,y)=x
Colsinitial(x,y)=y
x∈[0,M-1],y∈[0,N-1]
其中,Rowsinitial(x,y)表示初始行号矩阵第x行第y列的元素值,Colsinitial(x,y)表示初始列号矩阵第x行第y列的元素值,M为行号矩阵和列号矩阵的行数,N为行号矩阵和列号矩阵的列数;
两台云服务器使用相同的随机数种子迭代生成相同的随机整数,在每一轮迭代中,生成的随机数rand的范围为[0,Max],其中Max的初始值为M×N-1,两台云服务器利用随机数rand计算像素重排序后的行号row和列号col:
row=rand/N
col=rand%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序后的行号row为随机数rand除以N的商,像素重排序后的列号col为随机数rand除以N的余数;
同时,两台云服务器利用Max计算像素重排序前的行号row_max和列号col_max:
row_max=Max/N
colmax=Max%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序前的行号row_max为Max除以N的商,像素重排序前的列号col_max为Max除以N的余数;
两台云服务器将初始行号矩阵Rowinitial和初始列号矩阵Colsinitial中的元素(row_max,col_max)和(row,col)进行替换;
每经过一轮迭代Max减少1,直到Max减小到1迭代结束,迭代结束后两台云服务器得到相同的行号矩阵Rows和列号矩阵Cols,其每一个元素(x,y)满足如下关系:
Rows(x,y)=x′
Cols(x,y)=y′
其中,Rows(x,y)表示行号矩阵第x行第y列的元素值,Cols(x,y)表示列号矩阵第x行第y列的元素值,x′为像素重排序后元素(x,y)的行号,y′为像素重排序后元素(x,y)的列号,利用行号矩阵Rows和列号矩阵Cols可以实现元素(x,y)和元素(x′,y′)之间的对应;
第一云服务器和第二云服务器利用行号矩阵Rows和列号矩阵Cols分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.2:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Cx(x′,y′)+r2
I2=r1·Bx(x′,y′)+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的像素(x′,y′),r1和r2的取值也不同;
第一云服务器将I1和发送给第三云服务器,第二云服务器将I2发送给第三云服务器;
步骤3.3:第三云服务器比较I1和I2,并按如下方式生成比较结果:
第三云服务器将O1发送给第一云服务器,将O2发送给第二云服务器;
步骤3.4:第一云服务器和第二云服务器分别按如下方式得到结果:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值;
步骤3.5:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复第一符号矩阵α中元素的顺序,即α中第x′行第y′列的元素值α(x′,y′)被置换为第x行第y列的元素值α(x,y),于是第一符号矩阵α在第一云服务器和第二云服务器上生成;
以上步骤组成了第一符号矩阵α的安全计算协议,其中步骤3.1、步骤3.5为像素重排序的步骤,步骤3.2至步骤3.4为安全比较协议的步骤,且安全比较协议只针对单个元素,第一符号矩阵α中的所有元素使用SIMD并行执行安全比较协议;
第二符号矩阵β的安全计算协议与第一符号矩阵α的安全计算协议相同,也要用到像素重排序和安全比较协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
第二组辅助矩阵包括x方向乘积矩阵xMul1和xMul2,以及y方向乘积矩阵yMul1和yMul2,这些矩阵只在flag为真时计算;
对于每一个元素(x,y),这些乘积矩阵分别满足如下关系:
xMul1(x,y)+xMul2(x,y)=Cx(x,y)·Bx(x,y)
yMul1(x,y)+yMul2(x,y)=Cy(x,y)·By(x,y)
其中,xMul1(x,y)表示x方向第一乘积矩阵第x行第y列的元素值,xMul2(x,y)表示x方向第二乘积矩阵第x行第y列的元素值,Cx(x,y)表示x方向加密梯度图像第x行第y列的像素值,Bx(x,y)表示x方向梯度偏移图像第x行第y列的像素值,yMul1(x,y)表示y方向第一乘积矩阵第x行第y列的元素值,yMul2(x,y)表示y方向第二乘积矩阵第x行第y列的元素值,Cy(x,y)表示y方向加密梯度图像第x行第y列的像素值,By(x,y)表示y方向梯度偏移图像第x行第y列的像素值;
计算x方向乘积矩阵xMul1和xMul2的步骤如下:
步骤3.6:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.7:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Cx(x′,y′)
I2=r2·Bx(x′,y′)
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],且对于不同的像素(x′,t′),r1和r2的取值不同;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤3.8:第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其绝对值的范围是(0,229-1],其符号与I1·I相同;
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
步骤3.9:第一云服务器和第二云服务器分别按如下方式得到结果:
xMul1(x′,y′)=O1/(r1·r2)
xMul2(x′,y′)=O2/(r1·r2)
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值;
步骤3.10:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复x方向第一乘积矩阵xMul1和x方向第二乘积矩阵xMul2中元素的顺序,即xMul1和xMul2中第x′行第y′列的元素值xMul1(x′,y′)和xMul2(x′,y′)分别被置换为第x行第y列的元素值xMul1(x,y)和xMul2(x,y),于是x方向第一乘积矩阵xMul1在第一云服务器上生成,x方向第二乘积矩阵xMul2在第二云服务器上生成;
以上步骤组成了x方向乘积矩阵xMul1和xMul2的安全计算协议,其中步骤3.6、步骤3.10为像素重排序的步骤,步骤3.7至步骤3.9为安全乘法协议的步骤,且安全乘法协议只针对单个元素,x方向乘积矩阵xMul1和xMul2中的所有元素使用SIMD并行执行安全乘法协议;
y方向乘积矩阵yMul1和yMul2的安全计算协议与x方向乘积矩阵xMul1和xMul2的安全计算协议相同,也要用到像素重排序和安全乘法协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
步骤3所述辅助参数包括低阈值乘积lMul1和lMul2,以及高阈值乘积hMul1和hMul2,这些参数同样只在flag为真时计算,满足如下关系:
lMul1+lMul2=Lc·Lb
hMul1+hMul2=Hc·Hb
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积,Lc为加密低阈值,Lb为低阈值偏移量,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积,Hc为加密高阈值,Hb为高阈值偏移量;
低阈值乘积lMul1和lMul2的计算过程如下:
第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Lc
I2=r2·Lb
其中,Lc为加密低阈值,Lb为低阈值偏移量,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是(0,215-1];
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其范围是(0,231-1];
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
第一云服务器和第二云服务器分别按如下方式得到结果:
lMul1=O1/(r1·r2)
lMul2=O2/(r1·r2)
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
以上步骤组成了低阈值乘积lMul1和lMul2的安全计算协议,采用了安全乘法协议,但是没有采用像素重排序和和SIMD;
高阈值乘积hMul1和hMul2的安全计算协议与低阈值乘积lMul1和lMul2的安全计算协议相同,也要用到安全乘法协议,只是加密高阈值Hc和高阈值偏移量Hb分别替换上述步骤中的加密低阈值Lc和低阈值偏移量Lb;
步骤4:第一云服务器和第二云服务器在第三云服务器的帮助下完成低阈值检验、非极大值抑制、高阈值检验;
步骤4所述低阈值检验、非极大值抑制、高阈值检验三个操作连续执行,具体步骤如下:
步骤4.1:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,第一云服务器对x方向加密梯度图像Cx、y方向加密梯度图像Cy、第一符号矩阵α、第二符号矩阵β、x方向第一乘积矩阵xMul1、y方向第一乘积矩阵yMul1进行像素重排序,第二云服务器对x方向梯度偏移图像Bx、y方向梯度偏移图像By、第一符号矩阵α、第二符号矩阵β、x方向第二乘积矩阵xMul2、y方向第二乘积矩阵yMul2进行像素重排序,假设经过像素重排序后,Cx、Cy、Bx、By、α、β、xMul1、yMul1、xMul2、yMul2中第x行第y列的像素值Cx(x,y)、Cy(x,y)、Bx(x,y)、By(x,y)、α(x,y)、β(x,y)、xMul1(x,y)、yMul1(x,y)、xMul2(x,y)、yMul2(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)、Cy(x′,y′)、Bx(x′,y′)、By(x′,y′)、α(x′,y′)、β(x′,y′)、xMul1(x′,y′)、yMul1(x′,y′)、xMul2(x′,y′)、yMul2(x′,y′);
步骤4.2:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Lc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Lb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Lc是加密低阈值,Lb是低阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.3:当flag为假时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
其中,Rlow1(x′,y′)为低阈值检验第一加密结果图像第x′行第y′列的像素值,Rlow2(x′,y′)为低阈值检验第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.4:对于每一个像素(x′,y′),第一云服务器按如下方式生成确定梯度方向的输入:
I1=β(x′,y′)·Cy(x′,y′)+α(x′,y′)·Cx(x′,y′)·tan 22.5°+r1
I3=β(x′,y′)·Cy(x′,y′)-α(x′,y′)·Cx(x′,y′)·tan 67.5°+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的元素(x′,y′),r1和r2的取值也不同;
第二云服务器按如下方式生成确定梯度方向的输入:
I2=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 22.5°+r1
I4=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 67.5°+r2
其中,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.5:第三云服务器将I1与I2进行比较,将I3与I4进行比较,并按如下方式生成比较结果:
第三云服务器将O1和O3发送给第一云服务器,将O2和O4发送给第二云服务器;
步骤4.6:假设梯度方向θ的最大范围是(-180°,180°],第一云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值,β(x′,y′)为第二符号矩阵第x′行第y′列的元素值;
第二云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
步骤4.7:请见图3,根据每一个像素(x′0,y′0)的梯度方向θ的范围,第一云服务器和第二云服务器确定每一个像素(x′0,y′0)在梯度方向和梯度方向的反方向上与之相邻的像素(x1,y1)和(x2,y2):
当θ∈(-180°,-157.5°]∪[-22.5°,22.5°]∪[157.5°,180°]时,(x1,y1)和(x2,y2)分别为(x′0,y′0-1)和(x′0,y′0+1);
当θ∈(-157.5°,-112.5°]∪(22.5°,67.5°]时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0-1)和(x′0+1,y′0+1);
当θ∈(-112.5°,-67.5°)∪(67.5°,112.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0)和(x′0+1,y′0);
当θ∈[-67.5°,-22.5°)∪[112.5°,157.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0+1)和(x′0+1,y′0-1);
确定像素(x′0,y′0)的相邻像素(x1,y1)和(x2,y2)后,两台云服务器检索行号矩阵Rows和列号矩阵Cols,得到像素(x1,y1)和(x2,y2)经过像素重排序后的像素(x′1,y′1)和(x′2,y′2);
步骤4.8:对于每一个像素(x′0,y′0),当flag为假时,第一云服务器按如下方式生成梯度比较的输入:
I1=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′1,y′1)·Cx(x′1,y′1)-β(x′1,y′1)·Cy(x′1,y′1)+r1
I3=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′2,y′2)·Cx(x′2,y′2)-β(x′2,y′2)
·Cy(x′2,y′2)+r2
其中,Cx(x′0,y′0)是x方向加密梯度图像第x′0行第y′0列的像素值,Cy(x′0,y′0)是y方向加密梯度图像第x′0行第y′0列的像素值,Cx(x′1,y′1)是x方向加密梯度图像第x′1行第y′1列的像素值,Cy(x′1,y′1)是y方向加密梯度图像第x′1行第y′1列的像素值,Cx(x′2,y′2)是x方向加密梯度图像第x′2行第y′2列的像素值,Cy(x′2,y′2)是y方向加密梯度图像第x′2行第y′2列的像素值,α(x′0,y′0)是第一符号矩阵第x′0行第y′0列的元素值,α(x′1,y′1)是第一符号矩阵第x′1行第y′1列的元素值,α(x′2,y′2)是第一符号矩阵第x′2行第y′2列的元素值,β(x′0,y′0)是第二符号矩阵第x′0行第y′0列的元素值,β(x′1,y′1)是第二符号矩阵第x′1行第y′1列的元素值,β(x′2,y′2)是第二符号矩阵第x′2行第y′2列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的元素(x′0,y′0),r1和r2的取值也不同;
第二云服务器按如下方式生成梯度比较的输入:
I2=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′0)-α(x′1,y′1)·Bx(x′1,y′1)-β(x′1,y′1)
·By(x′1,y′1)+r1
I4=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′0)-α(x′2,y′2)·Bx(x′2,y′2)-β(x′2,y′2)
·By(x′2,y′2)+r2
其中,Bx(x′0,y′0)是x方向梯度偏移图像第x′0行第y′0列的像素值,By(x′0,y′0)是y方向梯度偏移图像第x′0行第y′0列的像素值,Bx(x′1,y′1)是x方向梯度偏移图像第x′1行第y′1列的像素值,By(x′1,y′1)是y方向梯度偏移图像第x′1行第y′1列的像素值,Bx(x′2,y′2)是x方向梯度偏移图像第x′2行第y′2列的像素值,By(x′2,y′2)是y方向梯度偏移图像第x′2行第y′2列的像素值;
当flag为真时,第一云服务器按如下方式生成梯度比较的输入:
其中,xMul1(x′0,y′0)为x方向第一乘积矩阵第x′0行第y′0列的元素值,yMul1(x′0,y′0)为y方向第一乘积矩阵第x′0行第y′0列的元素值,xMul1(x′1,y′1)为x方向第一乘积矩阵第x′1行第y′1列的元素值,yMul1(x′1,y′1)为y方向第一乘积矩阵第x′1行第y′1列的元素值,xMul1(x′2,y′2)为x方向第一乘积矩阵第x′2行第y′2列的元素值,yMul1(x′2,y′2)为y方向第一乘积矩阵第x′2行第y′2列的元素值;
第二云服务器按如下方式生成梯度比较的输入:
其中,xMul2(x′0,y′0)为x方向第二乘积矩阵第x′0行第y′0列的元素值,yMul2(x′0,y′0)为y方向第二乘积矩阵第x′0行第y′0列的元素值,xMul2(x′1,y′1)为x方向第二乘积矩阵第x′1行第y′1列的元素值,yMul2(x′1,y′1)为y方向第二乘积矩阵第x′1行第y′1列的元素值,xMul2(x′2,y′2)为x方向第二乘积矩阵第x′2行第y′2列的元素值,yMul2(x′2,y′2)为y方向第二乘积矩阵第x′2行第y′2列的元素值;
如果(x′1,y′1)或(x′2,y′2)不存在,则其在所有上述图像和矩阵中的值为0;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.9:当flag为假时,第三云服务器将I1与I2进行比较,将将I2与I4进行比较,并按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
当flag为真时,第三云服务器按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
其中,RNMS1(x′0,y′0)为非极大值抑制第一加密结果图像第x′0行第y′0列的像素值,RNMS2(x′0,y′0)为非极大值抑制第二加密结果图像第x′0行第y′0列的像素值,Rlow1(x′0,y′0)为低阈值检验第一加密结果图像第x′0行第y′0列的像素值,Rlow2(x′0,y′0)为低阈值检验第二加密结果图像第x′0行第y′0列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.10:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Hc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Hb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Hc是加密高阈值,Hb是高阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.11:当flag为假时,第三云服务器按如下方式生成高阈值检验结果:
Rhigh2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成高阈值检验结果:
Rhigh2(x′,y′)=r
其中,Rhigh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值,RNMS1(x′,y′)为非极大值抑制第一加密结果图像第x′行第y′列的像素值,RNMs2(x′,y′)为非极大值抑制第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
第三云服务器将Rhigh1发送给第一云服务器,将Rhigh2发送给第二云服务器,
步骤4.12:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,即Rhigh1和Rhigh2中第x′行第y′列的像素值Rhigh1(x′,y′)和Rhigh2(x′,y′)分别被置换为第x行第y列的像素值Rhigh1(x,y)和Rhigh2(x,y),于是高阈值检验第一加密结果图像Rhigh1在第一云服务器上生成,高阈值检验第二加密结果图像Rhigh2在第二云服务器上生成;
以上步骤中,步骤4.1、步骤4.12组成了像素重排序的步骤;
步骤4.2、步骤4.3组成了低阈值检验的计算协议,低阈值检验加密结果图像Rlow1和Rlow2中的所有像素使用SIMD并行执行该计算协议;
步骤4.4至步骤4.6组成了确定梯度方向的计算协议,所有像素使用SIMD并行执行该计算协议;
步骤4.8、步骤4.9组成了梯度比较的计算协议,非极大值抑制加密结果图像RNMS1和RNMS2中的所有像素使用SIMD并行执行该计算协议;
确定梯度方向的计算协议和梯度比较的计算协议组成了非极大值抑制的计算协议;
步骤4.10、步骤4.11组成了高阈值检验的计算协议,高阈值检验加密结果图像Rhigh1和Rhigh2中的所有像素使用SIMD并行执行该计算协议;
步骤4.3采用了安全边缘表示对低阈值检验的结果进行加密;
步骤4.9采用了安全边缘表示对非极大值抑制的结果进行加密;
步骤4.11采用了安全边缘表示对高阈值检验的结果进行加密;
步骤5:第一云服务器和第二云服务器在第三云服务器的帮助下完成边缘连接和孤立点抑制;
步骤5所述边缘连接以迭代的方式进行,每一轮迭代的步骤如下:
步骤5.1:第一云服务器为高阈值检验第一加密结果图像Rhigh1生成八个相邻图像,每个相邻图像的像素分别是Rhigh1中对应像素的一个相邻像素:
RupperLeft1(x,y)=Rhigh1(x-1,y-1)
Rupper1(x,y)=Rhigh1(x-1,y)
RupperRight1(x,y)=Rhigh1(x-1,y+1)
RLeft1(x,y)=Rhigh1(x,y-1)
RRight1(x,y)=Rhigh1(x,y+1)
RlowerLeft1(x,y)=Rhigh1(x+1,y-1)
Rlower1(x,y)=Rhigh1(x+1,y)
RlowerRight1(x,y)=Rhigh1(x+1,y+1)
其中,RupperLeft1(x,y)为第一左上相邻图像第x行第y列的像素值,Rupper1(x,y)为第一上相邻图像第x行第y列的像素值,RupperRight1(x,y)为第一右上相邻图像第x行第y列的像素值,RLeft1(x,y)为第一左相邻图像第x行第y列的像素值,RRight1(x,y)为第一右相邻图像第x行第y列的像素值,RlowerLeft1(x,y)为第一左下相邻图像第x行第y列的像素值,Rlower1(x,y)为第一下相邻图像第x行第y列的像素值,RlowerRight1(x,y)为第一右下相邻图像第x行第y列的像素值;
如果相邻像素不存在,则用一个[0,255]范围内的随机整数作为其像素值;
第二云服务器也为高阈值检验第二加密结果图像Rhigh2生成八个相邻图像:
RupperLeft2(x,y)=Rhigh2(x-1,y-1)
Rupper2(x,y)=Rhigh2(x-1,y)
RupperRight2(x,y)=Rhigh2(x-1,y+1)
RLeft2(x,y)=Rhigh2(x,y-1)
RRight2(x,y)=Rhigh2(x,y+1)
RlowerLeft2(x,y)=Rhigh2(x+1,y-1)
Rlower2(x,y)=Rhigh2(x+1,y)
RlowerRight2(x,y)=Rhigh2(x+1,y+1)
其中,RupperLeft2(x,y)为第二左上相邻图像第x行第y列的像素值,Rupper2(x,y)为第二上相邻图像第x行第y列的像素值,RupperRight2(x,y)为第二右上相邻图像第x行第y列的像素值,RLeft2(x,y)为第二左相邻图像第x行第y列的像素值,RRight2(x,y)为第二右相邻图像第x行第y列的像素值,RlowerLeft2(x,y)为第二左下相邻图像第x行第y列的像素值,Rlower2(x,y)为第二下相邻图像第x行第y列的像素值,RlowerRight2(x,y)为第二右下相邻图像第x行第y列的像素值;
不存在的相邻像素要用与Rhigh1的相邻图像中相同的随机整数作为像素值;
步骤5.2:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,第一云服务器对高阈值检验第一加密结果图像Rhigh1、第一左上相邻图像RupperLeft1、第一上相邻图像Rupper1、第一右上相邻图像RupperRight1、第一左相邻图像RLeft1、第一右相邻图像RRight1、第一左下相邻图像RlowerLeft1、第一下相邻图像Rlower1、第一右下相邻图像RlowerRight1进行像素重排序,第二云服务器对高阈值检验第二加密结果图像Rhigh2、第二左上相邻图像RupperLeft2、第二上相邻图像Rupper2、第二右上相邻图像RupperRight2、第二左相邻图像RLeft2、第二右相邻图像RRight2、第二左下相邻图像RlowerLeft2、第二下相邻图像Rlower2、第二右下相邻图像RlowerRight2进行像素重排序,假设经过像素重排序后,所有图像中第x行第y列的像素值(x,y)被置换为第x′行第y′列的像素值(x′,y′);
两台云服务器将所有图像的像素值加上一个相同的[0,255]范围内的随机整数后,将所有图像发送给第三云服务器。
步骤5.3:第三云服务器利用安全边缘表示的原理,根据高阈值检验加密结果图像Rhigh和Rhigh2中对应像素值的关系判断每一个像素(x′,y′)的类型,Rhigh1和Rhigh2中的像素满足如下三种关系:
Rhigh1(x′,y′)-Rhigh2(x′,y′)=-1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=0
其中,Rhigh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值;
满足第一种关系,则像素(x′,y′)为强边缘像素;
满足第二种关系,则像素(x′,y′)为弱边缘像素;
满足第三种关系,则像素(x′,y′)为非边缘像素;
第三云服务器根据左上相邻图像RupperLeft1和RupperLeft2、上相邻图像Rupper1和Rupper2、右上相邻图像RupperRight1和RupperRight2、左相邻图像RLeft1和RLeft2、右相邻图像RRight1和RRight2、左下相邻图像RlowerLeft1和RlowerLeft2、下相邻图像Rlower1和Rlower2、右下相邻图像RlowerRight1和RlowerRight2中对应像素的关系判断像素(x′,y′)的每一个相邻像素的类型;
请见图4,如果一个弱边缘像素(x′,y′)的相邻像素中至少存在一个强边缘像素,则第三云服务器将像素(x′,y′)转换为强边缘像素,否则像素(x′,y′)类型不变,但是改变高阈值检验加密结果图像Rhigh1和Rhigh2中用于表示该像素灰度值的随机数,强边缘像素和非边缘像素同样只改变像素值,不改变类型;
所有像素转换完成后,第三云服务器将高阈值检验加密结果图像Rhigh1和Rhigh2分别发送给第一云服务器和第二云服务器;
步骤5.4:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,并将这两个图像作为下一轮迭代的输入;
以上步骤中,步骤5.1、步骤5.3只针对单个像素,高阈值检验加密结果图像Rhigh1和Rhigh2及其相邻图像中的所有像素使用SIMD并行执行这两步;
迭代过程直到没有弱边缘像素转换为强边缘像素时结束,边缘连接结束时,第一云服务器和第二云服务器分别保存边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2,Rcon1和Rcon2采用了安全边缘表示对边缘连接的结果进行加密;
步骤5所述孤立点抑制的步骤如下:
步骤5.5:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2进行像素重排序,假设经过像素重排序后,边缘连接加密结果图像Rcon1和Rcon2中第x行第y列的像素值Rcon1(x,y)和Rnon2(x,y)分别被置换为第x′行第y′列的像素值Rcon1(x′,y′)和Rcon2(x′,y′);
两台云服务器将边缘连接加密结果图像Rcon1和Rcon2中的所有像素加上一个相同的[0,255]范围内的随机整数,并发送给第三云服务器;
步骤5.6:第三云服务器根据安全边缘表示的原理判断边缘连接加密结果图像Rcon1和Rcon2中每一个像素(x′,y′)的类型,将Rcon1和Rcon2中所有的弱边缘像素转换为非边缘像素,其余像素只改变像素值,不改变类型,得到孤立点抑制加密结果图像Rsup1和Rsup2,将孤立点抑制第一加密结果图像Rsup1返回给第一云服务器,将孤立点抑制第二加密结果图像Rsup返回给第二云服务器;
步骤5.7:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复孤立点抑制加密结果图像Rsup1和Rsup2中像素的顺序,即Rsup1和Rsup2中第x′行第y′列的像素值Rsup1(x′,y′)和Rsup2(x′,y′)分别被置换为第x行第y列的像素值Rsup1(x,y)和Rsup2(x,y),于是第一云服务器和第二云服务器分别保存孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2;
以上步骤中,步骤5.6只针对单个像素,边缘连接加密结果图像Rcon1和Rcon2中的所有像素使用SIMD并行执行这一步;
步骤5.7中,孤立点抑制加密结果图像Rsup1和Rsip2采用了安全边缘表示对孤立点抑制的结果进行加密;
步骤6:第一云服务器和第二云服务器将加密的结果图像返回给客户端,客户端解密得到Canny边缘检测的结果;
第一云服务器和第二云服务器分别将孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2发送给客户端,客户端按照如下方式进行解密:
R=Rsip1-Rsup2
其中,R为隐私保护Canny边缘检测的结果图像。
请见图5,一个实施例中安全边缘表示的效果图。在隐私保护Canny边缘检测完成后,第一云服务器和第二云服务器会分别从第三云服务器得到一个加密结果图像。可以看出,虽然结果图像由两个加密结果图像解密得到,但从任何单个加密结果图像无法获得结果图像的任何有用信息。同理,第一云服务器和第二云服务器从任何单个加密中间结果图像无法获得中间结果图像(高阈值检验、边缘连接的结果图像)的任何有用信息。
请见图6,一个实施例中像素重排序的效果图。在隐私保护Canny边缘检测过程中,第三云服务器会得到像素重排序后的结果图像。可以看出,像素重排序后的结果图像不会泄漏像素重排序前结果图像的隐私信息给第三云服务器。同理,像素重排序后的中间结果图像不会泄漏像素重排序前的中间结果图像(低阈值检验、非极大值抑制、高阈值检验、边缘连接的结果图像)的隐私信息。
请见图7,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比图。可以看出,无论梯度用绝对值还是平方计算,隐私保护Canny边缘检测都具有与标准Canny边缘检测几乎完全一样的效果。
请见表1和表2,梯度分别用绝对值和平方计算时,隐私保护Canny边缘检测与OpenCV标准Canny边缘检测的结果对比。其中,TP和TN代表被正确检测的像素百分比。因此,与标准Canny边缘检测相比,隐私保护Canny边缘检测实现了相当高的精确度,尤其当梯度用平方计算时。
应当理解的是,本说明书未详细阐述的部分均属于现有技术,详细阐述的部分为本专利独创的技术方案。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (2)
1.一种基于隐私保护Canny边缘检测系统的边缘检测方法,其特征在于:
所述隐私保护Canny边缘检测系统包括:客户端、第一云服务器、第二云服务器、第三云服务器;
所述客户端分别与所述的第一云服务器、第二云服务器通过无线方式连接;
所述第三云服务器分别与所述的第一云服务器、第二云服务器通过无线方式连接;
所述边缘检测方法包括以下步骤:
步骤1:客户端生成一个与源图像行、列、通道数均相同的偏移图像,偏移图像中每个通道的像素值在一定范围内随机选择,利用源图像以及偏移图像生成加密图像;
步骤2:第一云服务器和第二云服务器分别对各自接收到的图像进行颜色空间转换、高斯滤波、梯度计算;
步骤3:第一云服务器、第二云服务器结合第三云服务器计算辅助矩阵和辅助参数;
步骤4:第一云服务器和第二云服务器在第三云服务器的帮助下完成低阈值检验、非极大值抑制、高阈值检验;
步骤5:第一云服务器和第二云服务器在第三云服务器的帮助下完成边缘连接和孤立点抑制;
步骤6:第一云服务器和第二云服务器将加密的结果图像返回给客户端,客户端解密得到Canny边缘检测的结果;
步骤1所述源图像为s,其每一个像素值为:
s(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,s(x,y,t)表示源图像第x行第y列第t通道的像素值,M为源图像的行数,N为源图像的列数,P为源图像的通道数,对于RGB图像,P=3,对于灰度图像,P=1;
步骤1所述偏移图像为B,其每一个像素值为:
B(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为偏移图像的行数,N为偏移图像的列数,P为偏移图像的通道数,B(x,y,t)表示偏移图像第x行第y列第t通道的像素值,即步骤1中所述偏移图像中每个通道的像素值,具体计算方法为步骤1中所述在一定范围内随机选择,选择在[0,213-1]范围内的随机整数作为每个通道的像素值;
步骤1所述利用源图像以及偏移图像生成加密图像为:
C=S+B
其中,C为加密图像,其每一个像素值为:
C(x,y,t)
x∈[0,M-1],y∈[0,N-1],t∈[0,P-1]
其中,M为加密图像的行数,N为加密图像的列数,P为加密图像的通道数,C(x,y,t)表示加密图像第x行第y列第t通道的像素值;
客户端为高阈值Ht生成高阈值偏移量Hb,为低阈值Lt生成低阈值偏移量Lb,具体生成方法为选择在[0,215-1]范围内的随机整数作为Hb和Lb的值;
客户端利用高阈值、低阈值、高阈值偏移量、低阈值偏移量分别计算加密高阈值、加密低阈值为:
Hc=Ht+Hb
Lc=Lt+Lb
其中,Hc为加密高阈值,Lc为加密低阈值;
客户端为云服务器生成一个梯度标志flag,标记每个像素的梯度如何计算;
当flag为假时,梯度的计算方式为:
G(x,y)=|Gx(x,y)|+|Gy(x,y)|
其中,G为梯度图像,G(x,y)表示梯度图像第x行第y列的像素值,Gx为x方向梯度分量图像,Gx(x,y)表示x方向梯度分量图像第x行第y列的像素值,Gy为y方向梯度分量图像,Gy(x,y)表示y方向梯度分量图像第x行第y列的像素值,每个像素(x,y)的梯度G(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的绝对值计算得到;
当flag为真时,梯度的计算方式为:
每个像素(x,y)的梯度G(x,y)由该像素的x方向梯度分量Gx(x,y)和y方向梯度分量Gy(x,y)的平方计算得到;
客户端将加密图像c、加密高阈值Hc、加密低阈值Lc、梯度标志flag传输至第一云服务器;
客户端将偏移图像B、高阈值偏移量Hb、低阈值偏移量Lb、梯度标志flag传输至第二云服务器;
所述步骤2具体为:
若加密图像C和偏移图像B为RGB颜色空间的图像,第一云服务器和第二云服务器首先使用相同的转换公式将加密图像C和偏移图像B由RGB颜色空间转换到灰度空间,生成灰度加密图像Cgray和灰度偏移图像Bgray:
Cgray=0.299·Cr+0.587·Cg+0.114·Cb
Bgray=0.299·Br+0.587·Bg+0.114·Bb
其中,为Cr、Cg、Cb分别为加密图像C中红、绿、蓝三种通道中的像素值组成的图像,Br、Bg、Bb分别为偏移图像B中红、绿、蓝三种通道中的像素值组成的图像;
第一云服务器、第二云服务器使用相同的高斯卷积核分别对灰度加密图像Cgray和灰度偏移图像Bgray进行卷积,得到高斯加密图像CG和高斯偏移图像BG;
第一云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯加密图像CG进行卷积,分别得到x方向加密梯度图像Cx和y方向加密梯度图像Cy;
第二云服务器使用Sobel算子在x方向和y方向上的权重矩阵对高斯偏移图像BG进行卷积,分别得到x方向梯度偏移图像Bx和y方向梯度偏移图像By;
步骤3所述辅助矩阵包括:第一组辅助矩阵以及第二组辅助矩阵;
第一组辅助矩阵是源图像s经过颜色空间转换、高斯滤波、梯度计算后的梯度图像Gx和Gy的符号矩阵,包括第一符号矩阵α和第二符号矩阵β,其每一个元素(x,y)满足如下关系:
其中,α(x,y)为第一符号矩阵第x行第y列的元素值,β(x,y)为第二符号矩阵第x行第y列的元素值,Gx(x,y)为x方向梯度分量图像第x行第y列的像素值,Gy(x,y)为y方向梯度分量图像第x行第y列的像素值;
计算第一符号矩阵α的步骤如下:
步骤3.1:第一云服务器和第二云服务器首先进行像素重排序,两台云服务器生成相同的初始行号矩阵Rowsinitial和初始列号矩阵Colsinitial,其每一个元素(x,y)满足如下关系:
Rowsinitial(x,y)=x
Colsinitial(x,y)=y
x∈[0,M-1],y∈[0,N-1]
其中,Rowsinitial(x,y)表示初始行号矩阵第x行第y列的元素值,Colsinitial(x,y)表示初始列号矩阵第x行第y列的元素值,M为行号矩阵和列号矩阵的行数,N为行号矩阵和列号矩阵的列数;
两台云服务器使用相同的随机数种子迭代生成相同的随机整数,在每一轮迭代中,生成的随机数rand的范围为[0,Max],其中Max的初始值为M×N-1,两台云服务器利用随机数rand计算像素重排序后的行号row和列号col:
row=rand/N
col=rand%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序后的行号row为随机数rand除以N的商,像素重排序后的列号col为随机数rand除以N的余数;
同时,两台云服务器利用Max计算像素重排序前的行号row_max和列号col_max:
row_max=Max/N
col_max=Max%N
其中,N为行号矩阵和列号矩阵的列数,像素重排序前的行号row_max为Max除以N的商,像素重排序前的列号col_max为Max除以N的余数;
两台云服务器将初始行号矩阵Rowsinitial和初始列号矩阵Colsinitial中的元素(row_max,col_max)和(row,col)进行替换;
每经过一轮迭代Max减少1,直到Max减小到1迭代结束,迭代结束后两台云服务器得到相同的行号矩阵Rows和列号矩阵Cols,其每一个元素(x,y)满足如下关系:
Rows(x,y)=x′
Cols(x,y)=y′
其中,Rows(x,y)表示行号矩阵第x行第y列的元素值,Cols(x,y)表示列号矩阵第x行第y列的元素值,x′为像素重排序后元素(x,y)的行号,y′为像素重排序后元素(x,y)的列号,利用行号矩阵Rows和列号矩阵Cols可以实现元素(x,y)和元素(x′,y′)之间的对应;
第一云服务器和第二云服务器利用行号矩阵Rows和列号矩阵Cols分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.2:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Cx(x′,y′)+r2
I2=r1·Bx(x′,y′)+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的像素(x′,y′),r1和r2的取值也不同;
第一云服务器将I1和发送给第三云服务器,第二云服务器将I2发送给第三云服务器;
步骤3.3:第三云服务器比较I1和I2,并按如下方式生成比较结果:
第三云服务器将O1发送给第一云服务器,将O2发送给第二云服务器;
步骤3.4:第一云服务器和第二云服务器分别按如下方式得到结果:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值;
步骤3.5:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复第一符号矩阵α中元素的顺序,即α中第x′行第y′列的元素值α(x′,y′)被置换为第x行第y列的元素值α(x,y),于是第一符号矩阵α在第一云服务器和第二云服务器上生成;
以上步骤组成了第一符号矩阵α的安全计算协议,其中步骤3.1、步骤3.5为像素重排序的步骤,步骤3.2至步骤3.4为安全比较协议的步骤,且安全比较协议只针对单个元素,第一符号矩阵α中的所有元素使用SIMD并行执行安全比较协议;
第二符号矩阵β的安全计算协议与第一符号矩阵α的安全计算协议相同,也要用到像素重排序和安全比较协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
第二组辅助矩阵包括x方向乘积矩阵xMul1和xMul2,以及y方向乘积矩阵yMul1和yMul2,这些矩阵只在flag为真时计算;
对于每一个元素(x,y),这些乘积矩阵分别满足如下关系:
xMul1(x,y)+xMul2(x,y)=Cx(x,y)·Bx(x,y)
yMul1(x,y)+yMul2(x,y)=Cy(x,y)·By(x,y)
其中,xMul1(x,y)表示x方向第一乘积矩阵第x行第y列的元素值,xMul2(x,y)表示x方向第二乘积矩阵第x行第y列的元素值,Cx(x,y)表示x方向加密梯度图像第x行第y列的像素值,Bx(x,y)表示x方向梯度偏移图像第x行第y列的像素值,yMul1(x,y)表示y方向第一乘积矩阵第x行第y列的元素值,yMul2(x,y)表示y方向第二乘积矩阵第x行第y列的元素值,Cy(x,y)表示y方向加密梯度图像第x行第y列的像素值,By(x,y)表示y方向梯度偏移图像第x行第y列的像素值;
计算x方向乘积矩阵xMul1和xMul2的步骤如下:
步骤3.6:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对x方向加密梯度图像Cx和x方向梯度偏移图像Bx进行像素重排序,假设经过像素重排序后,Cx和Bx中第x行第y列的像素值Cx(x,y)和Bx(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)和Bx(x′,y′);
步骤3.7:对于每一个像素(x′,y′),第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·cx(x′,y′)
I2=r2·Bx(x′,y′)
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],且对于不同的像素(x′,y′),r1和r2的取值不同;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤3.8:第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其绝对值的范围是(0,229-1],其符号与I1·I2相同;
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
步骤3.9:第一云服务器和第二云服务器分别按如下方式得到结果:
xMul1(x′,y′)=O1/(r1·r2)
xMul2(x′,y′)=O2/(r1·r2)
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值;
步骤3.10:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复x方向第一乘积矩阵xMul1和x方向第二乘积矩阵xMul2中元素的顺序,即xMul1和xMul2中第x′行第y′列的元素值xMul1(x′,y′)和xMul2(x′,y′)分别被置换为第x行第y列的元素值xMul1(x,y)和xMul2(x,y),于是x方向第一乘积矩阵xMul1在第一云服务器上生成,x方向第二乘积矩阵xMul2在第二云服务器上生成;
以上步骤组成了x方向乘积矩阵xMul1和xMul2的安全计算协议,其中步骤3.6、步骤3.10为像素重排序的步骤,步骤3.7至步骤3.9为安全乘法协议的步骤,且安全乘法协议只针对单个元素,x方向乘积矩阵xMul1和xMul2中的所有元素使用SIMD并行执行安全乘法协议;
y方向乘积矩阵yMul1和yMul2的安全计算协议与x方向乘积矩阵xMul1和xMul2的安全计算协议相同,也要用到像素重排序和安全乘法协议,只是y方向加密梯度图像Cy和y方向梯度偏移图像By分别替换上述步骤中的x方向加密梯度图像Cx和x方向梯度偏移图像Bx;
步骤3所述辅助参数包括低阈值乘积lMul1和lMul2,以及高阈值乘积hMul1和hMul2,这些参数同样只在flag为真时计算,满足如下关系:
lMul1+lMul2=Lc·Lb
hMul1+hMul2=Hc·Hb
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积,Lc为加密低阈值,Lb为低阈值偏移量,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积,Hc为加密高阈值,Hb为高阈值偏移量;
低阈值乘积lMul1和lMul2的计算过程如下:
第一云服务器和第二云服务器分别按如下方式加密:
I1=r1·Lc
I2=r2·Lb
其中,Lc为加密低阈值,Lb为低阈值偏移量,r1和r2是第一云服务器和第二云服务器利用随机数种子生成的随机整数,范围是(0,215-1];
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
第三云服务器按如下方式生成结果:
O1=I1·I2-r3
O2=r3
其中,r3是第三云服务器产生的随机整数,其范围是(0,231-1];
第三云服务器将O1和O2分别发送给第一云服务器和第二云服务器;
第一云服务器和第二云服务器分别按如下方式得到结果:
lMul1=O1/(r1·r2)
lMul2=O2/(r1·r2)
其中,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
以上步骤组成了低阈值乘积lMul1和lMul2的安全计算协议,采用了安全乘法协议,但是没有采用像素重排序和SIMD;
高阈值乘积hMul1和hMul2的安全计算协议与低阈值乘积lMul1和lMul2的安全计算协议相同,也要用到安全乘法协议,只是加密高阈值Hc和高阈值偏移量Hb分别替换上述步骤中的加密低阈值Lc和低阈值偏移量Lb;
步骤4所述低阈值检验、非极大值抑制、高阈值检验三个操作连续执行,具体步骤如下:
步骤4.1:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,第一云服务器对x方向加密梯度图像Cx、y方向加密梯度图像Cy、第一符号矩阵α、第二符号矩阵β、x方向第一乘积矩阵xMul1、y方向第一乘积矩阵yMul1进行像素重排序,第二云服务器对x方向梯度偏移图像Bx、y方向梯度偏移图像By、第一符号矩阵α、第二符号矩阵β、x方向第二乘积矩阵xMul2、y方向第二乘积矩阵yMul2进行像素重排序,假设经过像素重排序后,Cx、Cy、Bx、By、α、β、xMul1、yMul1、xMul2、yMul2中第x行第y列的像素值Cx(x,y)、Cy(x,y)、Bx(x,y)、By(x,y)、α(x,y)、β(x,y)、xMul1(x,y)、yMul1(x,y)、xMul2(x,y)、yMul2(x,y)分别被置换为第x′行第y′列的像素值Cx(x′,y′)、Cy(x′,y′)、Bx(x′,y′)、By(x′,y′)、α(x′,y′)、β(x′,y′)、xMul1(x′,y′)、yMul1(x′,y′)、xMul2(x′,y′)、yMul2(x′,y′);
步骤4.2:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Lc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Lb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Lc是加密低阈值,Lb是低阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成低阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,lMul1为低阈值第一乘积,lMul2为低阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.3:当flag为假时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成低阈值检验结果:
Rlow2(x′,y′)=r
其中,Rlow1(x′,y′)为低阈值检验第一加密结果图像第x′行第y′列的像素值,Rlow2(x′,y′)为低阈值检验第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.4:对于每一个像素(x′,y′),第一云服务器按如下方式生成确定梯度方向的输入:
I1=β(x′,y′)·Cy(x′,y′)-α(x′,y′)·Cx(x′,y′)·tan 22.5°+r1
I3=β(x′,y′)·Cy(x′,y′)-α(x′,y′)·Cx(x′,y′)·tan 67.5°+r2
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的像素(x′,y′),r1和r2的取值也不同;
第二云服务器按如下方式生成确定梯度方向的输入:
I2=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 22.5°+r1
I4=β(x′,y′)·By(x′,y′)-α(x′,y′)·Bx(x′,y′)·tan 67.5°+r2
其中,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.5:第三云服务器将I1与I2进行比较,将I3与I4进行比较,并按如下方式生成比较结果:
第三云服务器将O1和O3发送给第一云服务器,将O2和O4发送给第二云服务器;
步骤4.6:假设梯度方向θ的最大范围是(-180°,180°],第一云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
其中,α(x′,y′)为第一符号矩阵第x′行第y′列的元素值,β(x′,y′)为第二符号矩阵第x′行第y′列的元素值;
第二云服务器按照如下方式判断每一个像素(x′,y′)的梯度方向θ的具体范围:
步骤4.7:根据每一个像素(x′0,y′0)的梯度方向θ的范围,第一云服务器和第二云服务器确定每一个像素(x′0,y′0)在梯度方向和梯度方向的反方向上与之相邻的像素(x1,y1)和(x2,y2):
当θ∈(-180°,-157.5°]∪[-22.5°,22.5°]∪[157.5°,180°]时,(x1,y1)和(x2,y2)分别为(x′0,y′0-1)和(x′0,y′0+1);
当θ∈(-157.5°,-112.5°]∪(22.5°,67.5°]时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0-1)和(x′0+1,y′0+1);
当θ∈(-112.5°,-67.5°)∪(67.5°,112.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0)和(x′0+1,y′0);
当θ∈[-67.5°,-22.5°)∪[112.5°,157.5°)时,(x1,y1)和(x2,y2)分别为(x′0-1,y′0+1)和(x′0+1,y′0-1);
确定像素(x′0,y′0)的相邻像素(x1,y1)和(x2,y2)后,两台云服务器检索行号矩阵Rows和列号矩阵Cols,得到像素(x1,y1)和(x2,y2)经过像素重排序后的像素(x′1,y′1)和(x′2,y′2);
步骤4.8:对于每一个像素(x′0,y′0),当flag为假时,第一云服务器按如下方式生成梯度比较的输入:
I1=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′1,y′1)·Cx(x′1,y′1)-β(x′1,y′1)·Cy(x′1,y′1)+r1
I3=α(x′0,y′0)·Cx(x′0,y′0)+β(x′0,y′0)·Cy(x′0,y′0)-α(x′2,y′2)·Cx(x′2,y′2)-β(x′2,y′2)·Cy(x′2,y′2)+r2
其中,Cx(x′0,y′0)是x方向加密梯度图像第x′0行第y′0列的像素值,Cy(x′0,y′0)是y方向加密梯度图像第x′0行第y′0列的像素值,Cx(x′1,y′1)是x方向加密梯度图像第x′1行第y′1列的像素值,Cy(x′1,y′1)是y方向加密梯度图像第x′1行第y′1列的像素值,Cx(x′2,y′2)是x方向加密梯度图像第x′2行第y′2列的像素值,Cy(x′2,y′2)是y方向加密梯度图像第x′2行第y′2列的像素值,α(x′0,y′0)是第一符号矩阵第x′0行第y′0列的元素值,α(x′1,y′1)是第一符号矩阵第x′1行第y′1列的元素值,α(x′2,y′2)是第一符号矩阵第x′2行第y′2列的元素值,β(x′0,y′0)是第二符号矩阵第x′0行第y′0列的元素值,β(x′1,y′1)是第二符号矩阵第x′1行第y′1列的元素值,β(x′2,y′2)是第二符号矩阵第x′2行第y′2列的元素值,r1和r2是利用随机数种子生成的随机整数,范围是[-215+1,0)∪(0,215-1],对于不同的元素(x′0,y′0),r1和r2的取值也不同;
第二云服务器按如下方式生成梯度比较的输入:
I2=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′0)-α(x′1,y′1)·Bx(x′1,y′1)-β(x′1,y′1)·By(x′1,y′1)+r1
I4=α(x′0,y′0)·Bx(x′0,y′0)+β(x′0,y′0)·By(x′0,y′1)-α(x′2,y′2)·Bx(x′2,y′2)-β(x′2,y′2)·By(x′2,y′2)+r2
其中,Bx(x′0,y′0)是x方向梯度偏移图像第x′0行第y′0列的像素值,By(x′0,y′0)是y方向梯度偏移图像第x′0行第y′0列的像素值,Bx(x′1,y′1)是x方向梯度偏移图像第x′1行第y′1列的像素值,By(x′1,y′1)是y方向梯度偏移图像第x′1行第y′1列的像素值,Bx(x′2,y′2)是x方向梯度偏移图像第x′2行第y′2列的像素值,By(x′2,y′2)是y方向梯度偏移图像第x′2行第y′2列的像素值;
当flag为真时,第一云服务器按如下方式生成梯度比较的输入:
其中,xMul1(x′0,y′0)为x方向第一乘积矩阵第x′0行第y′0列的元素值,yMul1(x′0,y′0)为y方向第一乘积矩阵第x′0行第y′0列的元素值,xMul1(x′1,y′1)为x方向第一乘积矩阵第x′1行第y′1列的元素值,yMul1(x′1,y′1)为y方向第一乘积矩阵第x′1行第y′1列的元素值,xMul1(x′2,y′2)为x方向第一乘积矩阵第x′2行第y′2列的元素值,yMul1(x′2,y′2)为y方向第一乘积矩阵第x′2行第y′2列的元素值;
第二云服务器按如下方式生成梯度比较的输入:
其中,xMul2(x′0,y′0)为x方向第二乘积矩阵第x′0行第y′0列的元素值,yMul2(x′0,y′0)为y方向第二乘积矩阵第x′0行第y′0列的元素值,xMul2(x′1,y′1)为x方向第二乘积矩阵第x′1行第y′1列的元素值,yMul2(x′1,y′1)为y方向第二乘积矩阵第x′1行第y′1列的元素值,xMul2(x′2,y′2)为x方向第二乘积矩阵第x′2行第y′2列的元素值,yMul2(x′2,y′2)为y方向第二乘积矩阵第x′2行第y′2列的元素值;
如果(x′1,y′1)或(x′2,y′2)不存在,则其在所有上述图像和矩阵中的值为0;
第一云服务器将I1和I3发送给第三云服务器,第二云服务器将I2和I4发送给第三云服务器;
步骤4.9:当flag为假时,第三云服务器将I1与I2进行比较,将将I3与I4进行比较,并按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
当flag为真时,第三云服务器按如下方式生成非极大值抑制结果:
RNMS2(x′0,y′0)=r
其中,RNMS1(x′0,y′0)为非极大值抑制第一加密结果图像第x′0行第y′0列的像素值,RNMS2(x′0,y′0)为非极大值抑制第二加密结果图像第x′0行第y′0列的像素值,Rlow1(x′0,y′0)为低阈值检验第一加密结果图像第x′0行第y′0列的像素值,Rlow2(x′0,y′0)为低阈值检验第二加密结果图像第x′0行第y′0列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
步骤4.10:对于每一个像素(x′,y′),当flag为假时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
I1=α(x′,y′)·Cx(x′,y′)+β(x′,y′)·Cy(x′,y′)-Hc
I2=α(x′,y′)·Bx(x′,y′)+β(x′,y′)·By(x′,y′)-Hb
其中,Cx(x′,y′)是x方向加密梯度图像第x′行第y′列的像素值,Cy(x′,y′)是y方向加密梯度图像第x′行第y′列的像素值,Bx(x′,y′)是x方向梯度偏移图像第x′行第y′列的像素值,By(x′,y′)是y方向梯度偏移图像第x′行第y′列的像素值,α(x′,y′)是第一符号矩阵第x′行第y′列的元素值,β(x′,y′)是第二符号矩阵第x′行第y′列的元素值,Hc是加密高阈值,Hb是高阈值偏移量;
当flag为真时,第一云服务器和第二云服务器分别按如下方式生成高阈值检验的输入:
其中,xMul1(x′,y′)为x方向第一乘积矩阵第x′行第y′列的元素值,xMul2(x′,y′)为x方向第二乘积矩阵第x′行第y′列的元素值,yMul1(x′,y′)为y方向第一乘积矩阵第x′行第y′列的元素值,yMul2(x′,y′)为y方向第二乘积矩阵第x′行第y′列的元素值,hMul1为高阈值第一乘积,hMul2为高阈值第二乘积;
第一云服务器和第二云服务器分别将I1和I2发送给第三云服务器;
步骤4.11:当flag为假时,第三云服务器按如下方式生成高阈值检验结果:
/>
Rhigh2(x′,y′)=r
当flag为真时,第三云服务器按如下方式生成高阈值检验结果:
Rhigh2(x′,y′)=r
其中,Rhigh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值,RNMS1(x′,y′)为非极大值抑制第一加密结果图像第x′行第y′列的像素值,RNMS2(x′,y′)为非极大值抑制第二加密结果图像第x′行第y′列的像素值,r是第三云服务器产生的随机整数,范围是[0,255];
第三云服务器将Rhigh1发送给第一云服务器,将Rhigh2发送给第二云服务器;
步骤4.12:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,即Rhigh1和Rhigh2中第x′行第y′列的像素值Rhigh1(x′,y′)和Rhigh2(x′,y′)分别被置换为第x行第y列的像素值Rhigh1(x,y)和Rhigh2(x,y),于是高阈值检验第一加密结果图像Rhigh1在第一云服务器上生成,高阈值检验第二加密结果图像Rhigh2在第二云服务器上生成;
以上步骤中,步骤4.1、步骤4.12组成了像素重排序的步骤;
步骤4.2、步骤4.3组成了低阈值检验的计算协议,低阈值检验加密结果图像Rlow1和Rlow2中的所有像素使用SIMD并行执行该计算协议;
步骤4.4至步骤4.6组成了确定梯度方向的计算协议,所有像素使用SIMD并行执行该计算协议;
步骤4.8、步骤4.9组成了梯度比较的计算协议,非极大值抑制加密结果图像RNMS1和RNMS2中的所有像素使用SIMD并行执行该计算协议;
确定梯度方向的计算协议和梯度比较的计算协议组成了非极大值抑制的计算协议;
步骤4.10、步骤4.11组成了高阈值检验的计算协议,高阈值检验加密结果图像Rhigh1和Rhigh2中的所有像素使用SIMD并行执行该计算协议;
步骤4.3采用了安全边缘表示对低阈值检验的结果进行加密;
步骤4.9采用了安全边缘表示对非极大值抑制的结果进行加密;
步骤4.11采用了安全边缘表示对高阈值检验的结果进行加密;
步骤5所述边缘连接以迭代的方式进行,每一轮迭代的步骤如下:
步骤5.1:第一云服务器为高阈值检验第一加密结果图像Rhigh1生成八个相邻图像,每个相邻图像的像素分别是Rhigh1中对应像素的一个相邻像素:
RupperLeft1(x,y)=Rhigh1(x-1,y-1)
Rupper1(x,y)=Rhigh1(x-1,y)
RupperRight1(x,y)=Rhigh1(x-1,y+1)
RLeft1(x,y)=Rhigh1(x,y-1)
RRight1(x,y)=Rhigh1(x,y+1)
RlowerLeft1(x,y)=Rhigh1(x+1,y-1)
Rlower1(x,y)=Rhigh1(x+1,y)
RlowerRight1(x,y)=Rhigh1(x+1,y+1)
其中,RupperLeft1(x,y)为第一左上相邻图像第x行第y列的像素值,Rupper1(x,y)为第一上相邻图像第x行第y列的像素值,RupperRight1(x,y)为第一右上相邻图像第x行第y列的像素值,RLeft1(x,y)为第一左相邻图像第x行第y列的像素值,RRight1(x,y)为第一右相邻图像第x行第y列的像素值,RlowerLeft1(x,y)为第一左下相邻图像第x行第y列的像素值,Rlower1(x,y)为第一下相邻图像第x行第y列的像素值,RlowerRight1(x,y)为第一右下相邻图像第x行第y列的像素值;
如果相邻像素不存在,则用一个[0,255]范围内的随机整数作为其像素值;
第二云服务器也为高阈值检验第二加密结果图像Rhigh2生成八个相邻图像:
RupperLeft2(x,y)=Rhigh2(x-1,y-1)
Rupper2(x,y)=Rhigh2(x-1,y)
RupperRight2(x,y)=Rhigh2(x-1,y+1)
RLeft2(x,y)=Rhigh2(x,y-1)
RRight2(x,y)=Rhigh2(x,y+1)
RlowerLeft2(x,y)=Rhigh2(x+1,y-1)
Rlower2(x,y)=Rhigh2(x+1,y)
RlowerRight2(x,y)=Rhigh2(x+1,y+1)
其中,RupperLeft2(x,y)为第二左上相邻图像第x行第y列的像素值,Rupper2(x,y)为第二上相邻图像第x行第y列的像素值,RupperRight2(x,y)为第二右上相邻图像第x行第y列的像素值,RLeft2(x,y)为第二左相邻图像第x行第y列的像素值,RRight2(x,y)为第二右相邻图像第x行第y列的像素值,RlowerLeft2(x,y)为第二左下相邻图像第x行第y列的像素值,Rlower2(x,y)为第二下相邻图像第x行第y列的像素值,RlowerRight2(x,y)为第二右下相邻图像第x行第y列的像素值;
不存在的相邻像素要用与Rhigh1的相邻图像中相同的随机整数作为像素值;
步骤5.2:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,第一云服务器对高阈值检验第一加密结果图像Rhigh1、第一左上相邻图像RupperLeft1、第一上相邻图像Rupper1、第一右上相邻图像RupperRight1、第一左相邻图像RLeft1、第一右相邻图像RRight1、第一左下相邻图像RlowerLeft1、第一下相邻图像Rlower1、第一右下相邻图像RlowerRight1进行像素重排序,第二云服务器对高阈值检验第二加密结果图像Rhigh2、第二左上相邻图像RupperLeft2、第二上相邻图像Rupper2、第二右上相邻图像RupperRight2、第二左相邻图像RLeft2、第二右相邻图像RRight2、第二左下相邻图像RlowerLeft2、第二下相邻图像Rlower2、第二右下相邻图像RlowerRight2进行像素重排序,假设经过像素重排序后,所有图像中第x行第y列的像素值(x,y)被置换为第x′行第y′列的像素值(x′,y′);
两台云服务器将所有图像的像素值加上一个相同的[0,255]范围内的随机整数后,将所有图像发送给第三云服务器;
步骤5.3:第三云服务器利用安全边缘表示的原理,根据高阈值检验加密结果图像Rhigh1和Rhigh2中对应像素值的关系判断每一个像素(x′,y′)的类型,Rhigh1和Rhigh2中的像素满足如下三种关系:
Rhigh1(x′,y′)-Rhigh2(x′,y′)=-1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=1
Rhigh1(x′,y′)-Rhigh2(x′,y′)=0
其中,Rhigh1(x′,y′)为高阈值检验第一加密结果图像第x′行第y′列的像素值,Rhigh2(x′,y′)为高阈值检验第二加密结果图像第x′行第y′列的像素值;
满足第一种关系,则像素(x′,y′)为强边缘像素;
满足第二种关系,则像素(x′,y′)为弱边缘像素;
满足第三种关系,则像素(x′,y′)为非边缘像素;
第三云服务器根据左上相邻图像RupperLeft1和RupperLeft2、上相邻图像Rupper1和Rupper2、右上相邻图像RupperRight1和RupperRight2、左相邻图像RLeft1和RLeft2、右相邻图像RRight1和RRight2、左下相邻图像RlowerLeft1和RlowerLeft2、下相邻图像Rlower1和Rlower2、右下相邻图像RlowerRight1和RlowerRight2中对应像素的关系判断像素(x′,y′)的每一个相邻像素的类型;
如果一个弱边缘像素(x′,y′)的相邻像素中至少存在一个强边缘像素,则第三云服务器将像素(x′,y′)转换为强边缘像素,否则像素(x′,y′)类型不变,但是改变高阈值检验加密结果图像Rhigh1和Rhigh2中用于表示该像素灰度值的随机数,强边缘像素和非边缘像素同样只改变像素值,不改变类型;
所有像素转换完成后,第三云服务器将高阈值检验加密结果图像Rhigh1和Rhigh2分别发送给第一云服务器和第二云服务器;
步骤5.4:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复高阈值检验第一加密结果图像Rhigh1和高阈值检验第二加密结果图像Rhigh2中像素的顺序,并将这两个图像作为下一轮迭代的输入;
以上步骤中,步骤5.1、步骤5.3只针对单个像素,高阈值检验加密结果图像Rhigh1和Rhigh2及其相邻图像中的所有像素使用SIMD并行执行这两步;
迭代过程直到没有弱边缘像素转换为强边缘像素时结束,边缘连接结束时,第一云服务器和第二云服务器分别保存边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2,Rcon1和Rcon2采用了安全边缘表示对边缘连接的结果进行加密;
步骤5所述孤立点抑制的步骤如下:
步骤5.5:第一云服务器和第二云服务器生成相同的行号矩阵Rows和列号矩阵Cols,分别对边缘连接第一加密结果图像Rcon1和边缘连接第二加密结果图像Rcon2进行像素重排序,假设经过像素重排序后,边缘连接加密结果图像Rcon1和Rcon2中第x行第y列的像素值Rcon1(x,y)和Rcon2(x,y)分别被置换为第x′行第y′列的像素值Rcon1(x′,y′)和Rcon2(x′,y′);
两台云服务器将边缘连接加密结果图像Rcon1和Rcon2中的所有像素加上一个相同的[0,255]范围内的随机整数,并发送给第三云服务器;
步骤5.6:第三云服务器根据安全边缘表示的原理判断边缘连接加密结果图像Rcon1和Rcon2中每一个像素(x′,y′)的类型,将Rcon1和Rcon2中所有的弱边缘像素转换为非边缘像素,其余像素只改变像素值,不改变类型,得到孤立点抑制加密结果图像Rsup1和Rsup2,将孤立点抑制第一加密结果图像Rsup1返回给第一云服务器,将孤立点抑制第二加密结果图像Rsup2返回给第二云服务器;
步骤5.7:第一云服务器和第二云服务器用行号矩阵Rows和列号矩阵Cols恢复孤立点抑制加密结果图像Rsup1和Rsup2中像素的顺序,即Rsup1和Rsup2中第x′行第y′列的像素值Rsup1(x′,y′)和Rsup2(x′,y′)分别被置换为第x行第y列的像素值Rsup1(x,y)和Rsup2(x,y),于是第一云服务器和第二云服务器分别保存孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2;
以上步骤中,步骤5.6只针对单个像素,边缘连接加密结果图像Rcon1和Rcon2中的所有像素使用SIMD并行执行这一步;
步骤5.7中,孤立点抑制加密结果图像Rsup1和Rsup2采用了安全边缘表示对孤立点抑制的结果进行加密。
2.根据权利要求1所述的基于隐私保护Canny边缘检测系统的边缘检测方法,其特征在于:
步骤6所述客户端解密得到Canny边缘检测的结果为:
第一云服务器和第二云服务器分别将孤立点抑制第一加密结果图像Rsup1和孤立点抑制第二加密结果图像Rsup2发送给客户端,客户端按照如下方式进行解密:
R=Rsup1-Rsup2
其中,R为隐私保护Canny边缘检测的结果图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011408336.3A CN112509070B (zh) | 2020-12-04 | 2020-12-04 | 一种隐私保护Canny边缘检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011408336.3A CN112509070B (zh) | 2020-12-04 | 2020-12-04 | 一种隐私保护Canny边缘检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112509070A CN112509070A (zh) | 2021-03-16 |
CN112509070B true CN112509070B (zh) | 2024-04-05 |
Family
ID=74971578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011408336.3A Active CN112509070B (zh) | 2020-12-04 | 2020-12-04 | 一种隐私保护Canny边缘检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112509070B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113870120B (zh) * | 2021-12-07 | 2022-03-01 | 领伟创新智能系统(浙江)有限公司 | 一种基于pq-mean分布的加工表面纹理倾斜校正方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247913A (zh) * | 2019-06-18 | 2019-09-17 | 电子科技大学 | 一种支持矩阵零元素隐私保护的安全矩阵乘法外包方法 |
CN111654700A (zh) * | 2020-06-19 | 2020-09-11 | 杭州海康威视数字技术股份有限公司 | 一种隐私遮蔽处理方法、装置、电子设备及监控系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110081087A1 (en) * | 2009-10-02 | 2011-04-07 | Moore Darnell J | Fast Hysteresis Thresholding in Canny Edge Detection |
JP6634936B2 (ja) * | 2016-04-05 | 2020-01-22 | 富士通株式会社 | 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法、画像復号プログラムおよび画像伝送システム |
AU2016273973A1 (en) * | 2016-12-16 | 2018-07-05 | Canon Kabushiki Kaisha | Transcode PCL delta-row compressed image to edges |
-
2020
- 2020-12-04 CN CN202011408336.3A patent/CN112509070B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247913A (zh) * | 2019-06-18 | 2019-09-17 | 电子科技大学 | 一种支持矩阵零元素隐私保护的安全矩阵乘法外包方法 |
CN111654700A (zh) * | 2020-06-19 | 2020-09-11 | 杭州海康威视数字技术股份有限公司 | 一种隐私遮蔽处理方法、装置、电子设备及监控系统 |
Non-Patent Citations (1)
Title |
---|
《一种基于多特征的距离正则化水平集快速分割方法》;于海平;《电子学报》;20170331;第45卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112509070A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wu et al. | Color image encryption based on chaotic systems and elliptic curve ElGamal scheme | |
Ghebleh et al. | An image encryption scheme based on irregularly decimated chaotic maps | |
Kanso et al. | An efficient (t, n)–threshold secret image sharing scheme | |
Jeevitha et al. | Novel medical image encryption using DWT block-based scrambling and edge maps | |
Hussain et al. | Image encryption based on Chebyshev chaotic map and S8 S-boxes | |
Rakesh et al. | Image encryption using block based uniform scrambling and chaotic logistic mapping | |
Tang et al. | Image encryption based on random projection partition and chaotic system | |
CN112509070B (zh) | 一种隐私保护Canny边缘检测方法 | |
Agilandeeswari et al. | RST invariant robust video watermarking algorithm using quaternion curvelet transform | |
Jiang et al. | Encrypted images-based reversible data hiding in Paillier cryptosystem | |
Gu et al. | Federated deep learning with Bayesian privacy | |
Hosny et al. | Reversible color image watermarking using fractional-order polar harmonic transforms and a chaotic sine map | |
Zhang et al. | An efficient and adaptive data-hiding scheme based on secure random matrix | |
Ramírez-Torres et al. | Image encryption with an improved cryptosystem based on a matrix approach | |
Ganesan et al. | Image encryption using eight dimensional chaotic cat map | |
Li et al. | Medical images lossless recovery based on POB number system and image compression | |
Chattopadhyay et al. | A verifiable (n, n) secret image sharing scheme using XOR operations | |
Niu et al. | Image steganography via fully exploiting modification direction | |
Kosuru et al. | Digital Image Steganography with Error Correction on Extracted Data | |
Kankonkar et al. | Image security using image encryption and image stitching | |
Raghuvanshi et al. | Development of new encryption system using Brownian motion based diffusion | |
CN110516461B (zh) | 多通道图像加密方法、装置、存储介质及电子设备 | |
Sarma et al. | Digital image scrambling based on sequence generation | |
Rakesh et al. | Multilevel image encryption | |
Jiang et al. | A scrambling and encryption algorithm for selective block of identification photo |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |