我有一个非常不规则的形状,以x和y坐标的向量的形式,我想缩小。但我希望缩小后的形状保持在原始形状的边界内。我以为只做x_scaled = s * x
和y_scaled = s * y
就可以了,但这是我这样做时得到的结果:
x1c 0d1x的数据
正如你可以看到缩小的形状在多个点跨越原来的边界.我想它是完全包含在原来的形状.我想要的是类似于这个(不准确,只是一个代表我试图在Escherea)-
的
我做的表示不是很好,但我希望它能帮助我理解我的观点。我只是希望缩小的形状完全在里面。我不知道如何做到这一点。我使用的语言是MATLAB,但如果我能理解逻辑,我应该能够实现它。
1条答案
按热度按时间i7uaboj41#
**1.**使用
bwmorph
捕获要收缩的形状的1像素深度表面,例如字符串
A
必须是[0 1]
单层图形,而不是RGB图片。**2.**获取
A2
中所有白色像素的坐标[x1 y1]
或线性索引n1
[x1y1]是所有表面像素的坐标。
**3.**删除
A1
中的[x1 y1]
像素**4.**重复以达到所需深度
最后,如果“pealing”足够深,所获得的图形将达到与使用命令
bwskel
对输入图形进行数字化相同的结果。