← กลับไปยังบทความทั้งหมด

อัลกอริทึมการขยายขนาดพิกเซลอาร์ต

สรุปใจความสำคัญ

  • อัลกอริทึมการขยายขนาดพิกเซลอาร์ตมุ่งเน้นการลดรอยหยักและสร้างเส้นขอบที่เรียบเนียน แทนที่จะเป็นการรักษาพิกเซลเดิมให้คงที่
  • EPX (Eric's Pixel Expansion) เป็นหนึ่งในอัลกอริทึมยุคแรกๆ ที่พัฒนาขึ้นเพื่อพอร์ตเกมจาก PC ไปยัง Macintosh
  • ตัวคูณการขยายขนาด 2 เท่า (2x) เป็นค่ามาตรฐานที่พบบ่อยที่สุดในซอฟต์แวร์อีมูเลเตอร์
  • อัลกอริทึมอย่าง Eagle มีข้อบกพร่องในการจัดการพิกเซลเดี่ยว ซึ่งถูกแก้ไขในรุ่นต่อมาอย่าง Scale2x และ HQ2x

อัลกอริทึมการขยายขนาดพิกเซลอาร์ต (Pixel-art scaling algorithms) คือตัวกรองกราฟิกที่ออกแบบมาเพื่อปรับปรุงรูปลักษณ์ของภาพกราฟิกพิกเซลอาร์ตแบบ 2 มิติที่วาดด้วยมือ โดยเป็นรูปแบบหนึ่งของการเพิ่มประสิทธิภาพรูปภาพโดยอัตโนมัติ ซึ่งแตกต่างจากการปรับขนาดภาพ (Image Rescaling) ทั่วไปที่มุ่งเน้นการรักษาลักษณะเดิมของภาพ แต่อัลกอริทึมเหล่านี้มุ่งเน้นการลดรอยหยักและสร้างเส้นขอบที่ดูเรียบเนียนขึ้น

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

ตัวอย่างการเปรียบเทียบการขยายขนาดพิกเซลอาร์ต
การเปรียบเทียบผลลัพธ์จากการใช้ตัวกรองขยายขนาดพิกเซลอาร์ตแบบต่างๆ

การประยุกต์ใช้และข้อจำกัด

เทคโนโลยีนี้ถูกนำมาใช้บ่อยที่สุดในการปรับปรุงภาพของวิดีโอเกมยุคที่ 4 และยุคก่อนหน้า บนโปรแกรมจำลอง (Emulator) ของเครื่องเกมอาเขตและคอนโซล อัลกอริทึมส่วนใหญ่จึงถูกออกแบบมาให้ทำงานแบบเรียลไทม์ (Real-time) ที่ความเร็ว 60 เฟรมต่อวินาที สำหรับภาพอินพุตที่มีขนาดเล็ก ซึ่งทำให้มีข้อจำกัดด้านเทคนิคในการเขียนโปรแกรมเพื่อให้ประมวลผลได้ทันท่วงที

ตัวคูณการขยายขนาดที่พบบ่อยที่สุดคือ 2 เท่า (2×), ในขณะที่การขยาย 3 เท่า, 4 เท่า, 5 เท่า และ 6 เท่า มีการใช้งานน้อยกว่า

การเปรียบเทียบการขยายขนาดภาพพิกเซล
ผลลัพธ์ของการขยายขนาดพิกเซลอาร์ตด้วยวิธีที่แตกต่างกัน

อัลกอริทึมที่สำคัญ

SAA5050 'Diagonal Smoothing'

ชิปสร้างตัวอักษร Teletext รุ่น Mullard SAA5050 (ปี 1980) ใช้อัลกอริทึมการขยายขนาดพิกเซลแบบพื้นฐานเพื่อสร้างตัวอักษรที่มีความละเอียดสูงขึ้นจากข้อมูลใน ROM ภายใน โดยจะขยายตารางพิกเซลขนาด 5×9 พิกเซล ให้กลายเป็น 10×18 พิกเซล ผ่านการทำให้เส้นทแยงมุมเรียบเนียน (Smoothing diagonals) ส่งผลให้ได้ตัวอักษรที่มีลักษณะเป็นเหลี่ยมมุมเฉพาะตัว

EPX / Scale2× / AdvMAME2×

Eric's Pixel Expansion (EPX) พัฒนาโดย Eric Johnston จาก LucasArts ประมาณปี 1992 เพื่อใช้ในการพอร์ตเกมที่ใช้เอนจิน SCUMM จาก IBM PC (ความละเอียด 320×200) ไปยังเครื่อง Macintosh ยุคแรกที่มีความละเอียดสูงกว่าประมาณสองเท่า

แผนผังการทำงานของอัลกอริทึม EPX
อัลกอริทึม EPX จะขยายพิกเซล P หนึ่งพิกเซลให้กลายเป็นพิกเซลใหม่ 4 พิกเซล โดยพิจารณาจากพิกเซลรอบข้าง

ในเวลาต่อมาได้มีการพัฒนาเวอร์ชันที่ประสิทธิภาพสูงขึ้นแต่ให้ผลลัพธ์เหมือนเดิมในชื่อ AdvMAME2× และ Scale2× (ประมาณปี 2001) ซึ่งสามารถใช้งานได้ใน DOSBox ผ่านตัวเลือก scaler=advmame2x

Scale3× / AdvMAME3× และ ScaleFX

อัลกอริทึม AdvMAME3× และ Scale3× เป็นการขยายแนวคิดของ EPX ให้ครอบคลุมการขยายขนาด 3 เท่า โดยพิกเซลที่มุมจะถูกคำนวณในลักษณะเดียวกับ EPX

ตัวอย่างการขยายขนาด 3 เท่า
การทำงานของ Scale3x ในการเพิ่มความละเอียดภาพ
แผนผังการขยายพิกเซล E เป็น 9 พิกเซล
การขยายพิกเซล E ให้เป็น 9 พิกเซลใหม่โดยใช้อัลกอริทึม Scale3x

Eagle

อัลกอริทึม Eagle จะสร้างพิกเซลขาออก 4 พิกเซลสำหรับทุกๆ 1 พิกเซลขาเข้า โดยเริ่มจากการกำหนดให้ทั้ง 4 พิกเซลมีสีเดียวกับพิกเซลต้นฉบับ (Nearest-neighbor) จากนั้นจะตรวจสอบพิกเซลด้านบน ด้านซ้าย และด้านบนซ้าย หากทั้งสามมีสีเดียวกัน จะเปลี่ยนสีพิกเซลมุมบนซ้ายของผลลัพธ์ให้เป็นสีนั้นแทน อย่างไรก็ตาม Eagle มีข้อบกพร่องคือหากมีพิกเซลสีเดียวโดดๆ บนพื้นหลังที่ต่างกัน พิกเซลนั้นอาจหายไปได้ ซึ่งปัญหานี้ถูกแก้ไขในอัลกอริทึมรุ่นหลังอย่าง EPX และ HQ2x

2×SaI

2× Scale and Interpolation (2×SaI) ได้รับแรงบันดาลใจจาก Eagle พัฒนาโดย Derek Liauw Kie Fa (Kreed) เพื่อใช้ในอีมูเลเตอร์เป็นหลัก เช่น ZSNES และ VisualBoyAdvance โดยทำงานบนเมทริกซ์พิกเซลขนาด 4×4 เพื่อคำนวณการขยายขนาดพิกเซล

เมทริกซ์การทำงานของ 2xSaI
การใช้เมทริกซ์ 4x4 ในการประมวลผลพิกเซลของ 2xSaI

คำถามที่พบบ่อย

การขยายขนาดพิกเซลอาร์ตต่างจากการขยายขนาดภาพทั่วไปอย่างไร?

การขยายขนาดภาพทั่วไปมุ่งเน้นการรักษาภาพเดิมให้เหมือนเดิมที่สุด แต่การขยายขนาดพิกเซลอาร์ตใช้อัลกอริทึมเฉพาะเพื่อวิเคราะห์พิกเซลรอบข้างและเติมพิกเซลใหม่เพื่อลดรอยหยัก (Aliasing) และทำให้เส้นขอบดูเรียบเนียนขึ้น

ทำไมต้องใช้อัลกอริทึมเหล่านี้ในอีมูเลเตอร์?

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

Scale2x และ EPX คืออะไร?

Scale2x และ EPX คืออัลกอริทึมที่ขยายภาพ 2 เท่า โดยพิจารณาจากสีของพิกเซลรอบข้างเพื่อตัดสินใจว่าจะเติมพิกเซลใหม่ในตำแหน่งใด เพื่อให้เส้นขอบของวัตถุในภาพดูเรียบเนียนขึ้น

อัลกอริทึมการขยายขนาดพิกเซลอาร์ตมีข้อเสียหรือไม่?

มีข้อเสียคืออาจทำให้ภาพเกิดการเปลี่ยนแปลง (Artifacts) หรือทำให้รายละเอียดบางอย่างที่ศิลปินตั้งใจวาดไว้หายไป หากอัลกอริทึมวิเคราะห์พิกเซลรอบข้างผิดพลาด

Scale3x ทำงานอย่างไร?

เป็นการขยายแนวคิดของ EPX ให้เป็นการขยายขนาด 3 เท่า โดยเพิ่มจำนวนพิกเซลที่สร้างขึ้นจาก 1 พิกเซลต้นฉบับให้เป็น 9 พิกเซล แทนที่จะเป็น 4 พิกเซล