用sobel,canny算子都可以提取出边缘;
提取出边缘再进行im2bw二值化,得到二值化后的0,1图像;
1的图像本质上是由离散的点构成,将离散的点的x,y坐标找出,
可以用find命令,例如[x,y]=find(I==1);
最后用cftool曲线拟合工具箱,拟合出所有的x,y的坐标点;
大致这么个思路,往这方面使劲,基本上就可以搞定
2编写mexfunction函数。mexfunction函数为C语言与MATLAB语言的接口函数。调用实例在mylinedetectc文件中在MATLAB中调用mex指令编译相关文件,将C语言编译为MEX文件。
3编译完成后,生成mylinedetectmexw32或mylinedetectmexw64文件,此文件即mex文件,用于MATLAB与C语言接口函数
4编译完成之后,编写MATLAB函数,调用MEX文件。以MEX文件的形式调用编译完成的C语言函数[o1,o2]=mylinedetect(double(X)');
5输出结果,上述linedetect函数完成图像中直线检测功能,带入MATLAB中调用后形成结果。
这个很容易吧,比如已知该直线上两个坐标A、B,全站仪架B点后视A点,把水平角置零,然后再照其它任意点,如果水平角读数为180度,那就在一条直线。否则,不在该直线上!
坐标上来说啊,那就看你全站仪里有没有三点共线检测的程序了吧,要不你还想手算?
楼上提供方法可以啊,赞同!
以上就是关于matlab中如何把边缘检测出来的图像进行直线拟合全部的内容,包括:matlab中如何把边缘检测出来的图像进行直线拟合、请问,如何实现图中波形,MATLAB或者Python或者C语言、全站仪 测量 已经知道一直线的两个坐标,怎么测任意点是否在这条直线上等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)