编程模拟自然(二):仿人工拼接碎片

序·女娲补天篇

  另一个世界,擎天大柱倾倒,九州大地裂毁。

  传有一个名叫 NvWa 的人,她炼出五色石补好了天空,万灵始得以安居。

  ...

第零章 需求分析

  ”一定要保证基类安全,这片天地是面向对象设计...要密切关注子类受波及的蔓延态势。“

  事发两刻钟后,NvWa 接到了通知,当即成立了抢险指挥部并做了重要发言。

  ”天阙碎片散落人间,但有上古架构师盘古留下的设计文档,只要收集齐天地碎片并用五色石加以炼化就可以复原天空。“

  NvWa 仔细听取了现场工程人员的说明。

  ”立刻落实碎片和五彩石收集工作,大家要在最短时间内完成代码重构,上下一心,尽最大努力挽回不必要的损失。“

  NvWa 对现场的应急小组下达了指令。

  ...

  经过九九六奋战,碎片全部收集完毕。

图2-1 图像碎片

 

第一章 预处理

      把碎片颜色信息二值化,即将图像上的像素点的灰度值设置为 0 或 255。

  二值化

  图像呈现出明显的只有黑和白的视觉效果

图2-2 二值化

   “一言不发架构师。”

第二章 特征提取

  获取碎片边缘向量信息,分别用 0 和 1 标记白色和黑色。

图2-3 边缘特征提取

  “/*不是每个编译器都能看到这句话。*/”

第三章 特征比对

  通常来说,如果两个碎片相连,它们对应的边缘特征相似度也就越高。

  比较向量的相似度

  可以用余弦定理计算两个向量的相似度

 图2-4 比对特征值

  “天阙碎片封印的这段代码似乎是上古程序员写的注释。”

第四章 匹配空间

  想象有个工作桌,左边是零散的未拼好的碎片,右边是已经拼了的碎片。

图2-5 空白

   “我会编程一个美丽的公主哦。”

第五章 迭代匹配

  有了上面想象的空间,每拼好一张,就在拼好的基础上继续迭代,拼好的一整块碎片就会慢慢变大直至拼接完成。

图2-6 拼接图像

  “周五了,不知道明天会不会加班。”

第六章 人工干预

  程序部分已经完了,有时受限于匹配条件,迭代可能会无限地进行下去,此时就需要人工干预。

图2-8 手动拼接

  “不周山被撞导致天地崩落说明基类遭到破坏的后果是灾难性的。”NvWa 同志在周六的灾后重建座谈会上发表重要讲话。

后记

  “...元纪 24 年 6 月 5 日,星期天,天气晴。”

  “...那只猿一动不动地蹲在树上,时间仿佛凝固了一万年,斜阳下是它以 PI/4 弧度仰望天空的剪影...”

  ...

  “...10024 年 6 月 5 日...我们再也没见过那个猿,大概是从天空出现一道裂缝那天起...”

  --《夏の日记》

附录

  预知后情,且看下回分解。了解更多请浏览目录导航

posted @ 2015-11-21 16:48  ExperDot  阅读(1749)  评论(5编辑  收藏  举报