프랙탈 화염

Fractal flame
전기 양들이 만들어내는 프랙탈 불꽃입니다.
아포피시스에서 생성된 프랙탈 화염입니다.

프랙탈 화염[2]Scott Draves가 1992년에 만든 프랙탈반복 함수 시스템[1] 클래스의 구성원이다.Draves의 오픈 소스 코드는 나중에 Adobe After Effects 그래픽[3] 소프트웨어로 이식되어 Apophys frackal flame [2]에디터로 변환되었습니다.

프랙탈 화염은 세 가지 면에서 일반적인 반복 기능 시스템과 다릅니다.

  • 비선형 함수는 아핀 변환과 더불어 반복됩니다.
  • 선형 또는 바이너리 대신 로그 밀도 표시(톤 매핑의 일종)
  • 단색 또는 밀도 대신 구조별(즉, 선택한 재귀 경로별) 색상입니다.

톤 매핑과 색상은 프랙탈의 디테일을 가능한 한 많이 표시하도록 설계되어 있어 일반적으로 더 아름다운 이미지를 얻을 수 있습니다.

알고리즘.

알고리즘은 히스토그램을 만든 다음 히스토그램을 렌더링하는 두 단계로 구성됩니다.

히스토그램 생성

프랙탈 불꽃.

첫 번째로, 임의로 선택된 점 P =(P.x,P.y,P.c)부터 일련의 함수를 반복하며, 여기서 세 번째 좌표는 점의 현재 색상을 나타낸다.

불꽃 기능 세트 { (x ,) 、 1 2 ( ,) 、 n (, ) n \ {{}

각 반복에서 F가 선택될 확률j pj 위의 함수 중 하나를 선택합니다.그런 다음 F on(P.x, P.y)적용하여j P의 다음 반복을 계산합니다.

각 기능에는 다음과 같은 형식이 있습니다.

여기k 변수 w를 변동k V의 가중치라고 합니다.Draves는 w_s는 음이 아니며 합계가 1이라고 제안하지만, Apophysis 등의 구현에서는 이러한 제한을 가하지 않습니다.

함수k V는 미리 정의된 함수 집합입니다.몇 가지[4] 예는 다음과 같습니다.

  • V0(x,y) = (x,y)(선형)
  • V1(x,y) = (sin x,sin y) (sinusoidal)
  • V2(x,y) = (x,y)/(x2+y2) (구면)

점의 색상 P.c는 최근에 적용된 기능j F:와 관련된 색상과 혼합됩니다.

PC : = (P.c + (Fj))color / 2

반복할 때마다 (P.x, P.y)에 해당하는 지점에서 히스토그램을 업데이트합니다.이것은 다음과 같이 행해집니다.

히스토그램[x][y][빈도수.] := 히스토그램[x][y][빈도수.]+1 히스토그램[x][y][색.] := (히스토그램[x][y][색.] + P.c)/2 

따라서 이미지의 색상은 이미지의 해당 부분에 도달하기 위해 사용된 기능을 반영합니다.

이미지 렌더링

화질을 높이기 위해 슈퍼샘플링을 사용하여 노이즈를 줄일 수 있습니다.여기에는 이미지보다 큰 히스토그램을 생성하여 각 픽셀에 추출할 수 있는 데이터 포인트가 여러 개 있습니다.예를 들어 300×300 셀로 히스토그램을 생성하여 100×100 px 이미지를 그립니다.각 픽셀은 3×3 그룹의 히스토그램 버킷을 사용하여 값을 계산합니다.

최종 영상의 각 픽셀(x,y)에 대해 다음 계산을 수행합니다.

주파수_평균[x][y]  := average_of_contract_frequency(x,y); color_avg[x][y] := 평균_of_color_color(x,y);  알파[x][y] := 로그.(주파수_평균[x][y]) / 로그.(주파수_최대);   //frequency_max는 히스토그램에서 셀에 도달하는 최대 반복 횟수입니다.  final_final_color[x][y] := color_avg[x][y] * 알파[x][y]^(1/감마); //syslog는 1보다 큰 값입니다. 

위의 알고리즘은 감마 보정을 사용하여 색상을 밝게 표시합니다.이것은 Apophysis 소프트웨어 등에 실장되어 있습니다.

품질을 더욱 높이기 위해 각각의 개별 색상 채널에서 감마 보정을 사용할 수 있지만 로그 함수가 느리기 때문에 이것은 매우 무거운 계산입니다.

간단한 알고리즘은 밝기가 주파수에 따라 선형적으로 의존하도록 하는 것입니다.

final_final_color[x][y] := color_avg[x][y] * 주파수_평균[x][y]/주파수_최대; 

프랙탈의 일부 부분이 세부사항을 잃게 되므로 [4]이는 바람직하지 않습니다.

밀도 추정

밀도 추정 시연입니다.위의 절반에서는 노이즈와 개별 샘플을 볼 수 있습니다.농도 추정으로 렌더링된 아래 절반에서는 노이즈가 날카로운 모서리를 파괴하지 않고 평활됩니다.

불꽃 알고리즘은 몬테카를로 시뮬레이션과 유사하며 불꽃 품질은 시뮬레이션의 반복 횟수에 정비례합니다.이 확률적 샘플링을 통해 발생하는 노이즈는 이미지를 흐리게 으로써 줄일 수 있으며, 더 짧은 시간에 더 부드러운 결과를 얻을 수 있습니다.그러나 이미지에서 많은 샘플을 받아 노이즈가 거의 없는 부분의 해상도를 잃고 싶지 않습니다.

이 문제는 렌더 시간을 최소화하면서 이미지 품질을 높이는 적응형 밀도 추정으로 해결할 수 있습니다.FLAM3는 *Adaptive Filtering for Progressive Monte Carlo Image Rendering*에 제시된 방법을 단순화한 것입니다.이것은 Frank Sukens와 Yves D가 WSCG 2000에서 발표한 논문입니다.윌럼스.필터의 폭을 사용 가능한 샘플의 수에 반비례하여 변경하는 것입니다.

그 결과 샘플이 적고 노이즈가 높은 영역은 흐릿해지고 평활화되지만 샘플이 많고 노이즈가 적은 영역은 영향을 받지 않습니다.https://github.com/scottdraves/flam3/wiki/Density-Estimation 를 참조해 주세요.

모든 Flame 구현이 밀도 추정을 사용하는 것은 아닙니다.

「 」를 참조해 주세요.

  • Microsoft Windows 및 Macintosh용 오픈 소스 프랙탈 Flame Editor인 Apophysis.
  • Flam3, Apophysis 및 기타 일반화를 지원하는 상용 프랙탈 편집기 Chaotica.
  • JWildfire는 Java로 작성된 멀티 플랫폼, 오픈 소스 프랙탈 화염 편집기입니다.
  • Electric Sheep: 분산 컴퓨팅으로 프랙탈 불꽃을 렌더링하고 표시하는 프랙탈 불꽃의 발명자가 만든 화면 보호기.
  • 프랙탈 불꽃을 발생시킬 수 있는 무료 소프트웨어, 멀티 OS 이미지 조작 프로그램인 GIMP.
  • Frax Flame은 KPT(Kai's Power Tools) 5의 일부이며 KPT 5 컬렉션의 3개의 프랙탈 앱 중 하나입니다.KPT 5는 Photoshop, Photo-Paint, PhotoImpact 및 기타 래스터 기반의 그래픽 에디터용 플러그인입니다.
  • Houdini(Houdini(소프트웨어))의 HDA인 Houdini(Houdini)의 FLAM3. FLAM3. Houdini의 3D 세계 내에서 작업 중인 프랙탈 화염의 라이브 포인트 클라우드를 생성하여 Houdini 절차 패러다임 및 애니메이션 세트를 사용하여 더 조작할 수 있습니다.

레퍼런스

  1. ^ 미첼 화이트로(2004년).메타크레이션: 예술과 인공 생명.MIT 프레스, 페이지 155.
  2. ^ a b "Information about Apophysis software". Archived from the original on 2008-09-13. Retrieved 2008-03-11.
  3. ^ Chris Gehman과 Steve Reinke(2005).가장 날카로운 포인트: 영화 끝의 애니메이션.YYZ북스 페이지 269
  4. ^ a b c "The Fractal Flame Algorithm" (PDF). (22.5 MB)