cropped-cropped-edtaro-logo-2.jpg

Google อธิบายหลักการทำงานของระบบกันสั่นวิดีโอใน Pixel 2

Google Pixel 2 และ Google Pixel 2 XL  เป็น 2 สมาร์ทโฟนที่ได้รับการยอมรับว่ามีกล้องที่ยอดเยี่ยม ถึงขนาดได้คะแนนจากเว็บไซต์ DxOMark ถึง 98 คะแนน โดยหนึ่งในจุดเด่นของสมาร์ทโฟนทั้ง 2 ตัวนี้คือระบบกันสั่นวิดีโอที่เกิดจากการทำงานร่วมกันทั้งฮาร์ดแวร์และซอฟต์แวร์ (EIS+OIS) ก่อให้เกิดให้ผลลัพธ์อันน่าทึ่ง ทาง Google ได้ออกมาอธิบายการทำงานผ่าน Google Research Blog ว่ากว่าจะเป็นผลลัพธ์สุดท้ายที่เราเห็น ต้องผ่านขั้นตอนอะไรบ้างหนึ่งในพื้นฐานของการถ่ายวิดีโอคือต้องให้ภาพเคลื่อนไหวที่นิ่งและราบรื่น เพื่อให้ผู้ชมไม่โดนกวนใจจากการเคลื่อนไหวของภาพที่ไม่ต้องการ และโฟกัสในจุดที่ควรโฟกัส แต่การถ่ายวิดีโอด้วยสมาร์ทโฟนมีหลายปัจจัยที่ทำให้การถ่ายวิดีโอให้นิ่งนั้นเป็นไปได้ยาก ปัจจัยเหล่านี้ประกอบไปด้วย

กล้องสั่น

เนื่องจากคนส่วนใหญ่ถ่ายวิดีโอด้วยสมาร์ทโฟนโดยการถือด้วยมือเปล่า นั่นหมายความว่าตัวกล้องจะสั่นไปตามการสั่นของมือคนถ่าย ดังเช่นวิดีโอตัวอย่างด้านล่าง

การเบลอจากการเคลื่อนไหว (Motion Blur)

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

ภาพล้ม (Rolling Shutter)

เซ็นเซอร์รับภาพในกล้องที่นิยมใช้ในปัจจุบันคือเซ็นเซอร์ชนิด CMOS วิธีการเก็บข้อมูลแสงของเซ็นเซอร์ชนิดนี้คือจะค่อยๆ เก็บข้อมูลทีละแถว (Scanline) คล้ายคลึงกับการทำงานของเครื่องปริ๊นท์แบบ Inkjet ที่เวลาพิมพ์จะค่อยๆ พิมพ์ทีละแถวจนเป็นภาพ การเก็บข้อมูลภาพจากแถวบนสุดมาล่างสุดจะใช้เวลา 10 มิลลิวินาที หากมีวัตถุที่เคลื่อนไหวด้วยความรวดเร็วกว่าช่วงเวลานั้นจะทำให้เกิดความบิดเบี้ยวของภาพขึ้น ดังเช่นวิดีโอด้านล่างที่ตึกเกิดอาการเอียงผิดรูปทรง

(ซ้าย) ปกติ | (ขวา) ภาพล้ม

โฟกัสไหล (Focus Breathing)

อาการ “โฟกัสไหล” เกิดจากการเปลี่ยนจุดโฟกัสภาพแล้วทำให้มุมมองภาพ (Angle of view) เปลี่ยนไป สังเกตจากวิดีโอตัวอย่างด้านล่างจะเห็นว่า เมื่อเอามือมาไว้ที่หน้ากล้อง พอกล้องโฟกัสที่มือ มุมมองภาพที่เก็บได้จะแคบลง โดยสังเกตที่ตึกสีขาวด้านซ้ายมือจะเห็นชัดเจนที่สุด

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

Google อธิบายหลักการทำงานของระบบกันสั่นวิดีโอใน Pixel 2
Google อธิบายหลักการทำงานของระบบกันสั่นวิดีโอใน Pixel 2
 

วิธีลดอาการสั่นที่ได้รับความนิยมที่สุดคือ Optical Image Stabilization (OIS) โดยการขัยบตัวเลนส์กล้องไปมาเพื่อตัดการสั่นจากมือของเรา แต่ระบบนี้มีข้อเสียคือ ระยะที่เลนส์สามารถขยับได้นั้นมีจำกัด สามารถลดการสั่นได้เพียง 1-2 องศาเท่านั้น ซึ่งหลายจังหวะไม่เพียงพอต่อการใช้งาน และ OIS ไม่สามารถแก้การสั่นบางประเภทได้ เช่น การสั่นที่เกิดจากการหมุนในระนาบเดียว หรือที่เรียกว่า Jello Effect ดังวิดีโอตัวอย่างด้านล่าง

การลดการสั่นอีกวิธีคือ Electronic Image Stabilization (EIS) จะทำการวิเคราะห์การเคลื่อนไหวของกล้อง ตรวจหาการเคลื่อนไหวที่ไม่ต้องการ และนำข้อมูลที่ได้มาปรับเปลี่ยนภาพแต่ละเฟรมให้ได้วิดีโอใหม่ที่ไม่มีการเคลื่อนไหวที่ไม่ต้องการ คุณภาพของผลลัพธ์ที่ได้ขึ้นอยู่กับอัลกอริทึมและความสามารถในการปรับปรุงวิดีโอ การใช้ EIS นั้นมีความยืดหยุ่นกว่า OIS สามารถแก้ไขอาการสั่นได้มากกว่า และหลายรูปแบบกว่า อย่างไรก็ตาม EIS เองก็มีข้อจำกัดของมัน คือการเข้าไปปรับแต่งภาพแต่ละเฟรมจะต้องแลกมาด้วยมุมมองภาพที่แคบลงและความละเอียดที่ลดลง นอกจากนั้น EIS ยังต้องการใช้พลังในการประมวลผลสูง ซึ่งมีจำกัดในสมาร์ทโฟน ทาง Google จึงได้เลือกใช้ทั้ง 2 ทางในการลดการสั่นของวิดีโอเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ซึ่ง Google เรียกวิธีนี้ว่า Fused Video Stabilization
Fused Video Stabilization มีทั้งหมด 3 ขั้นตอน คือ Motion analysis, Motion filtering และ Frame synthesis ตามแผนภาพด้านล่าง

Google อธิบายหลักการทำงานของระบบกันสั่นวิดีโอใน Pixel 2

Motion analysis

เครื่องจะนำข้อมูลจาก Gyroscope ความไวสูงมาคำนวณการหมุนของกล้องในแกน Roll, Pitch และ Yaw ซึ่งเราจะตรวจการเคลื่อนไหวของกล้องด้วยความถี่ 200 Hz ทำให้เราทราบการเคลื่อนไหวของเซ็นเซอร์ในแต่ละ scanline และนำข้อมูลนี้มาแก้ปัญหาภาพล้ม (Rolling Shutter) นอกจากนั้นยังมีการเก็บข้อมูลจากการเคลื่อนที่เข้าออกของเลนส์เวลาโฟกัส (แกน Z) และการเคลื่อนที่ของ OIS (แกน X และ Y) ด้วย ขั้นตอนนี้ต้องการความละเอียดในการระบุเวลาของตำแหน่งเลนส์ ตำแหน่ง Gyro และตำแหน่ง OIS อย่างถูกต้องและแม่นยำ เพราะหากมีการใส่เวลาคลาดเคลื่อนเพียงไม่กี่มิลลิวินาที เมื่อนำข้อมูลเหล่านี้มาปรับภาพจะทำให้เกิดการคลาดเคลื่อนแบบ “Jittering” ได้ ตามตัวอย่างวิดีโอด้านล่าง

Google อธิบายหลักการทำงานของระบบกันสั่นวิดีโอใน Pixel 2
 แผนภาพระบุการเคลื่อนไหวตามแกนต่างๆ
(ซ้าย) วิดีโอที่ระบุเวลาพลาดไป 3 มิลลิวินาที | (ขวา) วิดีโอที่ระบุเวลาถูกต้อง

Motion filtering

ขั้นตอนนี้จะนำข้อมูลการเคลื่อนไหวของกล้องจากขั้นตอน Motion analysis มาทำแบบจำลองการเคลื่อนไหวของกล้องที่ลดการสั่นแล้ว ซึ่งขั้นตอนนี้จะนำเฟรมที่ถัดจากเฟรมที่กำลังวิเคราะห์อยู่มาวิเคราะห์ด้วย ทำให้เรารู้การเคลื่อนไหวล่วงหน้าเฟรมที่วิเคราะห์อยู่ในปัจจุบัน จากนั้นใช้ Machine Learning มาคาดการณ์ความตั้งใจของผู้ถ่ายว่าต้องการให้วิดีโอเคลื่อนไหวแบบใด เราเรียกส่วนนี้ว่า Lookahead Motion Filtering ซึ่งส่วนนี้ยากต่อการนำมาใช้กับ OIS เพราะ OIS สามารถนำข้อมูลจากเฟรมปัจจุบันและเฟรมก่อนหน้ามาคาดเดาการเคลื่อนไหวได้เท่านั้น ไม่สามารถนำเฟรมที่เกิดในอนาคตมาวิเคราะห์ได้ ซึ่งเราจะกลับมาลงลึกในเรื่อง Lookahead Motion Filtering ทีหลัง

Frame Synthesis

ขั้นตอนนี้เราจะมาทำการระบุว่าจะต้องปรับแต่งเฟรมแต่ละเฟรมอย่างไร โดยใช้พื้นฐานจากข้อมูลการเคลื่อนไหวของกล้องจริงๆ และข้อมูลจากแบบจำลอง ส่วนการแก้ปัญหาภาพล้ม (Rolling shutter) จะทำโดยการแบ่งภาพเป็นช่องเล็กๆ และทำการปรับแต่ละช่องตามวิดีโอตัวอย่างด้านล่าง

Lookahead Motion Filtering

การทำ Lookahead Motion Filtering มีหลายขั้นตอน โดยขั้นตอนแรกคือใช้ Gaussian filtering ปรับภาพให้การเคลื่อนไหวราบรื่นขึ้น

(ซ้าย) วิดีโอที่ยังไม่ทำการลดการสั่นใดๆ | (ขวา) วิดีโอที่ได้หลังจากใช้ Gaussian filtering

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

(ซ้าย) วิดีโอที่ได้หลังจากใช้ Gaussian filtering | (ขวา) วิดีโอผลลัพธ์จากการคาดเดาการเคลื่อนไหว

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

(ซ้าย) วิดีโอผลลัพธ์จากการคาดเดาการเคลื่อนไหว จะเห็นแถบสีฟ้าที่มุมซ้ายล่าง | (ขวา) วิดีโอผลลัพธ์จากการนำส่วนที่ไม่ต้องการออก

ถ้ายังจำกันได้ ก่อนหน้านี้เราพูดถึงเรื่องข้อจำกัดของ OIS กัน ก็คือ OIS จะมีขอบเขตการเคลื่อนไหวที่จำกัด หากการเคลื่อนไหวมีการเปลี่ยนแปลงมากเกินไปจะทำให้เกิดการเบลอจากการเคลื่อนไหว (Motion Blur) ขึ้น และเมื่อเรานำวิดีโอนั้นไปผ่านกระบวนการ EIS จะทำให้เกิดอาการ sharpness inconsistency ขึ้น ซึ่งรบกวนสายตาเวลาดูวิดีโอ

(ซ้าย) วิดีโอที่กันสั่นด้วย OIS อย่างเดียว | (ขวา) วิดีโอจาก Pixel 2 ที่ใช้ Fused Stabilization ขั้นพื้นฐานเท่านั้น จะเห็นการสูญเสียความคมชัดที่ป้าย Exit

จากการวิจัยพบว่าส่วนใหญ่ Motion Blur จะเป็นไปในทิศทางเดียวกัน และถ้าภาพเคลื่อนไหวไปตามทิศทางนั้น ตาเราจะไม่เห็นอาการเบลอ เพราะสมองจะถูกสั่งการว่าอาการเบลอนั้นเป็นธรรมชาติของการเคลื่อนไหวและจะสั่งให้เราไม่ต้องสนใจ
ด้วยข้อมูลจาก Gyroscope และ EIS ทำให้เราสามารถระบุอาการ Motion Blur ได้อย่างแม่นยำ จากนั้นทำการวิเคราะห์ว่าระหว่างที่เกิดอาการ Motion Blur นั้นกล้องชี้ไปที่จุดไหน และใช้อัลกอริทึมที่ได้จาก Machine Learning มาวิเคราะห์การเคลื่อนไหวของกล้องจริงๆ กับแบบจำลองการเคลื่อนไหวของกล้องที่ลดการสั่นแล้วในช่วงที่เกิด Motion Blur จากนั้นนำมาชั่งน้ำหนักว่าจะต้องการให้การเคลื่อนไหวของกล้องเป็นไปอย่างไร เพื่อเบี่ยงให้เราเห็นอาการเบลอน้อยลง ดังวิดีโอตัวอย่างด้านล่างจะเห็นว่าวิดีโอด้านขวามีอาการเบลอลดลงจากด้านซ้ายอย่างเห็นได้ชัด

(ซ้าย) วิดีโอจากที่ใช้ Fused Stabilization ขั้นพื้นฐานเท่านั้น | (ขวา) วิดีโอที่ใช้ Fused Stabilization แบบเต็มรูปแบบพร้อมลดอาการ Motion Blur

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

วิดีโอถ่ายด้วย Google Pixel 2 สองเครื่องที่ยึดอยู่บนแขนจับอันเดียวกัน วิดีโด้านซ้ายปิดระบบกันสั่น
วิดีโอถ่ายด้วย Google Pixel 2 สองเครื่องที่ยึดอยู่บนแขนจับอันเดียวกันโดยผู้ถ่ายกระโดดตามผู้ถูกถ่ายด้วย วิดีโด้านซ้ายปิดระบบกันสั่น

ความเห็น

edtaro.com © 2024 All rights reserved