อ่าน 7 นาที
การจัดองค์ประกอบอัลฟา
ใน กราฟิกคอมพิวเตอร์ การผสมอัลฟา หรือ การผสมอัลฟา คือกระบวนการรวมภาพหนึ่งภาพเข้ากับพื้นหลังเพื่อสร้างลักษณะ ความโปร่งใส บางส่วนหรือ ทั้งหมด [ 1 ] มักจะเป็นประโยชน์ในการเรนเดอร์...
การจัดองค์ประกอบอัลฟา

ในกราฟิกคอมพิวเตอร์การผสมอัลฟาหรือการผสมอัลฟาคือกระบวนการรวมภาพหนึ่งภาพเข้ากับพื้นหลังเพื่อสร้างลักษณะความโปร่งใส บางส่วนหรือ ทั้งหมด[ 1 ]มักจะเป็นประโยชน์ในการเรนเดอร์องค์ประกอบภาพ (พิกเซล) ในขั้นตอนหรือเลเยอร์ ที่แยกจากกัน จากนั้นรวมภาพ 2 มิติที่ได้เข้าเป็นภาพสุดท้ายภาพเดียวที่เรียกว่าคอมโพสิตการผสมภาพถูกนำมาใช้อย่างกว้างขวางในภาพยนตร์เมื่อรวมองค์ประกอบภาพที่เรนเดอร์ด้วยคอมพิวเตอร์ เข้ากับ ภาพจริงการผสมอัลฟายังใช้ในกราฟิกคอมพิวเตอร์ 2 มิติเพื่อวาง องค์ประกอบพื้นหน้า แบบแรสเตอร์ไว้เหนือพื้นหลัง
เพื่อให้สามารถรวมองค์ประกอบภาพของรูปภาพได้อย่างถูกต้อง จำเป็นต้องเก็บมาสก์ ที่เกี่ยวข้อง กับแต่ละองค์ประกอบนอกเหนือจากสีของมันด้วย เลเยอร์มาสก์นี้ประกอบด้วยข้อมูลการครอบคลุม—รูปร่างของรูปทรงเรขาคณิตที่กำลังวาด—ทำให้สามารถแยกแยะระหว่างส่วนของภาพที่มีการวาดบางสิ่งบางอย่างและส่วนที่ว่างเปล่าได้
แม้ว่าการรวมภาพสองภาพขั้นพื้นฐานที่สุดคือการวางภาพหนึ่งทับอีกภาพหนึ่ง แต่ก็ยังมีวิธีการหรือโหมดการผสมผสาน อีกมากมาย ที่ใช้กัน
ประวัติศาสตร์
แนวคิดของช่องอัลฟาได้รับการแนะนำโดยAlvy Ray SmithและEd Catmullในช่วงปลายทศวรรษ 1970 ที่ห้องปฏิบัติการคอมพิวเตอร์กราฟิกส์ของสถาบันเทคโนโลยีนิวยอร์ก Bruce A. Wallace ได้พัฒนาตัวดำเนินการแบบตรงเดียวกันโดยอิงจาก แบบจำลอง การสะท้อน / การส่งผ่าน ทางกายภาพ ในปี 1981 [ 2 ]บทความในปี 1984 โดยThomas PorterและTom Duffได้แนะนำอัลฟาแบบพรีมัลติพลีดโดยใช้แนวทางทางเรขาคณิต[ 3 ]
Smith อธิบายการใช้คำว่าอัล ฟาไว้ดังนี้: "เราเรียกมันว่าอย่างนั้นเพราะ สูตรการแทรกสอดเชิงเส้นแบบคลาสสิก ที่ใช้ตัวอักษรกรีก(อัลฟา) เพื่อควบคุมปริมาณการแทรกสอดระหว่างภาพสองภาพ A และ B ในกรณีนี้" [ 4 ]นั่นคือ เมื่อรวมภาพ A ไว้บนภาพ B ค่าของในสูตรจะถูกนำมาจากช่องอัลฟาของ A โดยตรง
คำอธิบาย
ในภาพ 2 มิติ ค่าสีจะถูกจัดเก็บไว้สำหรับแต่ละองค์ประกอบภาพ (พิกเซล) ซึ่งมักจะเป็นการผสมผสานระหว่างสีแดง สีเขียว และสีน้ำเงิน ( RGB ) เมื่อใช้การผสมสีแบบอัลฟา แต่ละพิกเซลจะมีค่าตัวเลขเพิ่มเติมถูกจัดเก็บไว้ในช่องอัลฟาโดยมีค่าตั้งแต่ 0 ถึง 1 ค่า 0 หมายความว่าพิกเซลนั้นโปร่งใส อย่างสมบูรณ์ และสีในพิกเซลด้านล่างจะปรากฏให้เห็น ค่า 1 หมายความว่าพิกเซลนั้นทึบแสงอย่างสมบูรณ์
ด้วยการมีอยู่ของช่องอัลฟา ทำให้สามารถแสดงการดำเนินการคอมโพสิตภาพโดยใช้พีชคณิตคอมโพสิตได้ ตัวอย่างเช่น เมื่อมีภาพสองภาพAและBการดำเนินการคอมโพสิตที่พบบ่อยที่สุดคือการรวมภาพเพื่อให้Aปรากฏในพื้นหน้าและBปรากฏในพื้นหลัง ซึ่งสามารถแสดงได้เป็นA ทับBนอกจากทับ แล้ว Porter และ Duff [ 3 ]ได้กำหนดตัวดำเนินการคอมโพสิตใน , held out by (วลีนี้หมายถึงการจัดวางแบบ holdoutและมักจะย่อเป็นout ), atopและxor (และตัวดำเนินการย้อนกลับrover , rin , routและratop ) จากการพิจารณาตัวเลือกในการผสมสีของพิกเซลสองพิกเซลเมื่อการครอบคลุมของพวกมันถูกวางซ้อนกันในเชิงแนวคิดแบบตั้งฉาก:
ตัวอย่างเช่น ตัวดำเนินการ overสามารถทำได้โดยการใช้สูตรต่อไปนี้กับแต่ละพิกเซล: [ 2 ]
ในที่นี้, และแทนส่วนประกอบสีของพิกเซลในผลลัพธ์ของ "การประมวลผล" ภาพ A และภาพ B ตามลำดับ ซึ่งนำไปใช้กับแต่ละช่องสี (แดง/เขียว/น้ำเงิน) แยกกัน ในขณะที่, และคือค่าอัลฟาของพิกเซลนั้นๆ
ตัว ดำเนินการ overในทางปฏิบัติคือการดำเนินการระบายสีปกติ (ดูอัลกอริทึมของ Painter ) ตัวดำเนินการ inและoutเทียบเท่ากับการตัดในคอมโพ สิตอัลฟา ทั้งสองใช้เฉพาะช่องอัลฟาของภาพที่สองและไม่สนใจส่วนประกอบสี นอกจากนี้plusยังกำหนดการผสมแบบเพิ่ม[ 3 ]
แบบตรงเทียบกับแบบคูณล่วงหน้า
หากมีการใช้ช่องอัลฟาในภาพ จะมีรูปแบบการแสดงผลสองแบบที่ใช้กันทั่วไป ได้แก่ อัลฟาแบบตรง (ไม่สัมพันธ์กัน) และอัลฟาแบบคูณล่วงหน้า (สัมพันธ์กัน)
- เมื่อใช้ค่าอัลฟ่าแบบตรงค่า RGB จะแทนสีของวัตถุหรือพิกเซล โดยไม่คำนึงถึงความทึบแสง นี่คือวิธีการที่กล่าวถึงโดย ตัวดำเนินการ overในส่วนก่อนหน้า
- ด้วยค่าอัลฟาที่คูณไว้ล่วงหน้าส่วนประกอบ RGB แสดงถึงการปล่อยแสงของวัตถุหรือพิกเซล และค่าอัลฟาแสดงถึงการบดบัง ตัว ดำเนินการ โอเวอร์จึงกลายเป็น: [ 3 ]
การเปรียบเทียบ
ข้อได้เปรียบที่สำคัญที่สุดของอัลฟาแบบพรีมัลติพลายด์คือ ช่วยให้การผสม การแทรกสอดและการกรอง เป็นไปอย่างถูกต้อง การแทรกสอดแบบธรรมดาโดยไม่มีอัลฟาแบบพรีมัลติพลายด์จะทำให้ข้อมูล RGB รั่วไหลออกจากบริเวณที่โปร่งใสอย่างสมบูรณ์ (A=0) แม้ว่าข้อมูล RGB นี้จะมองไม่เห็นก็ตาม เมื่อทำการแทรกสอดหรือกรองภาพที่มีขอบเขตที่ชัดเจนระหว่างบริเวณที่โปร่งใสและทึบแสง อาจส่งผลให้เกิดขอบเขตของสีที่ไม่ปรากฏในภาพต้นฉบับ ข้อผิดพลาดยังเกิดขึ้นในบริเวณที่มีความโปร่งใสบางส่วน เนื่องจากส่วนประกอบ RGB ไม่ได้รับการถ่วงน้ำหนักอย่างถูกต้อง ทำให้สีของพิกเซลที่โปร่งใสกว่า (อัลฟาต่ำกว่า) ได้รับการถ่วงน้ำหนักสูงอย่างไม่ถูกต้อง[ 5 ]
อาจใช้ค่าอัลฟาแบบพรีมัลติพลายด์เพื่ออนุญาตให้บริเวณที่มีการผสมอัลฟาแบบปกติ (เช่น ควัน) และบริเวณที่มีโหมดการผสมแบบเพิ่ม (เช่น เอฟเฟกต์เปลวไฟและประกายระยิบระยับ) สามารถเข้ารหัสได้ภายในภาพเดียวกัน[ 6 ] [ 7 ]ซึ่งแสดงด้วยชุดค่า RGBA สามค่าที่แสดงการปล่อยแสงโดยไม่มีการบดบัง เช่น (0.4, 0.3, 0.2, 0.0)
ข้อดีอีกประการหนึ่งของอัลฟาแบบพรีมัลติพลีดคือประสิทธิภาพ ในบางสถานการณ์ สามารถลดจำนวนการดำเนินการคูณได้ (เช่น หากใช้ภาพหลายครั้งในระหว่างการคอมโพสิตในภายหลัง) การดำเนินการ Porter–Duff มีรูปแบบที่เรียบง่ายเฉพาะในอัลฟาแบบพรีมัลติพลีดเท่านั้น[ 3 ]ไปป์ไลน์การเรนเดอร์บางส่วนเปิดเผยพื้นผิว API "อัลฟาตรง" แต่แปลงเป็นอัลฟาแบบพรีมัลติพลีดเพื่อประสิทธิภาพ[ 8 ]
ข้อเสียอย่างหนึ่งของการใช้ค่าอัลฟาแบบพรีมัลติพลีทคือ อาจลดความแม่นยำสัมพัทธ์ของค่า RGB เมื่อใช้การแสดงค่าสีแบบจำนวนเต็มหรือจุดคงที่ ซึ่งอาจทำให้คุณภาพของภาพลดลงอย่างเห็นได้ชัด หากข้อมูลสีถูกปรับให้สว่างขึ้นในภายหลัง หรือหากลบช่องอัลฟาออก ในทางปฏิบัติ มักจะไม่สังเกตเห็นได้ชัดเจน เนื่องจากในระหว่างการดำเนินการประกอบภาพทั่วไป เช่น OVER ผลกระทบของข้อมูลสีที่มีความแม่นยำต่ำในบริเวณที่มีค่าอัลฟาต่ำต่อภาพสุดท้าย (หลังการประกอบภาพ) จะลดลงตามไปด้วย การสูญเสียความแม่นยำนี้ยังทำให้ภาพแบบพรีมัลติพลีทบีบอัด ได้ง่ายขึ้น โดยใช้รูปแบบการบีบอัดบางอย่าง เนื่องจากภาพเหล่านี้ไม่ได้บันทึกความแปรผันของสีที่ซ่อนอยู่ภายในบริเวณโปร่งใส และสามารถจัดสรรบิตน้อยลงเพื่อเข้ารหัสบริเวณที่มีค่าอัลฟาต่ำ ข้อจำกัดเดียวกันของความลึกของบิตการควอนไทเซชันที่ต่ำกว่า เช่น 8 บิตต่อช่อง ก็มีอยู่ในภาพที่ไม่มีค่าอัลฟาเช่นกัน และข้อโต้แย้งนี้จึงเป็นปัญหา
ตัวอย่าง
สมมติว่าสีของพิกเซลแสดงโดยใช้ค่า RGBA แบบตรง (ไม่ใช่แบบพรีมัลติพลายด์) ค่าพิกเซล (0, 0.7, 0, 0.5) หมายถึงพิกเซลที่มีความเข้มสีเขียว 70% ของค่าสูงสุด และความทึบแสง 50% หากสีเป็นสีเขียวทั้งหมด ค่า RGBA จะเป็น (0, 1, 0, 0.5) อย่างไรก็ตาม หากพิกเซลนี้ใช้ค่าอัลฟาแบบพรีมัลติพลายด์ ค่า RGB ทั้งหมด (0, 0.7, 0) จะถูกคูณหรือปรับขนาดสำหรับการบดบังด้วยค่าอัลฟา 0.5 ซึ่งจะถูกต่อท้ายเพื่อให้ได้ (0, 0.35, 0, 0.5) ในกรณีนี้ ค่า 0.35 สำหรับช่อง G แสดงถึงความเข้มของการปล่อยแสงสีเขียว 70% (โดยมีการบดบัง 50%) การปล่อยแสงสีเขียวบริสุทธิ์จะถูกเข้ารหัสเป็น (0, 0.5, 0, 0.5) การทราบว่าไฟล์ใช้ค่าอัลฟาแบบตรงหรือแบบคูณล่วงหน้าเป็นสิ่งสำคัญในการประมวลผลหรือประกอบภาพอย่างถูกต้อง เนื่องจากต้องใช้การคำนวณที่แตกต่างกัน
การปล่อยแสงโดยไม่มีสิ่งกีดขวางไม่สามารถแสดงได้ด้วยค่าอัลฟาแบบตรง ในกรณีนี้จึงไม่มีการแปลงค่าใดๆ
รูปแบบไฟล์ภาพที่รองรับช่องอัลฟา
รูปแบบภาพยอดนิยมที่รองรับช่องอัลฟา ได้แก่PNGและTIFFส่วนGIFรองรับความโปร่งใส 1 บิต โดยการกำหนดค่าหนึ่งในพาเลทให้เป็นค่าโปร่งใสการรองรับช่องอัลฟาพบได้ในตัวแปลงสัญญาณวิดีโอบางตัว เช่น Animation และ Apple ProRes 4444 ของรูปแบบ QuickTime หรือในตัวแปลงสัญญาณหลายรูปแบบ Techsmith
โดยทั่วไป ไฟล์รูปแบบBMPไม่รองรับช่องสัญญาณนี้ อย่างไรก็ตาม ในรูปแบบต่างๆ เช่น 32 บิต (888–8) หรือ 16 บิต (444–4) สามารถบันทึกช่องสัญญาณอัลฟาได้ แม้ว่าระบบหรือโปรแกรมบางโปรแกรมจะไม่สามารถอ่านได้ก็ตาม โดยส่วนใหญ่จะถูกนำไปใช้ในวิดีโอเกมบางเกม[ 9 ]หรือแอปพลิเคชันเฉพาะ[ 10 ]นอกจากนี้ยังมีการสร้างโปรแกรมเฉพาะสำหรับการสร้าง BMP เหล่านี้ด้วย
| รูปแบบไฟล์/โคเดก[ 11 ] | ความลึกสูงสุด | พิมพ์ | การรองรับเบราว์เซอร์ | ประเภทสื่อ | หมายเหตุ |
|---|---|---|---|---|---|
| Apple ProRes 4444 | 16 บิต | ไม่มี | วิดีโอ (.mov) | ProRes เป็นผู้สืบทอดของApple Intermediate Codec [ 12 ] | |
| HEVC / h.265 | 10 บิต | จำกัดเฉพาะซาฟารี | วิดีโอ (.hevc) | ผู้สืบทอดที่ตั้งใจไว้ของH.264 [ 13 ] [ 14 ] [ 15 ] | |
| WebM (ตัวแปลงสัญญาณวิดีโอ VP8, VP9 หรือ AV1) | 12 บิต | เบราว์เซอร์สมัยใหม่ทั้งหมด | วิดีโอ (.webm) | แม้ว่า VP8/VP9 จะได้รับการสนับสนุนอย่างกว้างขวางในเบราว์เซอร์สมัยใหม่ แต่ AV1 ยังคงได้รับการสนับสนุนอย่างจำกัด[ 16 ]เฉพาะ เบราว์เซอร์ที่ใช้ Chromium เท่านั้น ที่จะแสดงเลเยอร์อัลฟา | |
| เปิดEXR | 32 บิต | ไม่มี | รูปภาพ (.exr) | มีช่วงค่า HDR ที่กว้างที่สุด | |
| PNG | 16 บิต | ตรง | เบราว์เซอร์สมัยใหม่ทั้งหมด | รูปภาพ (.png) | |
| เอพีจีพี | 24 บิต | ตรง | การสนับสนุนระดับปานกลาง | รูปภาพ (.apng) | รองรับแอนิเมชัน[ 17 ] |
| TIFF | 32 บิต | ทั้งคู่ | ไม่มี | รูปภาพ (.tiff) | |
| ภาพเคลื่อนไหว GIF | 8 บิต | เบราว์เซอร์สมัยใหม่ทั้งหมด | รูปภาพ (.gif) | ความโปร่งใสระดับ 1 บิต | |
| เอสวีจี | 32 บิต | ตรง | เบราว์เซอร์สมัยใหม่ทั้งหมด | รูปภาพ (.svg) | อิงตามสี CSS [ 18 ] |
| JPEG XL | 32 บิต | ทั้งคู่ | การสนับสนุนระดับปานกลาง | รูปภาพ (.jxl) | อนุญาตให้มีการสูญเสียข้อมูลและ HDR [ 19 ] |
การแก้ไขแกมมา


ค่า RGB ของภาพดิจิทัลทั่วไปไม่ได้สอดคล้องกับความเข้มของแสงจริงโดยตรง แต่ถูกบีบอัดด้วย ฟังก์ชัน แก้ไขแกมมา :
การแปลงนี้ใช้ประโยชน์จากจำนวนบิตที่จำกัดในภาพที่เข้ารหัสได้อย่างมีประสิทธิภาพมากขึ้น โดยเลือกค่าที่สอดคล้องกับการรับรู้ความสว่างที่ไม่เป็นเชิงเส้นของมนุษย์ได้ดีกว่า
ดังนั้น โปรแกรมคอมพิวเตอร์ที่จัดการกับภาพดังกล่าวจะต้องถอดรหัสค่า RGB ให้เป็นพื้นที่เชิงเส้น (โดยการยกเลิกการบีบอัดแกมมา) ผสมความเข้มแสงเชิงเส้น และใช้การบีบอัดแกมมากับผลลัพธ์อีกครั้ง: [ 20 ] [ 21 ]
เมื่อรวมกับอัลฟาที่คูณไว้ล่วงหน้า การคูณล่วงหน้าจะทำในพื้นที่เชิงเส้นก่อนการบีบอัดแกมมา[ 22 ]ส่งผลให้ได้สูตรดังต่อไปนี้:
โปรดทราบว่าช่องอัลฟาอาจมีการปรับแก้แกมมาหรือไม่ก็ได้ แม้ว่าช่องสีอื่นๆ จะมีการปรับแก้แกมมาแล้วก็ตาม
วิธีการโปร่งใสอื่นๆ
แม้ว่าจะใช้เพื่อวัตถุประสงค์ที่คล้ายคลึงกัน แต่สีโปร่งใสและมาสก์ภาพไม่อนุญาตให้พิกเซลของภาพที่ซ้อนทับผสมผสานกับพิกเซลของพื้นหลังได้อย่างราบรื่น (อนุญาตเฉพาะพิกเซลของภาพทั้งหมดหรือพิกเซลของพื้นหลังทั้งหมดเท่านั้น)
สามารถสร้างเอฟเฟ็กต์ที่คล้ายกันได้ด้วยช่องอัลฟา 1 บิต ดังเช่นใน โหมด สีสูง RGBA 16 บิต ของรูปแบบไฟล์ภาพTruevision TGA และ โหมดกราฟิกสีสูงของอะแดปเตอร์แสดงผล TARGAและ AT-Vista/NU-Vista ที่เกี่ยวข้อง โหมดนี้จัดสรร 5 บิตสำหรับสี RGB หลักแต่ละสี ( RGB 15 บิต ) บวกกับบิตที่เหลืออีกหนึ่งบิตเป็น "ช่องอัลฟา"
การใช้ เทคนิค Ditheringสามารถช่วยจำลองการบดบังบางส่วนได้ ในกรณีที่มีค่าอัลฟาเพียง 1 บิตเท่านั้น
สำหรับบางแอปพลิเคชัน ช่องอัลฟาเพียงช่องเดียวอาจไม่เพียงพอ ตัวอย่างเช่น หน้าต่างกระจกสีจำเป็นต้องมีช่องความโปร่งใสแยกต่างหากสำหรับแต่ละช่อง RGB เพื่อจำลองความโปร่งใสของสีแดง สีเขียว และสีน้ำเงินแยกกัน สามารถเพิ่มช่องอัลฟาได้มากขึ้นเพื่อความแม่นยำในการกรองสีตามสเปกตรัม
วิธีการโปร่งใสที่ไม่ขึ้นกับลำดับบาง วิธีจะแทนที่ ตัวดำเนินการด้วยการประมาณค่าแบบสลับที่ได้[ 23 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- การประกอบภาพดิจิทัล - โทมัส พอร์เตอร์ และ ทอม ดัฟฟ์ (บทความต้นฉบับ)
- หลักการพื้นฐานของการจัดองค์ประกอบภาพ
- เรียนรู้การใช้งานส่วนขยาย Compositing และ Color ใน SVG 1.2 ภายใน 30 นาที!
- การสร้างอัลฟ่าแมทติ้งและการคูณล่วงหน้า
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การจัดองค์ประกอบอัลฟา
ใน กราฟิกคอมพิวเตอร์ การผสมอัลฟา หรือ การผสมอัลฟา คือกระบวนการรวมภาพหนึ่งภาพเข้ากับพื้นหลังเพื่อสร้างลักษณะ ความโปร่งใส บางส่วนหรือ ทั้งหมด [ 1 ] มักจะเป็นประโยชน์ในการเรนเดอร์...
ประวัติศาสตร์
แนวคิดของช่องอัลฟาได้รับการแนะนำโดย Alvy Ray Smith และ Ed Catmull ในช่วงปลายทศวรรษ 1970 ที่ ห้องปฏิบัติการคอมพิวเตอร์กราฟิกส์ของสถาบันเทคโนโลยีนิวยอร์ก Bruce A.
คำอธิบาย
ในภาพ 2 มิติ ค่าสีจะถูกจัดเก็บไว้สำหรับแต่ละองค์ประกอบภาพ (พิกเซล) ซึ่งมักจะเป็นการผสมผสานระหว่างสีแดง สีเขียว และสีน้ำเงิน ( RGB ) เมื่อใช้การผสมสีแบบอัลฟา แต่ละพิกเซลจะมีค่าตัวเลขเพิ่มเติมถูกจัดเก็บไว้ใน ช่องอัลฟา โดยมีค่าตั้งแต่ 0 ถึง 1 ค่า 0...
แบบตรงเทียบกับแบบคูณล่วงหน้า
หากมีการใช้ช่องอัลฟาในภาพ จะมีรูปแบบการแสดงผลสองแบบที่ใช้กันทั่วไป ได้แก่ อัลฟาแบบตรง (ไม่สัมพันธ์กัน) และอัลฟาแบบคูณล่วงหน้า (สัมพันธ์กัน)