永发信息网

急求对一条曲线进行以顺时针或逆时针方向进行扫描进行检测的Matlab代码

答案:1  悬赏:60  手机版
解决时间 2021-05-15 17:19
  • 提问者网友:niaiwoma
  • 2021-05-15 03:23

有一个二值图像,图中有一条单像素宽度的数字曲线,将此曲线以顺时针或逆时针方向进行扫描进行检测(起始点自己确定)。

要求:(1) 给出你所确定的扫描起始像素点的像素坐标以及你的扫描检测方向;

(2) 给出一个检测算法,能将此数字曲线上的像素点从起始点开始按检测方向依次检测出。

(3) 给出由你的算法依次检测出的数字曲线上的像素点的像素坐标矩阵。

(4) 求此数字曲线的长度以及其所包围的区域的面积。

最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-05-15 04:48
首先过三点拟合圆 在再画出圆弧 过三点拟合圆的程序参见 http://www.matlabsky.com/thread-290-1-1.html 下面举个例子吧,比如给出三点A(1,2) B(5,6) C(3,5) %by dynamic %see also http://www.matlabsky.com %2009.2.19 % %根据三点逆时针绘制圆弧 A=[1 2]; B=[5 6]; C=[3 5]; [c,r]=calcCircle(A,B,C); %这里需要用到上面的那个函数 http://www.matlabsky.com/thread-290-1-1.html a=c(1); b=c(2); th=[A;B;C]; th2=[th(:,1)-a th(:,2)-b]; theta=atan2(th2(:,2),th2(:,1)); [theta_max,num_max]=max(theta); [theta_min,num_min]=min(theta); t=linspace(theta_min,theta_max,100); %t=0:0.1:2*pi; a=c(1); b=c(2); x=r*cos(t)+a; y=r*sin(t)+b; plot(x,y,'r-',th(:,1),th(:,2),'o') axis equal0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯