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

อ่าน 18 นาที

การแทรกสอดแบบไบคิวบิก

ในทาง คณิตศาสตร์ การประมาณค่าแบบไบ คิวบิก (Bicubic Interpolation ) เป็นส่วนขยายของ การประมาณ ค่า แบบ คิวบิกสปลายน์ (Cubic Spline Interpolation )...

การแทรกสอดแบบไบคิวบิก

การเปรียบเทียบการประมาณค่าแบบ Bicubicกับการประมาณค่าแบบ 1 มิติและ 2 มิติบางวิธี จุด สีดำและ สี แดง / เหลือง / เขียว / น้ำเงินสอดคล้องกับจุดที่ประมาณค่าและตัวอย่างที่อยู่ใกล้เคียงตามลำดับ ความสูงของจุดเหนือพื้นดินสอดคล้องกับค่าของจุดเหล่านั้น

ในทางคณิตศาสตร์ การประมาณค่าแบบไบ คิวบิก (Bicubic Interpolation ) เป็นส่วนขยายของ การประมาณ ค่า แบบ คิวบิกสปลายน์ (Cubic Spline Interpolation ) (ซึ่งเป็นวิธีการใช้การประมาณค่าแบบคิวบิกกับชุดข้อมูล) สำหรับการประมาณ ค่าจุดข้อมูลบน ตารางปกติสองมิติ พื้นผิวที่ได้จากการประมาณค่า (หมายถึงรูปร่างของเคอร์เนล ไม่ใช่ภาพ) จะเรียบกว่าพื้นผิวที่ได้จาก การประมาณค่าแบบไบลิเนียร์ ( Bilinear Interpolation ) หรือ การประมาณค่าแบบ เพื่อนบ้านที่ใกล้ที่สุด (Nearest-neighbor Interpolation ) การประมาณค่าแบบไบคิวบิกสามารถทำได้โดยใช้พหุ นามลากรางจ์ (Lagrange polynomials) คิวบิกสปลายน์ ( Cubic Spline ) หรือ อัลกอริธึมการสังเคราะห์แบบคิวบิก (Cubic Convolution Algorithm)

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

การคำนวณ

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

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

ปัญหาการประมาณค่าในช่วงประกอบด้วยการกำหนดค่าสัมประสิทธิ์ 16 ตัวเมื่อจับคู่กับค่าฟังก์ชันจะได้สมการสี่สมการ:

ในทำนองเดียวกัน มีสมการแปดสมการสำหรับอนุพันธ์ในทิศทาง x และ y :

และสมการสี่สมการสำหรับอนุพันธ์ย่อยแบบผสม :

นิพจน์ข้างต้นใช้เอกลักษณ์ดังต่อไปนี้:

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

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

การกลับเมทริกซ์จะให้สมการเชิงเส้นที่มีประโยชน์มากกว่าซึ่ง ช่วยให้สามารถคำนวณได้อย่างรวดเร็วและง่ายดาย

อาจมีรูปแบบเมทริกซ์ที่กระชับกว่าสำหรับสัมประสิทธิ์ 16 ตัว: หรือ โดยที่

การขยายไปสู่ตารางสี่เหลี่ยม

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

การหาอนุพันธ์จากค่าฟังก์ชัน

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

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

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

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

อัลกอริทึมการคอนโวลูชันแบบไบคิวบิก

เคอร์เนลคอนโวลูชัน
เคอร์เนลคอนโวลูชัน (ขยายใน 2 มิติ)

การประมาณค่าแบบ Bicubic spline จำเป็นต้องแก้ระบบสมการเชิงเส้นที่อธิบายไว้ข้างต้นสำหรับแต่ละเซลล์กริด ตัว ประมาณค่าที่มีคุณสมบัติคล้ายกันสามารถหาได้โดยการใช้การสังเคราะห์ (convolution)กับเคอร์เนลต่อไปนี้ในทั้งสองมิติ: โดยที่มักจะตั้งค่าเป็น −0.5 หรือ −0.75 โปรดทราบว่าและ สำหรับจำนวนเต็มที่ไม่เป็น ศูนย์ ทั้งหมด

แนวทางนี้ได้รับการเสนอโดย Rifman จาก TRW Systems Group โดยมุ่งเป้าไปที่ข้อมูลภาพจาก ERTS (Earth Resources Technology Satellite ซึ่งต่อมาคือLandsat 1 ) [ 1 ] [ 2 ] [ 3 ] ในตอนแรกค่าถูกกำหนดไว้ที่ -1 แต่ต่อมาได้รับการกำหนดพารามิเตอร์โดย Simon จากบริษัทเดียวกัน ทำให้ค่า -0.5, -0.75 และ -1.0 มีความหมาย [ 4 ​​] อย่างไรก็ตาม ข้อเสนอเหล่านี้ไม่ได้นำเสนอขั้นตอนการหาค่าหรือสูตรอย่างเพียงพอ ดังนั้น Keys จึงเสนอใหม่ในรูปแบบที่สมบูรณ์ในภายหลัง โดยแสดงให้เห็นว่าด้วยค่าจะทำให้เกิดการลู่เข้าแบบลูกบาศก์เมื่อพิจารณาจากช่วงเวลาการสุ่มตัวอย่างของฟังก์ชันดั้งเดิม [ 5 ]

เคอร์เนลคอนโวลูชันได้มาดังต่อไปนี้[ 6 ] :

ภายใต้เงื่อนไข: , , และสำหรับอนุพันธ์อันดับแรก: , , เราจะได้;

เมื่อแก้ระบบสมการข้างต้นแล้วจะได้ผลลัพธ์ดังนี้ และสมการข้างต้น

สัญกรณ์เมทริกซ์

เคอร์เนลคอนโวลูชันถูกเลื่อนจาก 0 เป็น 1 สำหรับสัญกรณ์เมทริกซ์

หากเราใช้สัญลักษณ์เมทริกซ์ เราสามารถแสดงสมการในรูปแบบที่เป็นมิตรมากขึ้นได้: สำหรับระหว่าง 0 และ 1 สำหรับมิติเดียว[ 7 ]โปรดทราบว่าสำหรับการแทรกสอดการสังเคราะห์ลูกบาศก์แบบ 1 มิติ ต้องใช้จุดตัวอย่าง 4 จุด สำหรับการสอบถามแต่ละครั้ง จะมีจุดตัวอย่างสองจุดอยู่ทางด้านซ้ายและสองจุดอยู่ทางด้านขวา จุดเหล่านี้มีดัชนีตั้งแต่ -1 ถึง 2 ในข้อความนี้ ระยะห่างจากจุดที่มีดัชนี 0 ไปยังจุดสอบถามจะแสดงด้วยที่นี่

เนื่องจากจึงตรงกับเส้นโค้ง Catmull-Rom [ 7 ]ดังนั้น การสอดแทรกแบบ bicubic โดยตั้งค่าเป็นจึงบางครั้งเรียกว่า "การสอดแทรกแบบ Catmull-Rom" [ 8 ]

สำหรับสองมิติที่ใช้ครั้งแรกและอีกครั้งใน:

ความต่อเนื่องเชิงอนุพันธ์

ตามนิยามแล้ว ฟังก์ชันนี้มีความต่อเนื่องในอนุพันธ์อันดับแรก และสามารถตรวจสอบได้ง่ายโดยใช้สัญลักษณ์เมทริกซ์ต่อไปนี้

ดังนั้น ฟังก์ชันนี้จึงมีความต่อเนื่องในอนุพันธ์อันดับแรก

ดังนั้น ฟังก์ชันนี้จึงไม่ต่อเนื่องในอนุพันธ์อันดับสอง

การเปรียบเทียบกับวิธีการอื่นๆ

ด้านล่างนี้คือการเปรียบเทียบฟังก์ชันเคอร์เนลสำหรับแต่ละวิธี:

วิธีฟังก์ชันเคอร์เนลฟังก์ชันเคอร์เนล (การขยายแบบ 2 มิติ)
เพื่อนบ้านที่ใกล้ที่สุด
การแทรกสอดเชิงเส้นสองมิติ
การแทรกสอดแบบไบคิวบิก

ใช้ในกราฟิกคอมพิวเตอร์

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

อัลกอริทึม Bicubic ยังใช้สำหรับการลดขนาดภาพ ด้วย แต่เนื่องจากการสุ่มตัวอย่างใหม่ระหว่างการลดขนาดจะแตกต่างจากผลของการซูมออกในเลนส์จริง วิธีการอื่นอาจเหมาะสมกว่า[ 9 ]

ผลกระทบของพารามิเตอร์ "a"

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

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

เมื่อผลลัพธ์การแทรกสอดจะตรงกับการประมาณค่าเทย์เลอร์จนถึงอนุพันธ์อันดับสอง (ไม่รวมพจน์ที่เหลือ) ของภาพต้นฉบับ ( ฟังก์ชันต่อเนื่องก่อนการสุ่มตัวอย่าง) [ 10 ] [ 11 ] ตัวอย่างที่ชัดเจนของผลกระทบนี้คือเมื่อภาพต้นฉบับเป็นฟังก์ชันเชิงเส้น (ภาพเกรเดียนต์แบบง่าย) และผลลัพธ์การแทรกสอดจะเป็นฟังก์ชันเชิงเส้นก็ต่อเมื่อ เท่านั้นตัวอย่างเช่น ถ้าอินพุตคือ ผลลัพธ์การแทรกสอดคือ และจะเป็นฟังก์ชันเชิงเส้น (พจน์กำลังสองและกำลังสามเป็น 0) ก็ต่อเมื่อเท่านั้น[ 12 ]

กราฟการประมาณค่าในช่วง (a=-0.5)กราฟการประมาณค่าในช่วง (a=-0.75)กราฟการประมาณค่าในช่วง (a=-1.0)

ด้านล่างนี้คือภาพไล่ระดับสีแบบง่ายที่ขยายใหญ่ขึ้น 16 เท่า และส่วนหนึ่งของภาพทดสอบมาตรฐาน "ช่างกล้อง" [ 13 ]ที่ขยายใหญ่ขึ้น 8 เท่า[ 14 ]แถบแนวตั้งในภาพแรกและลวดลายด่างเทียมรอบขมับในภาพหลังเป็นสิ่งประดิษฐ์ที่เกิดจากเอฟเฟกต์ที่กล่าวถึงข้างต้น

การประมาณค่าแบบเพื่อนบ้านที่ใกล้ที่สุด(เพื่อเปรียบเทียบ)
ตัวอย่างที่ขยายใหญ่ขึ้น (a=-0.5)ตัวอย่างที่ขยายใหญ่ขึ้น (a=-0.75)ตัวอย่างที่ขยายใหญ่ขึ้น (a=-1.0)ตัวอย่างขยาย (การประมาณค่าแบบเพื่อนบ้านที่ใกล้ที่สุด)
ตัวอย่างที่ขยายใหญ่ขึ้น (a=-0.5)ตัวอย่างภาพขยาย (a=-0.75)ตัวอย่างที่ขยายใหญ่ขึ้น (a=-1.0)ตัวอย่างขยาย (การประมาณค่าแบบเพื่อนบ้านที่ใกล้ที่สุด)

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

ตำแหน่งการสุ่มตัวอย่างใหม่

เมื่อขยายภาพด้วยจำนวนเต็มเท่า มักจะตั้งตำแหน่งการสุ่มตัวอย่างใหม่ระหว่างพิกเซลของภาพอินพุตเพื่อให้จุดศูนย์ถ่วงของภาพที่ขยายแล้วไม่เลื่อนเมื่อเทียบกับภาพอินพุต (ดูภาพด้านซ้ายด้านล่าง) ในทางกลับกัน ยังมีวิธีการตั้งตำแหน่งการสุ่มตัวอย่างใหม่ให้ทับซ้อนกับพิกเซลของภาพอินพุต (ดูภาพด้านขวาด้านล่าง) วิธีนี้ทำให้มั่นใจได้ว่าการแปลงสามารถย้อนกลับได้[ 15 ]

ตัวอย่างตำแหน่งการสุ่มตัวอย่างใหม่
ตัวอย่างตำแหน่งการสุ่มตัวอย่างใหม่

การคาดการณ์ล่วงหน้า

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

ตัวอย่างการประมาณค่าโดยการคัดลอกค่าพิกเซลที่อยู่ด้านนอกสุด
ตัวอย่างการประมาณค่าโดยการคัดลอกค่าพิกเซลที่อยู่ด้านนอกสุด

ดูเพิ่มเติม

  • การประยุกต์ใช้การประมาณค่าในช่วงกับตัวอย่างระดับความสูง
  • ทฤษฎีการแทรกสอด
  • คำอธิบายและการใช้งานการแทรกสอดแบบ (bi)cubic ในภาษา Java/C++
  • ฟังก์ชันในเวิร์กชีต Excel สำหรับการประมาณค่าแบบ Bicubic Lagrange
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Bicubic_interpolation&oldid=1350972429 "

สรุปเนื้อหา

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

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

ในทาง คณิตศาสตร์ การประมาณค่าแบบไบ คิวบิก (Bicubic Interpolation ) เป็นส่วนขยายของ การประมาณ ค่า แบบ คิวบิกสปลายน์ (Cubic Spline Interpolation )...

การคำนวณ

สมมติว่าค่าฟังก์ชันและอนุพันธ์, และเป็นที่ทราบแล้วที่มุมทั้งสี่, , , และของสี่เหลี่ยมจัตุรัสหน่วย พื้นผิวที่ได้จากการประมาณค่าสามารถเขียนได้ดังนี้ เอฟ {\displaystyle f} เอฟ x {\displaystyle f_{x}} เอฟ y {\displaystyle f_{y}} เอฟ x y {\displaystyle f_{xy}} ( 0...

การขยายไปสู่ตารางสี่เหลี่ยม

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

การหาอนุพันธ์จากค่าฟังก์ชัน

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