请问matlab中这个函数是什么意思啊?

cdcc1111 2012-02-13 09:13:28
这是我做主动轮廓matlab中的一个函数不太懂是什么意思?
function phi = mask2phi(init_a)
phi=bwdist(init_a)-bwdist(1-init_a)+im2double(init_a)-.5;
...全文
810 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2012-02-14
  • 打赏
  • 举报
回复
bwdist是距离变换函数,如果不提供第二参数method,默认计算二值图中当前像素点与最近的非0像素点的距离,并返回与原二值图同大小的结果矩阵,如果返回值指定为2个,第二返回值是与当前位置最近的非0像素的一维坐标(列优先存储).

给个例子如下:

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,L] = 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

L =
7 7 7 7 7
7 7 7 7 19
7 7 7 19 19
7 7 19 19 19
7 19 19 19 19


再来看你的函数:
function phi = mask2phi(init_a)
phi=bwdist(init_a)-bwdist(1-init_a)+im2double(init_a)-.5;

bwdist对于输入参数求二值距离变换1,
然后1-init_a取反,求距离变换2
将距离矩阵1与2作差后,加上原二值图-0.5.可以想象,原二值图本来像素值非0即1,减去0.5之后就是-0.5或者0.5.
im2double的作用是不改变值域的情况下将输入图(默认二值图是binary矩阵)转换为double格式,因为matlab中要参与运算的矩阵必须是double类型

上面就是这个函数的意义和过程,不清楚这个函数的理论何来.
写matlab程序,探讨matlab图像处理,可加q: 790404545

3,422

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧