在MATLAB中缩放一组定义不规则形状的坐标

kzmpq1sx  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(70)

我有一个非常不规则的形状,以x和y坐标的向量的形式,我想缩小。但我希望缩小后的形状保持在原始形状的边界内。我以为只做x_scaled = s * xy_scaled = s * y就可以了,但这是我这样做时得到的结果:
x1c 0d1x的数据
正如你可以看到缩小的形状在多个点跨越原来的边界.我想它是完全包含在原来的形状.我想要的是类似于这个(不准确,只是一个代表我试图在Escherea)-



我做的表示不是很好,但我希望它能帮助我理解我的观点。我只是希望缩小的形状完全在里面。我不知道如何做到这一点。我使用的语言是MATLAB,但如果我能理解逻辑,我应该能够实现它。

i7uaboj4

i7uaboj41#

**1.**使用bwmorph捕获要收缩的形状的1像素深度表面,例如

A2 = bwmorph(A1,'remove');

字符串
A必须是[0 1]单层图形,而不是RGB图片。

**2.**获取A2中所有白色像素的坐标[x1 y1]或线性索引n1

[x1y1]是所有表面像素的坐标。

**3.**删除A1中的[x1 y1]像素
**4.**重复以达到所需深度

最后,如果“pealing”足够深,所获得的图形将达到与使用命令bwskel对输入图形进行数字化相同的结果。

相关问题