如何应用两个多边形两个轮廓
4视图(30天)
显示旧的评论
我有两个图像。目标是找到近似的面积由多边形的轮廓图像。
在第一个图片我画一个多边形,它给了我一个令人满意的近似轮廓(波纹管),因此我能够获得它的面积通过“polyarea”功能。
我想应用相同的第二个图片,有两个轮廓。我想获得近似由两个多边形的面积这两个轮廓。
我怎么改变我的代码来实现这个效果吗?
提前谢谢。
clc
清晰的
关闭所有
跳过= 320;
负载(“Image.mat”);
形象= preenc;
%确定轮廓及其领域
轮廓= bwconncomp (preenc 8);
面积= regionprops(轮廓,“区域”);
图中,imshow (preenc);
%加速边界后的使用
Bperimeter = bwperim (preenc);
Bperimeter = imdilate (Bperimeter strel (“广场”4));
%得到x, y坐标的周长(列索引和行索引,
%)
[y、x] =找到(Bperimeter);
k =边界(x, y, 1);%使用边界损耗因子1的顶点
%初始二进制图像,使用最近添加的多边形
%得到顶点
idx = [k(1:跳过:结束)、k (1)];
drawpolygon (“位置”[x (idx) y (idx)))
%计算多边形的面积
d = polyarea (x (idx), y (idx));
disp (d)
接受的答案
埃米尔哈姆萨
2020年4月6日
试试这个
clc
清晰的
关闭所有
跳过= 50;
负载(“image2.mat”);
形象= preenc;
%确定轮廓及其领域
轮廓= bwconncomp (preenc 8);
面积= regionprops(轮廓,“区域”);
图中,imshow (preenc);
为我= 1:Contours.NumObjects
image_ =图像;
%隐藏所有其他补丁
掩码= 0(大小(图片));
面具(Contours.PixelIdxList{我})= 1;
image_面具(~)= 0;
%加速边界后的使用
Bperimeter = bwperim (image_);
Bperimeter = imdilate (Bperimeter strel (“广场”4));
%得到x, y坐标的周长(列索引和行索引,
%)
[y、x] =找到(Bperimeter);
k =边界(x, y, 1);%使用边界损耗因子1的顶点
%初始二进制图像,使用最近添加的多边形
%得到顶点
idx = [k(1:跳过:结束)、k (1)];
drawpolygon (“位置”[x (idx) y (idx)))
%计算多边形的面积
d = polyarea (x (idx), y (idx));
disp (d)
结束