Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解

gelsight

gelsight传感器具有软弹性体的接触表面,可以精确的重建物体形状还可以从传感器的变形推断接触力和滑动.

在这里插入图片描述
在这里插入图片描述

使用 DST-II 算子的快速泊松求解 height

文章:GelSight: High-Resolution Robot Tactile Sensors for Estimating Geometry and Force

在这里插入图片描述
在这里插入图片描述

文章最后求解的方程其实是: p = ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 p=\frac{\partial^2 u}{\partial x^2}+\frac{\partial^2 u}{\partial y^2} p=x22u+y22u, u 是我们要重建的高度图. p是以知的,是u两个二阶导数的和.

在离散域下, 某个像素点处, ∂ 2 u ( i , j ) ∂ x 2 \frac{\partial^2 u(i,j)}{\partial x^2} x22u(i,j) 可以写成 u ( i + 1 , j ) − u ( i , j ) − [ u ( i , j ) − u ( i − 1 , j ) ] △ x 2 \frac{u(i+1,j)-u(i,j)-[u(i,j)-u(i-1,j)]}{\triangle x^2} x2u(i+1,j)u(i,j)[u(i,j)u(i1,j)],同样 ∂ 2 u ( i , j ) ∂ y 2 \frac{\partial^2 u(i,j)}{\partial y^2} y22u(i,j) 可以写成 u ( i , j + 1 ) − u ( i , j ) − [ u ( i , j ) − u ( i , j − 1 ) ] △ y 2 \frac{u(i,j+1)-u(i,j)-[u(i,j)-u(i,j-1)]}{\triangle y^2} y2u(i,j+1)u(i,j)[u(i,j)u(i,j1)]

故而可以有: p i , j = u ( i + 1 , j ) − u ( i , j ) − [ u ( i , j ) − u ( i − 1 , j ) ] △ x 2 + u ( i , j + 1 ) − u ( i , j ) − [ u ( i , j ) − u ( i , j − 1 ) ] △ y 2 p_{i,j}=\frac{u(i+1,j)-u(i,j)-[u(i,j)-u(i-1,j)]}{\triangle x^2}+\frac{u(i,j+1)-u(i,j)-[u(i,j)-u(i,j-1)]}{\triangle y^2} pi,j=x2u(i+1,j)u(i,j)[u(i,j)u(i1,j)]+y2u(i,j+1)u(i,j)[u(i,j)u(i,j1)]

引入DST-II: 单个方向的 DST 这样定义 Y k = 2 ∑ i = 0 N − 1 x i s i n ( π ( i + 1 / 2 ) ( k + 1 ) N ) Y_k=2\sum^{N-1}_{i=0}x_isin(\frac{\pi(i+1/2)(k+1)}{N}) Yk=2i=0N1xisin(Nπ(i+1/2)(k+1))

将DST带入上一条式子可以有: u ~ \tilde u u~ u u u 的DST

u ( i , j ) = 4 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 u ~ ( k i , k j ) s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) u(i,j)=4\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde u(k_i,k_j)sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) u(i,j)=4ki=0Nx1kj=0Ny1u~(ki,kj)sin(Nxπ(i+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))

u ( i − 1 , j ) = 4 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 u ~ ( k i , k j ) s i n ( π ( i − 1 + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) u(i-1,j)=4\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde u(k_i,k_j)sin(\frac{\pi(i-1+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) u(i1,j)=4ki=0Nx1kj=0Ny1u~(ki,kj)sin(Nxπ(i1+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))

u ( i + 1 , j ) = 4 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 u ~ ( k i , k j ) s i n ( π ( i + 1 + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) u(i+1,j)=4\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde u(k_i,k_j)sin(\frac{\pi(i+1+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) u(i+1,j)=4ki=0Nx1kj=0Ny1u~(ki,kj)sin(Nxπ(i+1+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))

将上面三个结果代入 u ( i + 1 , j ) − u ( i , j ) − [ u ( i , j ) − u ( i − 1 , j ) ] △ x 2 \frac{u(i+1,j)-u(i,j)-[u(i,j)-u(i-1,j)]}{\triangle x^2} x2u(i+1,j)u(i,j)[u(i,j)u(i1,j)], 得到:

4 △ x 2 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 u ~ ( k i , k j ) λ x i s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) \frac{4}{\triangle x^2}\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde u(k_i,k_j)\lambda_{x_i} sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) x24ki=0Nx1kj=0Ny1u~(ki,kj)λxisin(Nxπ(i+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))    (1)

其中 λ x i = 2 ∗ [ cos ⁡ ( π ( k i + 1 ) N x ) − 1 ] \lambda_{x_i}=2*[\cos(\frac{\pi(k_i+1)}{N_x})-1] λxi=2[cos(Nxπ(ki+1))1]

注: s i n ( π ( i + 1 + 1 / 2 ) ( k i + 1 ) N x ) + s i n ( π ( i − 1 + 1 / 2 ) ( k i + 1 ) N x ) − 2 ∗ s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) = sin ⁡ ( π ( k i + 1 ) N x ) cos ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) + cos ⁡ ( π ( k i + 1 ) N x ) sin ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) − sin ⁡ ( π ( k i + 1 ) N x ) cos ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) + cos ⁡ ( π ( k i + 1 ) N x ) sin ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) − 2 ∗ s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) = 2 ∗ [ cos ⁡ ( π ( k i + 1 ) N x ) − 1 ] ∗ sin ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) = λ x i ∗ sin ⁡ ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) sin(\frac{\pi(i+1+1/2)(k_i+1)}{N_x})+sin(\frac{\pi(i-1+1/2)(k_i+1)}{N_x})-2*sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})\\ =\sin(\frac{\pi(k_i+1)}{N_x})\cos(\frac{\pi(i+1/2)(k_i+1)}{N_x})+\cos(\frac{\pi(k_i+1)}{N_x})\sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})\\ -\sin(\frac{\pi(k_i+1)}{N_x})\cos(\frac{\pi(i+1/2)(k_i+1)}{N_x})+\cos(\frac{\pi(k_i+1)}{N_x})\sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})\\ -2*sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})\\ =2*[\cos(\frac{\pi(k_i+1)}{N_x})-1]*\sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})\\ =\lambda_{x_i}*\sin(\frac{\pi(i+1/2)(k_i+1)}{N_x}) sin(Nxπ(i+1+1/2)(ki+1))+sin(Nxπ(i1+1/2)(ki+1))2sin(Nxπ(i+1/2)(ki+1))=sin(Nxπ(ki+1))cos(Nxπ(i+1/2)(ki+1))+cos(Nxπ(ki+1))sin(Nxπ(i+1/2)(ki+1))sin(Nxπ(ki+1))cos(Nxπ(i+1/2)(ki+1))+cos(Nxπ(ki+1))sin(Nxπ(i+1/2)(ki+1))2sin(Nxπ(i+1/2)(ki+1))=2[cos(Nxπ(ki+1))1]sin(Nxπ(i+1/2)(ki+1))=λxisin(Nxπ(i+1/2)(ki+1))

同样的可以得到 u ( i , j + 1 ) − u ( i , j ) − [ u ( i , j ) − u ( i , j − 1 ) ] △ y 2 \frac{u(i,j+1)-u(i,j)-[u(i,j)-u(i,j-1)]}{\triangle y^2} y2u(i,j+1)u(i,j)[u(i,j)u(i,j1)] 对应的 4 △ y 2 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 u ~ ( k i , k j ) λ y j s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) \frac{4}{\triangle y^2}\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde u(k_i,k_j)\lambda_{y_j} sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) y24ki=0Nx1kj=0Ny1u~(ki,kj)λyjsin(Nxπ(i+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))    (2)

其中 λ y j = 2 ∗ [ cos ⁡ ( π ( k j + 1 ) N y ) − 1 ] \lambda_{y_j}=2*[\cos(\frac{\pi(k_j+1)}{N_y})-1] λyj=2[cos(Nyπ(kj+1))1]

对于 p i , j p_{i,j} pi,j ,也可以使用DST:
p ( i , j ) = 4 ∑ k i = 0 N x − 1 ∑ k j = 0 N y − 1 p ~ ( k i , k j ) s i n ( π ( i + 1 / 2 ) ( k i + 1 ) N x ) s i n ( π ( j + 1 / 2 ) ( k j + 1 ) N y ) p(i,j)=4\sum^{N_x-1}_{k_i=0}\sum^{N_y-1}_{k_j=0}\tilde p(k_i,k_j)sin(\frac{\pi(i+1/2)(k_i+1)}{N_x})sin(\frac{\pi(j+1/2)(k_j+1)}{N_y}) p(i,j)=4ki=0Nx1kj=0Ny1p~(ki,kj)sin(Nxπ(i+1/2)(ki+1))sin(Nyπ(j+1/2)(kj+1))    (3)

由 (3)=(1)+(2) 可以有: p ~ ( k i , k j ) = [ λ x i △ x 2 + λ y j △ y 2 ] u ~ ( k i , k j ) \tilde p(k_i,k_j)=[\frac{\lambda_{x_i}}{\triangle x^2}+\frac{\lambda_{y_j}}{\triangle y^2}]\tilde u(k_i,k_j) p~(ki,kj)=[x2λxi+y2λyj]u~(ki,kj)

所以 u ~ ( k i , k j ) = p ~ ( k i , k j ) / [ λ x i △ x 2 + λ y j △ y 2 ] \tilde u(k_i,k_j)=\tilde p(k_i,k_j) / [\frac{\lambda_{x_i}}{\triangle x^2}+\frac{\lambda_{y_j}}{\triangle y^2}] u~(ki,kj)=p~(ki,kj)/[x2λxi+y2λyj], 得到 u ~ ( k i , k j ) \tilde u(k_i,k_j) u~(ki,kj) 后在反求 IDST 就可以得到 u ( k i , k j ) u(k_i,k_j) u(ki,kj)

实际做法

文章求解高度时构建了像素强度I到放射率R的映射关系,称为lookup table,用于存放图像的两个一阶梯度 (还有一些其他的参数), 一阶梯度相减得到二阶梯度

	% Laplacian
	gyy(j+1,k) = gy(j+1,k) - gy(j,k);
	gxx(j,k+1) = gx(j,k+1) - gx(j,k);

得到p

    p = gxx + gyy; 

p的DST-II

    tt = dst(p2); 
	p2sin = dst(tt')';

p ~ ( k i , k j ) / [ λ x i △ x 2 + λ y j △ y 2 ] \tilde p(k_i,k_j) / [\frac{\lambda_{x_i}}{\triangle x^2}+\frac{\lambda_{y_j}}{\triangle y^2}] p~(ki,kj)/[x2λxi+y2λyj]

    denom = (2*cos(pi*x/(xdim-1))-2) + (2*cos(pi*y/(ydim-1)) - 2);

	p3 = p2sin./denom; 

反求 IDST 就可以得到 u ( k i , k j ) u(k_i,k_j) u(ki,kj)

    hh = idst(p3); img_tt = idst(hh')'; 

在这里插入图片描述
参考:
Fast-Poisson-Equation-Solver-using-DCT

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y (O - O) Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值