感兴趣的区域定义算法
2视图(30天)
显示旧的评论
我试图建立一个算法,可以探测粒子的边缘。从一个点和函数附加itterates径向outword检测如果每个位置localmaximum或超过一个阈值。如附件所示图像这应该允许独立的代码识别数据矩阵中的每一个低点的边缘。
的问题我和我现在的代码,因为它迭代和径向向外是非常耗时的。谁能建议更好的东西吗?
我还附加了一些示例数据:
函数[S_boarderx, S_boardery Board_val] = shadowedge (im, shadowx,影子,R, dirmax,用力推,PM)
党卫军=我;
[dimx, dimy] =大小(党卫军,1,2);
xx = shadowx;
yy =阴影;
shadow_loc = sub2ind ([dimx dimy], xx, yy);
shadow_Val = SS (shadow_loc);
thres_val = shadow_Val + shadow_Val *刺;
为t = 1: dirmax
为j = 1: R
θ=(2 *π* t) / dirmax;
Sx = xx +圆(j * cos(θ));
Sy = yy +圆(j * sin(θ));
Sx (Sx < = 1) = 2;
Sy (Sy < = 1) = 2;
Sx (Sx > = dimx-1) = dimx-1;
Sy (Sy > = dimy-1) = dimy-1;
val = SS (sub2ind ([dimx dimy], Sx, Sy));
如果val > = thres_val
:S_boarderx (t) = Sx;
:S_boardery (t) = Sy;
打破
elseifsum (sub2ind ([dimx dimy], Sx, Sy) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx + 1, Sy + 1) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx + 1, Sy) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx, Sy + 1) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx-1, Sy-1) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx-1, Sy) = =找到(islocalmax(党卫军,“MinProminence”,PM)))…
| |总和(sub2ind ([dimx dimy], Sx, Sy-1) = =找到(islocalmax(党卫军,“MinProminence”,PM)))
:S_boarderx (t) = Sx;
:S_boardery (t) = Sy;
打破
其他的
:S_boarderx (t) = Sx;
:S_boardery (t) = Sy;
结束
结束
结束
Board_loc = sub2ind ([dimx dimy], S_boarderx (:), S_boardery (:));
Board_val = SS (Board_loc);