著名的理论物理学家约翰·惠勒高度而精辟地评价曼德勃罗的著作:“今天,如果不了解分形,不能算是一个科学文化人”,他又说:“自然的分形几何使我们视野开阔,它的发展将导致新思想,新思想又导致新应用,新应用又导致新思想……”犹如分形本身一样,随之而产生的新思想和新应用将循环往复,层出不穷……

正如《走近混沌》所述,

分形,作为一个简单,混杂而美丽的存在,通过一个非线性迭代公式:

就实现了美丽的图案。

1975年夏天,一个寂静的夜晚,曼德勃罗正在思考他在宇宙学研究领域中碰到的一种统计现象。从60年代开始,这种貌似杂乱无章、破碎不堪的统计分布现象就困惑着曼德勃罗。在人口分布、生物进化、天象地貌、金融股票中,都有它的影子。一年前,曼德勃罗针对宇宙中的恒星分布(如康托尘埃),提出了一种数学模型。用这种模型可以解释奥伯斯佯谬,而不必依赖大爆炸理论。可是,这种新的分布模型却还没有一个名正言顺、适合它的名字!这种统计模型像什么呢?有些类似在1938年时,捷克的地理和人口学家Jaromír Korčák发表的论文《两种类型统计分布》中提到过的那种现象。曼德勃罗一边冥思苦想,一边随手翻阅着儿子的拉丁文字典。突然,一个醒目的拉丁词跃入他的眼中:fractus。字典上对这个词汇的解释与曼德勃罗脑海中的想法不谋而合:“分离的、无规则的碎片”。太好了,那就是些分离的、无规则的、支离破碎的碎片!这样,“分形”(fractal)这个名词,就此诞生了。

代码如下:

"""
PyQt AND OpenCV
By LiNYoUBiAO
2020/4/19 10:53
"""
import numpy as np
import cv2 as cvdef mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon=2.0):X = np.linspace(xmin, xmax, xn)Y = np.linspace(ymin, ymax, yn)C = X + Y[:, None] * 1j# np.zeros_lick(a) 顾名思义这个函数的意思就是生成一个和你所给数组a相同shape的全0数组。N = np.zeros_like(C, dtype=int)Z = np.zeros_like(C)for n in range(maxiter):I = np.less(abs(Z), horizon)N[I] = nZ[I] = Z[I] ** 2 + C[I]N[N == maxiter - 1] = 0return Z, Nif __name__ == '__main__':import matplotlib.pyplot as pltxmin, xmax, xn = -2.25, +0.75, 1500ymin, ymax, yn = -1.25, +1.25, 1500maxiter = 20horizon = 2.0 ** 40log_horizon = np.log(np.log(horizon)) / np.log(2)Z, N = mandelbrot_set(xmin, xmax, ymin, ymax, xn, yn, maxiter, horizon)# This line will generate warnings for null values but it is faster to# process them afterwards using the nan_to_num# nan_to_num: 使用0代替数组x中的nan元素,使用有限的数字代替inf元素with np.errstate(invalid='ignore'):M = np.nan_to_num(N + 1 -np.log(np.log(abs(Z))) / np.log(2) +log_horizon)cv.namedWindow("mandlebrot", cv.WINDOW_NORMAL)cv.imshow("mandlebrot", M)cv.waitKey(0)cv.destroyAllWindows()

生成图片:

参考:

  1. 数学的魅力:https://www.bilibili.com/video/av92903284
  2. 数学的魅力:https://www.bilibili.com/video/BV1N441187Dh/?spm_id_from=333.788.videocard.1
  3. C++实现:https://blog.csdn.net/u012198575/article/details/81357429

Python之OpenCV 007 《走近混沌》分形艺术Fractal之美相关推荐

  1. 计算机图形学在装饰设计中的应用,混沌分形图在软装饰艺术设计中的应用研究...

    摘要: 分形(Fractal)是在二十世纪70年代兴起的最重要的非线性科学之一,曼德尔布罗特(Mandelbrot)通过数学公式迭代和计算机编程技术构建了以自己名字命名的Mandelbrot集,分形理 ...

  2. Python,OpenCV中的光学字符识别(OCR Optical Character Recognition)

    Python,OpenCV中的光学字符识别(OCR Optical Character Recognition 1. 什么是OCR? 2. 光学字符识别简史 3. 光学字符识别的应用 4. OSD 方 ...

  3. 使用Python,OpenCV进行卡类型及16位卡号数字的OCR

    使用Python,OpenCV进行卡类型及16位卡号数字的OCR 1. 效果图 2. 原理 2.1 OCR-A字体 2.2 检测过程步骤 2.3 优化 3. 源代码 参考 这篇博客将介绍如何通过Ope ...

  4. 使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象

    使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象 1. 效果图 2. 源码 2.1 MeanShift 2.2 Camshift(Continuo ...

  5. 使用Python,OpenCV,本地二进制模式(LBP)进行人脸识别

    使用Python,OpenCV与本地二进制模式(LBP)进行人脸识别 1. 效果图 2. 原理及步骤 2.1 原理 2.2 步骤 3. 源码 参考 在深度学习和暹罗网络之前,面部识别算法依赖于特征提取 ...

  6. Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示

    Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示 1. 效果图 2. 源码 写这篇博客源于博友的提问,期望把下图中的多个茄子种子按从左到右的顺序提取出来: 1. 效果图 ...

  7. Python,OpenCV中的图像修复——cv2.inpaint()

    Python,OpenCV中的图像修复--cv2.inpaint 1. 效果图 2. 原理 3. 源码 参考 image inpainting 图像修改 这篇博客将介绍如何通过OpenCV中图像修复的 ...

  8. Python,OpenCV中的K均值聚类——K-Means Cluster

    Python,OpenCV中的K均值聚类 1. 效果图 2. 原理 2.1 什么是K均值聚类? 2.2 K均值聚类过程 2.3 cv2.kmeans(z, 2, None, criteria, 10, ...

  9. Python,OpenCV基于支持向量机SVM的手写数字OCR

    Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...

  10. Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()

    Python,OpenCV中的霍夫圆变换 1. 效果图 2. 源码 参考 这篇博客将学习如何使用霍夫圆变换在图像中找到圆圈,OpenCV使用cv2.HoughCircles()实现霍夫圆变换. cir ...

最新文章

  1. StoreFront web 无法启动指定的应用
  2. 【IT笔试面试题整理】有序数组生成最小高度二叉树
  3. 【vlan-给予mac地址认证】
  4. 深度学习中所有的优化器的详细介绍与列表化对比分析
  5. Eclipse远程部署
  6. 电力电子技术复习笔记1(简要版)
  7. Report Machine 的问题 补充!!!
  8. Android本地音乐播放器(二)
  9. 基于51单片机的交通灯原理图加代码
  10. 手机入侵修改服务器数据,手机怎么入侵服务器修改数据库
  11. 软件测试与代码安全详解
  12. 要重复多少次变成潜意识_什么是潜意识?如何利用潜意识为自己步步高升
  13. Python正则表达式及match函数的用法
  14. 最详细matlab 2018a安装教程步骤.
  15. 面试积累-Redis-使用过Redis分布式锁么,它是怎么实现的?
  16. 可折叠的table表格
  17. 关掉visual studio 在桌面上右键---在visual studio中打开
  18. VMware vsphere和VMware vsphere Hypervisor有什么不同
  19. 计算机游戏性能测评,游戏性能测试
  20. JS-正则表达式匹配获取

热门文章

  1. 有 4 名同学到一家公司参加三个阶段的面试
  2. 小爱同学脱离局域网远程控制开关?
  3. 从一个骗人的技术说起光线追踪——光影技术的里程碑
  4. 基于node.js的网页聊天系统设计与实现
  5. 双网卡双线路DNS解析分析
  6. Android虚拟AB升级流程简述及升级完整log
  7. 在ensp中配置交换机interface GigabitEthernet 1/0/1报错
  8. CentOS7搭建Docker私有仓库
  9. Win10扬声器未插入怎么解决?
  10. 在利用DXP2004软件进行PCB设计时——自制元器件封装如何添加网络(布线问题)