กลับไปหน้าบทความ

อ่าน 3 นาที

เปลวไฟแฟรกทัล

เปลวไฟแฟรกทัล เป็นสมาชิกของกลุ่ม ระบบฟังก์ชันแบบวนซ้ำ [ 1 ] ของ แฟรกทัล ที่สร้างโดย Scott Draves ในปี 1992 [ 2 ] ต่อมาโค้ดโอเพนซอร์สของ Draves ได้ถูกพอร์ตไปยังซอฟต์แวร์กราฟิก...

เปลวไฟแฟรกทัล

เปลวไฟแบบแฟร็กทัลที่สร้างขึ้นโดยโครงการคอมพิวเตอร์Electric Sheep
เปลวไฟแฟร็กทัลที่สร้างขึ้นในอะโพฟิซิ

เปลวไฟแฟรกทัลเป็นสมาชิกของกลุ่มระบบฟังก์ชันแบบวนซ้ำ[ 1 ]ของแฟรกทัลที่สร้างโดยScott Dravesในปี 1992 [ 2 ]ต่อมาโค้ดโอเพนซอร์สของ Draves ได้ถูกพอร์ตไปยังซอฟต์แวร์กราฟิกAdobe After Effects [ 3 ]และแปลเป็นโปรแกรมแก้ไขเปลวไฟแฟรกทัลApophysis [ 2 ]

เปลวไฟแฟร็กทัลแตกต่างจากระบบฟังก์ชันวนซ้ำทั่วไปในสามประการ:

การปรับโทนสีและการลงสีถูกออกแบบมาเพื่อแสดงรายละเอียดของแฟร็กทัลให้ได้มากที่สุด ซึ่งโดยทั่วไปจะทำให้ได้ภาพที่สวยงามยิ่งขึ้น

อัลกอริทึม

อัลกอริทึมประกอบด้วยสองขั้นตอน ได้แก่ การสร้างฮิสโตแกรมและการแสดงผลฮิสโตแกรม

การสร้างฮิสโตแกรม

เปลวไฟแบบแฟร็กทัล

ขั้นแรก จะวนซ้ำชุดฟังก์ชัน โดยเริ่มจากจุดP = (Px,Py,Pc) ที่เลือกแบบสุ่ม โดยที่พิกัดที่สามแสดงถึงสีปัจจุบันของจุดนั้น

ชุดฟังก์ชันเปลวไฟ:

ในแต่ละรอบ ให้เลือกฟังก์ชันใดฟังก์ชันหนึ่งข้างต้น โดยที่ความน่าจะเป็นที่F jจะถูกเลือกคือp jจากนั้นคำนวณค่าP ในรอบถัดไป โดยการใช้F jกับ(Px,Py )

แต่ละฟังก์ชันมีรูปแบบดังต่อไปนี้:

โดยที่พารามิเตอร์w kเรียกว่าน้ำหนักของการเปลี่ยนแปลง V k Draves แนะนำ [ 4 ]ว่าค่าทั้งหมด:s จะต้องไม่เป็นลบและรวมกันได้หนึ่ง แต่การใช้งานเช่น Apophysis ไม่ได้กำหนดข้อจำกัดนั้น

ฟังก์ชันV kเป็นชุดของฟังก์ชันที่กำหนดไว้ล่วงหน้า ตัวอย่างบางส่วน[ 4 ]คือ

  • V 0 ( x , y ) = ( x , y ) (เชิงเส้น)
  • V 1 ( x y ) = (sin x ,sin y ) (ไซน์)
  • V 2 ( x , y ) = ( x , y )/( x 2 + y 2 ) (ทรงกลม)

สีPcของจุดนั้นผสมผสานกับสีที่เกี่ยวข้องกับฟังก์ชันประยุกต์ล่าสุดF j :

Pc := (Pc + (F j ) color ) / 2

หลังจากแต่ละรอบการทำซ้ำ จะมีการอัปเดตฮิสโตแกรม ณ จุดที่สอดคล้องกับ(Px,Py)โดยดำเนินการดังนี้:

ฮิสโตแกรม[ x ][ y ][ ความถี่] := ฮิสโตแกรม[ x ][ y ][ ความถี่] + 1 ฮิสโตแกรม[ x ][ y ][ สี] := ( ฮิสโตแกรม[ x ][ y ][ สี] + P . c ) / 2

ดังนั้นสีต่างๆ ในภาพจะสะท้อนให้เห็นถึงฟังก์ชันที่ใช้ในการสร้างส่วนนั้นๆ ของภาพ

การแสดงผลภาพ

เพื่อเพิ่มคุณภาพของภาพ เราสามารถใช้เทคนิคซูเปอร์แซมปลิงเพื่อลดสัญญาณรบกวนได้ วิธีนี้เกี่ยวข้องกับการสร้างฮิสโตแกรมที่มีขนาดใหญ่กว่าภาพ เพื่อให้แต่ละพิกเซลมีจุดข้อมูลหลายจุดให้ดึงมาใช้ ตัวอย่างเช่น สร้างฮิสโตแกรมที่มีเซลล์ขนาด 300×300 เพื่อวาดภาพขนาด 100×100 พิกเซล แต่ละพิกเซลจะใช้กลุ่มช่องฮิสโตแกรมขนาด 3×3 ในการคำนวณค่าของมัน

สำหรับแต่ละพิกเซล(x,y)ในภาพสุดท้าย ให้ทำการคำนวณดังต่อไปนี้:

frequency_avg [ x ][ y ] := average_of_histogram_cells_frequency ( x , y ); color_avg [ x ][ y ] := average_of_histogram_cells_color ( x , y );alpha [ x ][ y ] := log ( frequency_avg [ x ][ y ]) / log ( frequency_max ); //frequency_max คือจำนวนการวนซ้ำสูงสุดที่ตรงกับเซลล์ในฮิสโตแกรมfinal_pixel_color [ x ][ y ] := color_avg [ x ][ y ] * alpha [ x ][ y ] ^ ( 1 / gamma ); //gamma เป็นค่าที่มากกว่า 1

อัลกอริทึมข้างต้นใช้การปรับแก้แกมมาเพื่อให้สีดูสว่างขึ้น ตัวอย่างเช่น มีการนำไปใช้ในซอฟต์แวร์ Apophysis

เพื่อเพิ่มคุณภาพให้ดียิ่งขึ้นไปอีก เราสามารถใช้การปรับแก้แกมมากับแต่ละช่องสีได้ แต่การคำนวณแบบนี้จะหนักมาก เนื่องจาก ฟังก์ชัน ลอการิทึมทำงานช้า

อัลกอริทึมที่ง่ายกว่าคือ การกำหนดให้ความสว่างแปรผันเชิงเส้นกับความถี่:

final_pixel_color [ x ][ y ] := color_avg [ x ][ y ] * frequency_avg [ x ][ y ] / frequency_max ;

แต่สิ่งนี้จะทำให้บางส่วนของแฟรกทัลสูญเสียรายละเอียด ซึ่งเป็นสิ่งที่ไม่พึงประสงค์[ 4 ]

การประมาณความหนาแน่น

อัลกอริทึมเปลวไฟนั้นคล้ายกับการจำลองแบบมอนเตคาร์โลโดยคุณภาพของเปลวไฟจะแปรผันโดยตรงกับจำนวนรอบของการจำลอง สัญญาณรบกวนที่เกิดจากการสุ่มตัวอย่างแบบสุ่มนี้สามารถลดลงได้โดยการเบลอภาพ เพื่อให้ได้ผลลัพธ์ที่เรียบเนียนขึ้นในเวลาที่น้อยลง อย่างไรก็ตาม เราไม่ต้องการสูญเสียความละเอียดในส่วนของภาพที่ได้รับตัวอย่างจำนวนมากและมีสัญญาณรบกวนน้อย

ปัญหานี้สามารถแก้ไขได้ด้วยการประมาณความหนาแน่น แบบปรับได้ เพื่อเพิ่มคุณภาพของภาพในขณะที่ลดเวลาการเรนเดอร์ให้น้อยที่สุด FLAM3 ใช้การลดทอนวิธีการที่นำเสนอใน *Adaptive Filtering for Progressive Monte Carlo Image Rendering* ซึ่งเป็นบทความที่นำเสนอในงาน WSCG 2000 โดย Frank Suykens และ Yves D. Willems แนวคิดคือการปรับความกว้างของตัวกรองให้แปรผกผันกับจำนวนตัวอย่างที่มีอยู่

ส่งผลให้บริเวณที่มีตัวอย่างน้อยและมีสัญญาณรบกวนสูงจะเบลอและเรียบเนียนขึ้น แต่บริเวณที่มีตัวอย่างมากและมีสัญญาณรบกวนต่ำจะไม่ได้รับผลกระทบ[ 5 ]

ไม่ใช่ทุกการใช้งาน Flame ที่ใช้การประมาณความหนาแน่น

ดูเพิ่มเติม

  • Apophysisเป็นโปรแกรมแก้ไขเปลวไฟแฟร็กทัลแบบโอเพนซอร์สสำหรับ Microsoft Windows และ Macintosh
  • Electric Sheepคือโปรแกรมรักษาหน้าจอที่สร้างโดยผู้คิดค้นเปลวไฟแบบแฟร็กทัล ซึ่งแสดงผลเปลวไฟเหล่านั้นผ่านการประมวลผลแบบกระจาย
  • GIMPเป็น โปรแกรม แก้ไขภาพฟรีที่ใช้งานได้บนหลายระบบปฏิบัติการและสามารถสร้างภาพเปลวไฟแบบแฟร็กทัลได้
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Fractal_flame&oldid=1288101380 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เปลวไฟแฟรกทัล

เปลวไฟแฟรกทัล เป็นสมาชิกของกลุ่ม ระบบฟังก์ชันแบบวนซ้ำ [ 1 ] ของ แฟรกทัล ที่สร้างโดย Scott Draves ในปี 1992 [ 2 ] ต่อมาโค้ดโอเพนซอร์สของ Draves ได้ถูกพอร์ตไปยังซอฟต์แวร์กราฟิก...

อัลกอริทึม

อัลกอริทึมประกอบด้วยสองขั้นตอน ได้แก่ การสร้าง ฮิสโตแกรม และการแสดงผลฮิสโตแกรม

การสร้างฮิสโตแกรม

ขั้นแรก จะวนซ้ำชุดฟังก์ชัน โดยเริ่มจากจุด P = (Px,Py,Pc) ที่เลือกแบบสุ่ม โดยที่พิกัดที่สามแสดงถึงสีปัจจุบันของจุดนั้น

การแสดงผลภาพ

เพื่อเพิ่มคุณภาพของภาพ เราสามารถใช้ เทคนิคซูเปอร์แซมปลิง เพื่อลดสัญญาณรบกวนได้ วิธีนี้เกี่ยวข้องกับการสร้างฮิสโตแกรมที่มีขนาดใหญ่กว่าภาพ เพื่อให้แต่ละพิกเซลมีจุดข้อมูลหลายจุดให้ดึงมาใช้ ตัวอย่างเช่น สร้างฮิสโตแกรมที่มีเซลล์ขนาด 300×300 เพื่อวาดภาพขนาด 100×100...