Page 98 - 《软件学报》2026年第6期
P. 98
肖欣怡 等: 恶意敌手环境下的隐私保护目标检测 2417
4.2 安全最近邻插值算法
SNNI 算法通过将目标特征图中每个像素点的特征值设置为与其最近的源密文特征图像素点的值, 实现了特
(dstH,dstW) 的目标特征图中的像素点的坐标为
征图的放缩, 为采样提供了一种简单快速的近似方法. 设尺寸为
′ ′
(x ,y ); 其在大小为 (srcH,srcW) 的源密文特征图中, 对应的采样点坐标记作 (x,y). 则其对应关系如下:
′
x = x ×(srcW/dstW), y = y ×(srcH/dstH) (3)
′
在 SNNI 算法中, 每个服务器输入源密文特征图的秘密份额, 即 [F] 0 、 [F] 1 、[F] 2 和 [F] 3 . 由于目标特征图的尺
寸 (dstH,dstW) 是公开的, 所有服务器均可根据公式 (3) 独立计算采样点的映射索引, 并输出放缩后的密文特征图,
(dstH,dstW). SNNI 算法如算法 2 所示. 该算法本质是对本地秘密份额的重排与复制, 不涉及任何需多方
其尺寸为
交互的计算 (如安全乘法或比较). 因此, SNNI 属于完全的本地操作, 其通信开销为 0.
算法 2. 安全最近邻插值: SNNI 算法.
输入: S 0 持有 [F] 0 S 1 持有 [F] 1 S 2 持有 [F] 2 S 3 持有 [F] 3 , 目标特征图大小 (dstH,dstW);
,
,
,
′
′
,
′
输出: S 0 获取 [F ] 0 S 1 获取 [F ] 1 S 2 获取 [F ] 2 S 3 获取 [F ] 3 .
,
,
′
1. 获取 [F] 的尺寸 (srcH,srcW)
2. r x = srcW/dstW, r y = srcH/dstH
3. for x = 1 to dstW do
′
4. for y = 1 to dstH do
′
′ , ′
5. x = x ×r x y = y ×r y
6 . S 0 、 S 1 、 S 2 、 S 3 分 别 计 算 [F ] F ′(0) (x ,y )=F (x,y) F ′(1) (x ,y )=F (x,y) F ′(2) (x ,y )=F (x,y) F ′(3) (x ,y )=F (x,y)
(0)
,
,
:
(2)
(3)
(1)
,
′
′
′
′
′
′
′
′
′
7. end for
8. end for
4.3 安全双线性插值
双线性插值算法通过计算目标点周围 4 个像素的加权平均值来放缩图像, 从而确保平滑过渡. 设目标点坐标
为 (x, y), 给定其 4 个相邻点的像素值 f(x 1 ,y 1 )、 f(x 2 ,y 1 )、 f(x 1 ,y 2 ) 和 f(x 2 ,y 2 ), 其中 x 1 ⩽ x ⩽ x 2 且 y 1 ⩽ y ⩽ y 2 , 计算
公式如下:
x 2 − x x− x 1
f(x,y 1 ) = f(x 1 ,y 1 )+ f(x 2 ,y 1 ) (4)
x 2 − x 1 x 2 − x 1
x 2 − x x− x 1
f(x,y 2 ) = f(x 1 ,y 2 )+ f(x 2 ,y 2 ) (5)
x 2 − x 1 x 2 − x 1
y 2 −y y−y 1
f(x,y) = f(x,y 1 )+ f(x,y 2 ) (6)
y 2 −y 1 y 2 −y 1
)
在 SBI 算法中, 各个服务器 S i 输入特征图 F 和目标点坐标 (x,y) 的秘密份额 ( [F] i ,[x] i ,[y] , 调用两次 Π SFloor 和
i
两次 SCeil 来计算相邻像素坐标值的秘密份额; 同时, 为了索引特征图, 必须对坐标进行重构从而引入了公开通信.
随后, 根据公式 (4)–(6), 通过 Π SMult 计算 [ f(x,y)], 得到 (x,y) 处插值计算结果的输出份额. 特别地, 公式涉及定点数
r
密文乘法, 每执行一次 Π SMult 均需进行通信以完成数值截断. 当采样频率为 时, SBI 算法计算 r×r 个采样点的平均
像素值作为目标像素点的插值计算结果. 采样率为 r 的 SBI 算法详见算法 3.
算法 3. 安全双线性插值: SBI 算法.
,
,
输入: S 0 持有 ([F] 0 ,[x] 0 ,[y] ) S 1 持有 ([F] 1 ,[x] 1 ,[y] ) S 2 持有 ([F] 2 ,[x] 2 ,[y] ) S 3 持有 ([F] 3 ,[x] 3 ,[y] ), 采样频率 r;
,
0
2
3
1
输出: S 0 获取 [ f] S 1 获取 [ f] S 2 获取 [ f] S 3 获取 [ f] .
,
,
,
0 1 2 3
,
1. 初始化: f (0) = 0 f , (1) = 0 f , (2) = 0 f , (3) = 0 total_r = r×r

