1
所以我用MATLAB的bwdist
函数来获得二值图像的距离变换。我的问题是,如何将带符号的距离矩阵转换回二进制图像?如何将带符号的距离函数恢复为二值图像?
D = bwdist(BW)
具体来说,就是有一个转换,它可以去从后面BW
- >D
?
所以我用MATLAB的bwdist
函数来获得二值图像的距离变换。我的问题是,如何将带符号的距离矩阵转换回二进制图像?如何将带符号的距离函数恢复为二值图像?
D = bwdist(BW)
具体来说,就是有一个转换,它可以去从后面BW
- >D
?
如果D = bwdist(BW)
,BW0 = D<=0
怎么样?
考虑从bwdist
documentation第一个例子:
bw = zeros(5,5); bw(2,2) = 1; bw(4,4) = 1
bw =
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 0
[D,IDX] = bwdist(bw)
D =
1.4142 1.0000 1.4142 2.2361 3.1623
1.0000 0 1.0000 2.0000 2.2361
1.4142 1.0000 1.4142 1.0000 1.4142
2.2361 2.0000 1.0000 0 1.0000
3.1623 2.2361 1.4142 1.0000 1.4142
要拿回你的二值图像,你只是想在距离积分变换都等于零(即在在一个非零像素原始的bw
):
>> bw0 = D<=0
bw0 =
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 0
>> isequal(bw,bw0)
ans =
1
由于它是一个带符号的距离转换,所以您希望距离转换中**小于或等于零的点。零像素将只给你连接组件的边缘。 – Papouh
好点。快速的答案...感谢您的更正。 – chappjc