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

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: 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);
相关文章
|
7天前
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
|
22天前
|
存储 算法 Java
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
17 1
|
23天前
|
传感器 算法
技术心得记录:四元数及姿态解算Mahony算法
技术心得记录:四元数及姿态解算Mahony算法
20 0
|
23天前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
22 0
|
23天前
|
存储 算法 Python
技术心得记录:大整数算法【10】Comba乘法(实现)
技术心得记录:大整数算法【10】Comba乘法(实现)
13 0
|
23天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
16 0
|
23天前
|
机器学习/深度学习 并行计算 搜索推荐
程序技术好文:桶排序算法及其Java实现
程序技术好文:桶排序算法及其Java实现
14 0
|
23天前
|
算法
技术好文共享:算法之树表的查找
技术好文共享:算法之树表的查找
13 0
|
23天前
|
人工智能 算法
程序技术好文:算法与数据结构
程序技术好文:算法与数据结构
|
23天前
|
算法 安全 Java
技术笔记:MD5加密算法详解
技术笔记:MD5加密算法详解

热门文章

最新文章