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


เปลวไฟแฟรกทัลเป็นสมาชิกของกลุ่มระบบฟังก์ชันแบบวนซ้ำ[ 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เป็น โปรแกรม แก้ไขภาพฟรีที่ใช้งานได้บนหลายระบบปฏิบัติการและสามารถสร้างภาพเปลวไฟแบบแฟร็กทัลได้
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เปลวไฟแฟรกทัล
เปลวไฟแฟรกทัล เป็นสมาชิกของกลุ่ม ระบบฟังก์ชันแบบวนซ้ำ [ 1 ] ของ แฟรกทัล ที่สร้างโดย Scott Draves ในปี 1992 [ 2 ] ต่อมาโค้ดโอเพนซอร์สของ Draves ได้ถูกพอร์ตไปยังซอฟต์แวร์กราฟิก...
อัลกอริทึม
อัลกอริทึมประกอบด้วยสองขั้นตอน ได้แก่ การสร้าง ฮิสโตแกรม และการแสดงผลฮิสโตแกรม
การสร้างฮิสโตแกรม
ขั้นแรก จะวนซ้ำชุดฟังก์ชัน โดยเริ่มจากจุด P = (Px,Py,Pc) ที่เลือกแบบสุ่ม โดยที่พิกัดที่สามแสดงถึงสีปัจจุบันของจุดนั้น
การแสดงผลภาพ
เพื่อเพิ่มคุณภาพของภาพ เราสามารถใช้ เทคนิคซูเปอร์แซมปลิง เพื่อลดสัญญาณรบกวนได้ วิธีนี้เกี่ยวข้องกับการสร้างฮิสโตแกรมที่มีขนาดใหญ่กว่าภาพ เพื่อให้แต่ละพิกเซลมีจุดข้อมูลหลายจุดให้ดึงมาใช้ ตัวอย่างเช่น สร้างฮิสโตแกรมที่มีเซลล์ขนาด 300×300 เพื่อวาดภาพขนาด 100×100...