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…

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…

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

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

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…

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;生活中有哪些科学…

如何搭建一个指标体系

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

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

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

.NET Worker Service 如何优雅退出

上一篇文章中我们了解了 .NET Worker Service 的入门知识[1]&#xff0c;今天我们接着介绍一下如何优雅地关闭和退出 Worker Service。Worker 类从上一篇文章中&#xff0c;我们已经知道了 Worker Service 模板为我们提供三个开箱即用的核心文件&#xff0c;其中 Worker 类是继…

大数据告诉你,中国女人有多勤奋

全世界只有3.14 % 的人关注了数据与算法之美前段时间&#xff0c;美国国家统计局发布了一组关于世界各国劳动参与率的数据&#xff0c;中国赫然位列世界第一&#xff0c;劳动总量世界第一&#xff0c;劳动参与率世界第一。所谓劳动总量&#xff0c;就是所有工作的人的工作时间的…

get+php+mysql_Apache+PHP+MySql 的安装及配置

每一项技术用的人多了&#xff0c;就会有人将其进行优化&#xff0c;做成一个简单、实用、大众化的工具&#xff0c;这对于初识者来说是非常方便的&#xff0c;但是对于长久学习或工作这方面的人技术人员来说是不可取的&#xff0c;所以还是要学习基础的实用方法。因此&#xf…

记一次 .NET 车联网云端服务 CPU爆高分析

一&#xff1a;背景 1. 讲故事前几天有位朋友wx求助&#xff0c;它的程序CPU经常飙满&#xff0c;没找到原因&#xff0c;希望帮忙看一下。这些天连续接到几个cpu爆高的dump&#xff0c;都看烦了????????????&#xff0c;希望后面再来几个其他方面的dump&#xff0…

java swing 示例_JAVA简单Swing图形界面应用演示样例

JAVA简单Swing图形界面应用演示样例package org.rui.hello;import javax.swing.JFrame;/*** 简单的swing窗体* author lenovo**/public class HelloSwing {public static void main(String[] args) {JFrame framenew JFrame("hello Swing");frame.setDefaultCloseOpe…

.NET上海社区线下Meetup - 5.22 Blazor Day

Blazor 是一个 Web UI 框架&#xff0c;Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程&#xff0c;它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术&#xff0c;但它使用 C&#xff03;语言和 Razor 语法代替 JavaScript 来构建可组合的 Web UI 。通过提供用于编译到 …

入门机器学习,开启人工智能大门!

AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域&#xff0c;Python已经成为了主流。一方面因为这门语言简单易上手&#x…