python区域增长算法_区域增长算法

嘿大家好。我真的很难搞清楚这个逻辑,希望你能帮我。在我继续之前,我只想告诉你,我是业余程序员,也是一个初学者,没有任何形式的正式计算机科学培训,所以请容忍我。:D另外,我使用的是Python,但我可以使用Java或类似的工具。

不管怎样,我希望实现一个地区的增长,在一个初步的Drawbot使用。

这里有一篇关于区域增长的文章:http://en.wikipedia.org/wiki/Region_growing

按照我的设想,绘图所基于的图像将满足以下条件:在任意颜色深度下,图像大小最多为3x3英寸

图像将是白色背景上的黑色连续形状

形状可以位于背景上的任何位置。

我已经考虑过这个问题的下列解决办法。虽然有些工作在一定程度上,但它们在性能或可行性上都有一些相当大的缺陷(至少在我看来是不可行的)。此外,由于这是一个Drawbot,这需要用一条连续的线来完成。但这并不意味着我不能回溯,它只是消除了多个起点(种子)的可能性。

考虑的方法:

随机行走:

我的第一直觉是用随机行走来解决这个问题。我想,实现这一点的随机行走程序应该是这样的:

伪python。。。Cells To Visit = Number of Black Cells

Cells Visited = 0

MarkColor = red

While Cells Visited < Cells To Visit:

if currentcell is black:

Mark Current Cell As Visited #change pixel to red

Cells Visited +=1

neighbors = Get_Adjacent_Cells() #returns cells either black or red

next cell = random.choose(neighbors)

currentCell = next cell

虽然我认为这是可行的,但在我看来,这是非常无效的,并不能保证良好的结果,但为了实际完成一些事情,我可能最终尝试这个。。。我在伪代码中的逻辑是不是还模模糊糊地正确?

扫描模式:

在我看来,这个方法是最容易实现的。我的想法是我可以在形状的一个极端选择一个起点(例如,最左下点)。从那里开始,它会向右移动,只在x轴上移动,直到它碰到一个白色像素。从这里开始,它将在y轴上向上移动一个像素,然后在x轴上向左移动,直到达到一个白色像素。如果正上方的像素碰巧是白色,则在x轴上回溯,直到在其上方找到一个黑色像素。

经进一步检验,这种方法有一些主要缺点。

当面对这样的形状时:

RKUVj.png

结果如下:

KyuKy.png

即使我告诉它过一段时间后开始清扫,中腿仍然会被忽略。

4/8连通邻域:

在我看来,这种方法是最强大和最有效的,但在这一点上,我无法完全搞清楚,我也无法考虑如何在不可能留下一些被忽视的领域的情况下实现它

在每一个单元中,我都会查看相邻的黑单元,设计一些方法来排列我应该首先访问哪个单元,访问所有的黑单元,然后重复这个过程,直到所有的单元都被覆盖。

我在这里看到的问题首先是处理实现这一点所必需的数据结构,而且仅仅是找出其背后的逻辑。

这些是我能想到的最好的解决办法。谢谢你花时间读这篇文章,我意识到它很长,但我想我应该尽可能地把它说清楚。任何和所有的建议将非常感谢。。。谢谢!

编辑:

我也研究了迷宫生成和求解算法,但不知道如何在这里实现。我对迷宫求解算法的理解是,它们依赖于迷宫通道的宽度相等。我当然可能错了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6砖家:对不起,我没.NET5高并发经验,我要跑路了!

“秒杀活动”“抢红包”“微博热搜”“12306抢票”“共享单车拉新”等都是高并发的典型业务场景&#xff0c;那么如何解决这些业务场景背后的难点问题呢&#xff1f;秒杀系统中&#xff0c;QPS达到10万/s时&#xff0c;如何定位并解决业务瓶颈&#xff1f;明星婚恋话题不断引爆…

孩子觉得数学难?那是底子没打好!

孩子觉得数学难&#xff1f;那是底子没打好&#xff01;&#xff08;北师大学前教育博士帮你一起塑造孩子的数学思维&#xff01;&#xff09;要说陪娃写作业这事儿的状态和成果&#xff0c;用一句诗词就能概括&#xff1a;我本将心向明月&#xff0c;奈何明月照沟渠。陪得好&a…

Android 读取meta-data元素的数据

在AndroidManifest.xml中&#xff0c;<meta-data>元素可以作为子元素&#xff0c;被包含在<activity>、<application> 、<service>和<receiver>元素中&#xff0c;但 不同的父元素&#xff0c;在应用时读取的方法也不同。 1 &#xff1a;在Activ…

python科学计算环境配置_ATLAS + NumPy + SciPy + Theano 的Python科学计算环境搭建

Theano是一个Python库&#xff0c;提供了定义、优化以及评估数学表达式的库&#xff0c;尤其适合处理高维数组。使用Theano能获得和C差不多的处理速度&#xff0c;并且当利用GPU进行计算时&#xff0c;效率要优于CPU上运行的C语言程序。利用Theano能快速验证各种算法模型。但是…

朋友圈有趣的灵魂都去哪了?这几个优质公号给你答案

全世界有3.14 % 的人已经关注了数据与算法之美又到每周限量推荐公众号的时间啦关注了那么多公众号&#xff0c;百无聊奈地看文章你是否觉得时间被浪费&#xff0c;生命被辜负了&#xff1f;在号的数量上做减法&#xff0c;质量上做加法接下来给大家推荐最近一直在阅读的几个优质…

Istio 1.10 发布及官网改版

本文译自 Istio 官方文档 [1]&#xff0c;有部分修改。北京时间 5 月 19 日&#xff0c;我们很高兴地宣布 Istio 1.10 的发布&#xff01;我们要特别感谢我们的发布经理 Sam Naser[2] 和 张之晗 [3]&#xff0c;以及整个测试和发布工作组在 1.10 中的工作。这是我们 2021 年的第…

CSS各属性表

1、CSS 背景属性&#xff08;Background&#xff09; 属性描述CSSbackground在一个声明中设置所有的背景属性。1background-attachment设置背景图像是否固定或者随着页面的其余部分滚动。1background-color设置元素的背景颜色。1background-image设置元素的背景图像。1backgrou…

java接口课程_用java定义一个接口,用于查询课程

定义一个类Stu&#xff0c;包括如下属性&#xff1a;学号、姓名、性别、专业、课程&#xff0c;实现以下方法&#xff1a;每个属性的获取和定义&#xff0c;要求至少包含一个构造函数。定义一个接口类&#xff0c;定义方法qcc()用来查询课程。编写一...定义一个类 Stu&#xff…

深入探讨编程到底需要知道多少数学知识

全世界只有3.14 % 的人关注了数据与算法之美这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。对于基本的编程&#xff0c;你需要知道下面的&#xff1a;加减乘除 — 实际上&#xff0c;电脑会帮你作加减乘除运算。你仅需要知道什么时候运用它们。模运算 —…

sql server和mysql的区别是什么

开源MySQL是一个开源关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff1b;而SQL Server不是开源的&#xff0c;是商业的。程序MySQL主要用C和C 编程语言编程。SQL Server主要用C 编程&#xff0c;但在C语言中也有一些部分。平台SQL Server仅支持Linux和Windows平台&am…

zabbix2.0安装与配置

一、zabbix服务端安装&#xff1a;官方下载&#xff1a;http://www.zabbix.com/download.php1.安装配置所需要软件(zabbix需要一个lamp环境)[rootlocalhost ~]# yum install httpd php php-devel php-gd php-bcmath php-mbstring mysql-devel mysql-serverphp-xml php-mysql gd…

sql java 创建数据库_java动态创建数据库(sql server)

public static void main(String[] args) {// TODO Auto-generated method stubString url "jdbc:jtds:sqlserver://127.0.0.1:1433;databaseNamebase_name;usersa;password pas";//sa身份连接Connection con null;Statement stmt null;//ResultSet rs null;bool…

BeetleX.FastHttpApi之控制器调度设计

为了可以更灵活地在Webapi应用服务中分配线程资源&#xff0c;BeetleX.FastHttpApi在线程调度上直接细化到Action级别&#xff1b;组件不仅可以精准控制每个Action的最大RPS限制&#xff0c;还能精细到控制使用多少线程资源来处理这些API的请求。接下来详细讲解组件针对这一块的…

Java类加载机制深度分析

为什么80%的码农都做不了架构师&#xff1f;>>> Java类加载机制 类加载是Java程序运行的第一步&#xff0c;研究类的加载有助于了解JVM执行过程&#xff0c;并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载&…

北大清华团队编写!200多个科学实验+视频,和爸爸一起在家做

自从2017年2月份教育部从小学一年级起将科学课列入必修课&#xff0c;学校、家长都意识到科学素养对于孩子成长的重要性。好多家长都跃跃欲试&#xff0c;想陪孩子把科学“玩”起来。可是具体到如何给孩子做科学启蒙&#xff0c;面对的问题还真不少&#xff1a;生活中有哪些科学…

java 枚举工厂_在Java中使用枚举工厂,最佳做法?

Java允许我们在Enum上嵌入数据和行为.我不想在Enum上直接实施一个工厂,因为我认为这不是它的作用.但是我可以把类的引用放在枚举上,并在外部工厂中引用对象.相对于传统的工厂模式,你最好的实现是什么&#xff1f;哪种解决方案在哪种情况下更好&#xff1f;现在,代码.在两种解决…

ASP.Net服务性能优化原则

理理Asp.net性能相关的问题及注意事项。以下这些内容&#xff0c;全部是经验之谈。如果你有别的建议&#xff0c;也可以从后台发给我。服务器性能问题&#xff0c;通常在数据少的时候不会显现&#xff0c;也无需太多关注。但一旦数据量大了&#xff0c;就会变成一个麻烦且必须处…

如何搭建一个指标体系

2019独角兽企业重金招聘Python工程师标准>>> 今天跟大家聊聊&#xff0c;如何搭建一个指标体系。 1、什么是指标体系 “指标体系”这个概念是应用比较广泛的&#xff0c;我们从正式出版物中摘取一个定义&#xff1a; 指标体系&#xff0c;即统计指标体系&#xff0c…

2018年最后一个月最值得关注的13个优质公号

全世界有3.14 % 的人已经关注了数据与算法之美在这个知识千变万化的时代只有不断学习、充实自我&#xff0c;才能跟上时代以下13个顶级公众号能让你扩宽视野&#xff0c;紧跟时代的潮流近现代史研究通讯ID&#xff1a;jxsdyjtx2015▲长按二维码“识别”关注设置为星标近现代史研…

java thread join()_Java Thread join() 的用法

Java Thread中&#xff0c; join() 方法是让调用该方法的主线程执行run()时暂时卡住&#xff0c;等run()执行完成后&#xff0c; 主线程再调用执行join()后面的代码。示例&#xff1a;class ThreadTesterA implements Runnable {private int counter;Overridepublic void run()…