注册 登录
编程论坛 VB6论坛

求教如何在矩阵图形中找到按规则生成的图形?

ictest 发布于 2023-02-17 16:29, 1216 次点击
各位版主大大及过往高手:
    目前遇到一种问题无法解决,不知道如何下手,完全想不出开发方向与解决步骤。我先介绍一下背景与需求:
1、    现有一个文本,里面每行有三个数字,第一个数字为X坐标,第二个数字为Y坐标,第三个数字是这个坐标点的好坏性质(可以粗略认为1是好的,除去1以外的数字都是坏的);
只有本站会员才能查看附件,请 登录

2、    我根据坐标生成一个矩阵图形,里面只有1和B;
只有本站会员才能查看附件,请 登录

3、    现要求先确定一个数字N,在矩阵图形中寻找N个及N个以上的连续连接的B,
如何定义是不是连续连接,我的理解为以一个B为中心生成九宫格,如果上下左右斜上斜下周围8个格子中任意一个格子中是B,那么判定这两个B是连接的;再以第二个B为中心生成九宫格,下左右斜上斜下周围8个格子中任意一个格子中(除去前一个B的格子)是B,则判定有3个B是连续连接的;如果以第二个B为中心生成九宫格,下左右斜上斜下周围8个格子中任意一个格子中(除去前一个B的格子)都不是B,则判断这个连续断了。以此类推,计算最终连续了几个,是否达到N或者N个以上的要求;
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

4、    如果一个B的连续达到N或者N个以上的要求,那么这个B的连续中每一个B点周边8个位置中如果是1的,则将1转变成Q;
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

5、    再输出成原来大小的矩阵图形,如果里面有连续达到N或者N个以上B的要求,则最终输出成包含1、B、Q的原来大小的矩阵图形。

我最初的想法是先计算出到底有多少个不同的N个连接的B的组合,然后到矩阵图形中一组一组的匹配,动手没多久就发现这样做不现实,
1、    要求是N个及N个以上,我的想法只能达到最初要求的N个,那么N+1、N+2、N+3……N个以上都没有做到;
2、    N个连接B的组合,每增加一个连续,图形总数量就成指数级的增加,比如4个连续,大约100多种组合,5个连续就变成了600多种组合,6个连续就变成了3800多种组合,7个连续就变成了2万多种组合了……实在是没法算下去了。

到现在实在没有头绪,完全不知道怎么制作,还请各位版主大大及过往高手能够不吝赐教,协作制作!


附件是根据文本中坐标生成矩阵的程序和坐标文本以及矩阵文本。
只有本站会员才能查看附件,请 登录

4 回复
#2
ictest2023-02-19 18:37
本帖也请各位版主大大及过往高手能够不吝赐教,协作制作。
#3
ictest2023-02-20 23:10
本帖提出的问题的确比较烧脑,烦请各位版主大大及过往高手能够不吝赐教,协作制作。
#4
ictest2023-02-21 22:53
本帖提出的问题的确比较烧脑,我也一直在寻找思路,网上有些类似的做法,例如数围棋有多少气,或者是扫雷,这些会考虑某点的的周边或者是否连续,等等这些。烦请各位版主大大及过往高手能够不吝赐教,协作制作。
#5
wds12023-03-26 01:47
你这个问题,可以参考图片的轮廓识别算法。
主要步骤如下
1、将3点坐标转换为原始矩阵(只保留0,1)
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

2、对原始矩阵进行轮廓识别
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

3、对轮廓算法结果进行处理,形成置位矩阵
   把原始轮廓算法的外边界,孔边界简单处理一下就会形成单一外边界的识别矩阵数组
   根据外边界数组,用二重循环,可以通过统计识别矩阵个连续点数量,计算出每个外边界的连续数
   根据外边界数组N,用二重循环+周边检测可以完成Q值赋值。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2023-3-26 10:47编辑过]

1