分形逃逸时间算法中的 Normalized Iteration Count(NIC)技术 让颜色更柔和

简介: Normalized Iteration Count (NIC) 技术是一种提升逃逸时间算法中分形图像质量的方法,它产生更平滑的颜色过渡。数学公式表示为:`mu = n + 1 - log(log(|Z(n)|)) / log(p)`,其中 `Z(n)` 是迭代次数,`|Z(n)|` 是复数模长,`p` 通常取2。示例代码提供了 Ruby, Maxima 和 C 语言的实现。

Normalized Iteration Count (NIC) 技术解析

在逃逸时间算法中,Normalized Iteration Count (NIC) 是一种提升分形图像质量的技术,它能够产生更加平滑且细腻的颜色过渡效果。此方法通过调整迭代次数来实现,其核心数学公式如下:


μ=n+1−  log(log(∣Z(n)∣))/ log(p)


写成代码形式:

mu = n + 1 - log (log (|Z(n)|) ) / log (p)


其中,

  • Zn 表示迭代次数,
  • Z(n) 表示最后一次迭代后复数Z的模长
  • p 通常取为2。



实现代码示例

下面是几种不同语言的代码实现示例,展示了如何应用 NIC 方法于分形计算中。

Ruby 实现

Ruby

NormalizedIterationCount = lambda do |fractal|
  z = fractal.args[:z]**2 + fractal.c; fractal.last_iteration += 1
  z = z**2 + fractal.c; fractal.last_iteration += 1

  modulus = Math.sqrt(fractal.args[:z].real**2 + fractal.args[:z].imag**2).abs
  mu = fractal.last_iteration + Math.log(2 * Math.log(fractal.bailout)) - Math.log(Math.log(modulus)) / Math.log(fractal.args[:p])

  (mu / fractal.max_iterations * 765).to_i
end

Maxima 实现

Lisp

GiveNormalizedIteration(z,c,E_R,i_Max):=
/* */
block(
[i:0,r],
while abs(z)<E_R and i<i_Max
   do (z:z*z + c,i:i+1),
r:i-log2(log2(cabs(z))),
return(float(r))
)$

其中 log2(x) := log(x) / log(2);

C 语言伪代码实现

C

int iter_count = 0;
float escape_radius = 20.0;
complex Z, C;
loop (forever) {
   Z = Z*Z +C;
   iter_count ++;
   float modulus = sqrt (ReZ*ReZ + ImZ*ImZ);
   if (modulus > escape_radius) goto stop;
   if (iter_count > maxiter) goto stop;
}

stop:
   Z = Z*Z +C; iter_count ++;    // a couple of extra iterations helps
   Z = Z*Z +C; iter_count ++;    // decrease the size of the error term.
   float modulus = sqrt (ReZ*ReZ + ImZ*ImZ);
   float mu = iter_count - (log (log (modulus)))/ log (2.0);
   color_value = colormap_lookup (mu);
   draw_pixel (C, color_value);
相关文章
|
1月前
|
边缘计算 算法 计算机视觉
寻求算法模型迁移技术协助
yolo模型(目标检测、关键点检测)向边缘计算装置(瑞芯微、比特大陆等平台)进行迁移量化时,做到精度损失最低、帧率保持最优。
|
1月前
|
人工智能 达摩院 算法
什么是优化技术?给算法小白同学的快速讲解和上手文
本文作者用一个曾经小白学习的视角,来讲解什么是优化问题,以及要如何用这个优化技术。
47983 59
|
8天前
|
SQL 存储 算法
【MySQL技术内幕】6.4-锁的算法
【MySQL技术内幕】6.4-锁的算法
21 1
|
8天前
|
存储 算法 关系型数据库
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
13 1
|
11天前
|
存储 编解码 算法
C#.NET逃逸时间算法生成分形图像的毕业设计完成!晒晒功能
该文介绍了一个使用C#.NET Visual Studio 2008开发的程序,包含错误修复的Julia、Mandelbrot和优化过的Newton三种算法,生成色彩丰富的分形图像。作者改进了原始算法的效率,将内层循环的画点操作移至外部,提升性能。程序提供五种图形模式,支持放大缩小及颜色更新,并允许用户自定义画布大小以调整精度。还具备保存为高质JPG的功能。附有四张示例图片展示生成的分形效果。
|
12天前
|
存储 自然语言处理 算法
编辑距离算法全解析:优化文本处理的关键技术
编辑距离算法全解析:优化文本处理的关键技术
|
18天前
|
存储 人工智能 算法
RAG技术的高级应用和算法
文章主要探讨了RAG技术的高级应用和算法,系统化地整理了各种方法。
|
18天前
|
机器学习/深度学习 数据采集 算法
基于机器学习的推荐算法构建技术详解
【6月更文挑战第4天】本文详述了构建基于机器学习的推荐算法,特别是协同过滤方法。从用户和物品相似性的角度,解释了用户-用户和物品-物品协同过滤的工作原理。涵盖了数据准备、预处理、特征工程、模型训练、评估优化及结果展示的构建流程。推荐算法在电商、视频和音乐平台广泛应用,未来将受益于大数据和AI技术的进步,提供更智能的推荐服务。
|
16天前
|
存储 运维 算法
社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元
本文中,我们将介绍几种主流的IM红包分配算法,相信聪明的你一定能从中窥见微信红包技术实现的一些奥秘。
14 0
|
1月前
|
存储 算法 搜索推荐
【大数据分析与挖掘技术】Mahout推荐算法
【大数据分析与挖掘技术】Mahout推荐算法
25 0