多边形宽度和中心线

69(30天)
朱尔斯雷
朱尔斯雷 2012年7月12日
大家好,我处理一个头断路器的想法……
我有.shp多边形与一个细长的形状像一条蛇,与可变宽度(大象像一条蛇,吃)。
我想获得中心线和蛇的宽度多边形每一点的中心线。我是想把蛇多边形分割成不同的子多边形extrac在每一个和确定中心线。但我lazzy。
不是我认为更好的方法可以提取一个连续数据的一半宽度沿中心线多边形,不用无聊的配置文件,但是用一个矩阵(光栅)。
最近我改变了蛇蛇光栅在arcgis多边形,所以我有一个光栅.asc格式的区域只有一个值(0)为蛇,NoData后休息。
我现在要计算缓冲区使用这个脚本:
但我不现在如何继续,我必须创建一个补的蛇光栅计算缓冲区可能吗?。但我卡住了……我不知道如何去做。
有人能给我一个想法或链接到其他男人也有类似的问题?

接受的答案

马克·海华斯
马克·海华斯 2012年7月12日
一件容易的事。从一个二进制图像…
  1. 使用bwmorph()的骨架。
  2. 使用bwdist()让中心线的距离优势。
  3. 然后相乘得到每一点的中心线在中心线的距离优势。
就像3行代码。
1评论
朱尔斯雷
朱尔斯雷 2012年7月13日
听起来pretti有趣. .但是我不太熟悉这种在matlab处理…你能包括这行代码试试……
和非常感谢你的帮助

登录置评。

答案(1)

图像分析
图像分析 2012年7月13日
这是字面上只有3简单的线条,做他说他告诉你使用的功能。然而,这里有一个全面的为你演示。超过3行因为我把在阅读评论和东西演示图像并显示中间步骤。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字。
清晰;%擦掉所有现有的变量。
工作空间;%确定工作区面板显示。
字形大小= 20;
%检查用户安装图像处理工具箱。
hasIPT =许可证(“测试”,“image_toolbox”);
如果~ hasIPT
%用户没有安装工具箱。
消息= sprintf (“对不起,但是你似乎没有图像处理工具箱。\你想继续的?”);
= questdlg(回复消息,“工具箱失踪”,“是的”,“不”,“是的”);
如果strcmpi(回答,“不”)
%的用户说不,所以退出。
返回;
结束
结束
%读入一个标准的MATLAB灰度图像演示。
文件夹= fullfile (matlabroot,“\工具箱\ \ imdemos图像”);
baseFileName =“circles.png”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
%检查文件是否存在。
如果~存在(fullFileName“文件”)
%文件不存在,没有发现它。检查它的搜索路径。
fullFileName = baseFileName;%没有路径。
如果~存在(fullFileName“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (的错误:% s在搜索路径的文件夹不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
binaryImage = imread (fullFileName);
%填补
binaryImage = imfill (binaryImage,“黑洞”);
%显示原始灰度图像。
次要情节(2 2 1);
imshow (binaryImage []);
标题(的原始灰度图像,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“numbertitle”,“关闭”)
%现在我们准备开始,因为我们有二进制图像。
%写成梗概:
skeletonizedImage = bwmorph (binaryImage,“skel”、正);
%显示它。
次要情节(2,2,2);
imshow (skeletonizedImage []);
标题(“场大病形象”,“字形大小”、字形大小);
%现在距离变换。
edtImage = bwdist (~ binaryImage);
%显示它。
次要情节(2、2、3);
imshow (edtImage []);
标题(欧氏距离变换的,“字形大小”、字形大小);
%现在乘
distanceFromEdge = edtImage。*单(skeletonizedImage);
%显示它。
次要情节(2、2、4);
imshow (distanceFromEdge []);
标题(距离边缘的,“字形大小”、字形大小);
3评论
朱尔斯雷
朱尔斯雷 2012年7月14日
非常感谢你…这是工作非常好……即使我.asc (ascci表)
常识.asc是一个ascii文件,事实上一个表…

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!