求助~~怎样取得下边这个图的边界线?

时间:2022-02-23 23:54:36
本人非计算机专业出身,想求助一个简单的问题,大家不要见笑。
我这里有这么一个图(下图1),图上图形的边界坐标都可以获得,我怎样才能作出(图2)所示的边界线出来?有没有可行的思路或者算法?有程序代码示例的话最好了,没有的话文字描述一下也可以,我自己写代码。

谢谢大家了!!


求助~~怎样取得下边这个图的边界线?

下边的1号和2号边界线只要能作出来一种就行

求助~~怎样取得下边这个图的边界线?

8 个解决方案

#1


其实也就是用一个最小的线圈将以上图案包围起来

#2


小图位置有点特殊,有相切的。
找出所有的点,组成一个
polygon

#3


您是指的找出这些边界点吗?现在是我不知道怎么找这些点
其实最理想的圈中效果应该是下图所示的这种,不过我感觉这样难度更大
求助~~怎样取得下边这个图的边界线?

引用 2 楼  的回复:
小图位置有点特殊,有相切的。
找出所有的点,组成一个
polygon

#4


我倒是觉得你第二种比较方便。

因为是所有图都直接遍历的。

这样的话可以针对不同图形保存不同数量的点进容器A之后。

然后分析这些点的坐标位置。

分析目标是:获取点的最小X,最小Y,最大X,最大Y的点。

重新生成点放入另一个容器B。

根据容器B画线

#5


引用 4 楼  的回复:
我倒是觉得你第二种比较方便。

因为是所有图都直接遍历的。

这样的话可以针对不同图形保存不同数量的点进容器A之后。

然后分析这些点的坐标位置。

分析目标是:获取点的最小X,最小Y,最大X,最大Y的点。

重新生成点放入另一个容器B。

根据容器B画线


若是都遍历一遍的话遍历顺序和分析点坐标也是个比较复杂的事情啊,上边的图我只是画了个简单的,像下边这种情况我还是不知道该怎么处理啊:
求助~~怎样取得下边这个图的边界线?

#6


这个除了图像处理的知识,难了还要构建一个神经网络去求的最优图啊

#7


感觉并不简单,和是否计算机专业无关,
我对这个问题目标的理解是“获取有最小面积的图形包含边界线”,楼主可以把这个作为达成目标的判断。但由于具有模糊度,这个边界的获取并不容易。

再说几句不太确定的东西,
区域内图形是存在拓扑关系的,且在最终目标中的地位不同。但楼主如果真想通过代码解决,还是明确下规则。比如每个图形只选1个顶点似乎更易于处理,这个顶点当然必须在边界外。然后通过拓扑位置关系确立一个遍历次序将所有顶点连接成边界线。

#8


1.从0,0 坐标开始遍历,找到第一个点,这个点一定是顶点之一,标记为A。
2.自A点向正上方发出一个射线,并在到达图像边界时终止,形成线段,边界上的点标记为B。并让B在边界上以一个像素的单位进行顺时针方向的移动。遍历这条线段上的每个点,遇到非底色点时,即可确定找到下一个顶点。记录该点坐标,和相应的角度a
3.自新找到的点,以上一个角度a为起点,继续运算。直到找到的点与第一个点A的坐标相符,即可退出。

#1


其实也就是用一个最小的线圈将以上图案包围起来

#2


小图位置有点特殊,有相切的。
找出所有的点,组成一个
polygon

#3


您是指的找出这些边界点吗?现在是我不知道怎么找这些点
其实最理想的圈中效果应该是下图所示的这种,不过我感觉这样难度更大
求助~~怎样取得下边这个图的边界线?

引用 2 楼  的回复:
小图位置有点特殊,有相切的。
找出所有的点,组成一个
polygon

#4


我倒是觉得你第二种比较方便。

因为是所有图都直接遍历的。

这样的话可以针对不同图形保存不同数量的点进容器A之后。

然后分析这些点的坐标位置。

分析目标是:获取点的最小X,最小Y,最大X,最大Y的点。

重新生成点放入另一个容器B。

根据容器B画线

#5


引用 4 楼  的回复:
我倒是觉得你第二种比较方便。

因为是所有图都直接遍历的。

这样的话可以针对不同图形保存不同数量的点进容器A之后。

然后分析这些点的坐标位置。

分析目标是:获取点的最小X,最小Y,最大X,最大Y的点。

重新生成点放入另一个容器B。

根据容器B画线


若是都遍历一遍的话遍历顺序和分析点坐标也是个比较复杂的事情啊,上边的图我只是画了个简单的,像下边这种情况我还是不知道该怎么处理啊:
求助~~怎样取得下边这个图的边界线?

#6


这个除了图像处理的知识,难了还要构建一个神经网络去求的最优图啊

#7


感觉并不简单,和是否计算机专业无关,
我对这个问题目标的理解是“获取有最小面积的图形包含边界线”,楼主可以把这个作为达成目标的判断。但由于具有模糊度,这个边界的获取并不容易。

再说几句不太确定的东西,
区域内图形是存在拓扑关系的,且在最终目标中的地位不同。但楼主如果真想通过代码解决,还是明确下规则。比如每个图形只选1个顶点似乎更易于处理,这个顶点当然必须在边界外。然后通过拓扑位置关系确立一个遍历次序将所有顶点连接成边界线。

#8


1.从0,0 坐标开始遍历,找到第一个点,这个点一定是顶点之一,标记为A。
2.自A点向正上方发出一个射线,并在到达图像边界时终止,形成线段,边界上的点标记为B。并让B在边界上以一个像素的单位进行顺时针方向的移动。遍历这条线段上的每个点,遇到非底色点时,即可确定找到下一个顶点。记录该点坐标,和相应的角度a
3.自新找到的点,以上一个角度a为起点,继续运算。直到找到的点与第一个点A的坐标相符,即可退出。