อ่าน 4 นาที
การจัดเรียงแบบไดเทอร์ริ่งที่สั่งการ
การกระจายสีแบบเรียงลำดับ (Ordered dithering) คือ อัลกอริทึม การกระจาย สีภาพใดๆ ที่ใช้แผนที่ค่าเกณฑ์ที่กำหนดไว้ล่วงหน้าเรียงต่อกันทั่วภาพ...
การจัดเรียงแบบไดเทอร์ริ่งที่สั่งการ


การกระจายสีแบบเรียงลำดับ (Ordered dithering)คือ อัลกอริทึม การกระจาย สีภาพใดๆ ที่ใช้แผนที่ค่าเกณฑ์ที่กำหนดไว้ล่วงหน้าเรียงต่อกันทั่วภาพ โดยทั่วไปจะใช้ในการแสดงภาพต่อเนื่องบนจอแสดงผลที่มีความลึกของสี น้อยกว่า ตัวอย่างเช่นMicrosoft Windowsใช้ในโหมดกราฟิก 16 สี ด้วยแผนที่ค่าเกณฑ์ "Bayer" ที่พบได้ทั่วไป อัลกอริทึมนี้จะมีลักษณะเป็นลวดลายไขว้ที่เห็นได้ชัดในผลลัพธ์
แผนที่เกณฑ์
อัลกอริทึมนี้ลดจำนวนสีลงโดยการใช้แผนที่ค่าเกณฑ์Mกับพิกเซลที่แสดง ทำให้พิกเซลบางส่วนเปลี่ยนสี ขึ้นอยู่กับระยะห่างของสีเดิมจากรายการสีที่มีอยู่ในจานสีที่ลดลง
แผนที่เกณฑ์แรกได้รับการออกแบบด้วยมือเพื่อลดความแตกต่างในการรับรู้ระหว่างภาพระดับสีเทาและการควอนไทเซชันสองบิตสำหรับเมทริกซ์ขนาดสูงสุด 4x4 [ 1 ]
เมทริกซ์เกณฑ์ที่เหมาะสมที่สุดคือเมทริกซ์ที่มีพื้นผิวน้อยที่สุดเท่าที่จะเป็นไปได้สำหรับการควอนไทเซชันสีที่เป็นไปได้ใดๆ เพื่อให้ความประทับใจสูงสุดของคุณลักษณะพื้นฐานมาจากภาพที่ถูกควอนไทเซชัน สามารถพิสูจน์ได้ว่าสำหรับเมทริกซ์ที่มีความยาวด้านเป็นกำลังของสองจะมีเมทริกซ์เกณฑ์ที่เหมาะสมที่สุด[ 2 ]แผนที่อาจถูกหมุนหรือสะท้อนโดยไม่ส่งผลกระทบต่อประสิทธิภาพของอัลกอริทึม
แผนที่ค่าเกณฑ์นี้ (สำหรับด้านที่มีความยาวเป็นกำลังของสอง ) เรียกอีกอย่างว่าเมทริกซ์ไบเออร์หรือเมื่อไม่ได้ปรับขนาด จะเรียก ว่าเมทริกซ์ดัชนีสำหรับแผนที่ค่าเกณฑ์ที่มีมิติเป็นกำลังของสอง สามารถสร้างแผนที่แบบเรียกซ้ำได้โดยใช้:
โดยที่เป็นเมทริกซ์ที่มีค่าเป็นหนึ่งทั้งหมดและคือผลคูณโครเนกเกอร์
แม้ว่าตัวชี้วัดพื้นผิวที่ไบเออร์เสนอจะสามารถใช้ในการค้นหาเมทริกซ์ที่เหมาะสมที่สุดสำหรับขนาดที่ไม่ใช่กำลังสองได้ แต่เมทริกซ์ดังกล่าวพบได้ไม่บ่อยนัก เนื่องจากไม่มีสูตรที่ง่ายสำหรับการค้นหา และเมทริกซ์ขนาดค่อนข้างเล็กมักให้ผลลัพธ์ที่ดีเยี่ยมในทางปฏิบัติ (โดยเฉพาะอย่างยิ่งเมื่อรวมกับการปรับเปลี่ยนอื่นๆ ในอัลกอริธึมการกระจายสี)
ฟังก์ชันนี้สามารถแสดงได้โดยใช้เลขคณิตบิตเท่านั้น: [ 3 ]
M(i, j) = bit_reverse(bit_interleave(bitwise_xor(i, j), i)) / n ^ 2
แผนที่ค่าเกณฑ์ที่คำนวณไว้ล่วงหน้า
แทนที่จะจัดเก็บแผนที่ค่าเกณฑ์เป็นเมทริกซ์ของจำนวนเต็มตั้งแต่ 0 ถึงขึ้นอยู่กับฮาร์ดแวร์ที่ใช้ในการทำไดเทอร์ริ่ง การคำนวณค่าเกณฑ์ของแผนที่ล่วงหน้าในรูปแบบจุดลอยตัวอาจเป็นประโยชน์มากกว่า รูปแบบ เมทริกซ์จำนวนเต็มแบบ ดั้งเดิม ที่แสดงไว้ข้างต้น
สามารถใช้สูตรต่อไปนี้ในการดำเนินการได้:
Mpre(i,j) = Mint(i,j) / n^2
ซึ่งจะสร้างเมทริกซ์เกณฑ์มาตรฐานขึ้นมา
สำหรับแผนที่ขนาด 2x2:
ซึ่งจะสร้างแผนที่ที่คำนวณไว้ล่วงหน้า:
นอกจากนี้ การปรับค่าให้เป็นค่าเฉลี่ยของผลรวมทั้งหมดเป็น 0 (ดังที่ทำในอัลกอริธึมการกระจายสีที่แสดงด้านล่าง) สามารถทำได้ในระหว่างการประมวลผลล่วงหน้าเช่นกัน โดยการลบ1/2 ของค่าที่มากที่สุดออกจากทุกค่า:
Mpre(i,j) = Mint(i,j) / n^2 – 0.5 * maxValue
การสร้างแผนที่ที่คำนวณไว้ล่วงหน้า:
อัลกอริทึม
อัลกอริทึมการกระจายสีแบบเรียงลำดับจะแสดงผลภาพตามปกติ แต่สำหรับแต่ละพิกเซล จะทำการชดเชยค่าสีของพิกเซลนั้นด้วยค่าที่สอดคล้องกันจากแผนที่ค่าเกณฑ์ตามตำแหน่งของพิกเซล ทำให้ค่าสีของพิกเซลนั้นถูกแปลงเป็นสีอื่นหากค่าสีนั้นเกินค่าเกณฑ์
สำหรับการใช้งาน Dithering ส่วนใหญ่ การเพิ่มค่าเกณฑ์ให้กับทุกพิกเซล (โดยไม่ต้องทำการปรับค่ามาตรฐานโดยการลบ 1/2) ก็เพียงพอแล้วหรือเทียบเท่า กับการเปรียบเทียบค่าของพิกเซลกับค่าเกณฑ์: ถ้าค่าความสว่างของพิกเซลน้อยกว่าตัวเลขในเซลล์ที่สอดคล้องกันของเมทริก ซ์ให้พล็อตพิกเซลนั้นเป็นสีดำ มิฉะนั้นให้พล็อตเป็นสีขาว การไม่ปรับค่ามาตรฐานนี้จะทำให้ความสว่างเฉลี่ยของภาพเพิ่มขึ้นเล็กน้อย และทำให้พิกเซลที่เกือบขาวไม่ถูก Dithering นี่ไม่ใช่ปัญหาเมื่อใช้จานสีแบบระดับสีเทา (หรือจานสีใดๆ ที่ระยะห่างของสีสัมพัทธ์ (เกือบ) คงที่) และมักจะเป็นสิ่งที่ต้องการด้วยซ้ำ เนื่องจากดวงตาของมนุษย์รับรู้ความแตกต่างของสีเข้มได้แม่นยำกว่าสีอ่อน อย่างไรก็ตาม มันให้ผลลัพธ์ที่ไม่ถูกต้องโดยเฉพาะอย่างยิ่งเมื่อใช้จานสีขนาดเล็กหรือแบบสุ่ม ดังนั้นจึงควรเลือกใช้การปรับค่ามาตรฐานที่เหมาะสม

กล่าวอีกนัยหนึ่ง อัลกอริทึมจะทำการแปลงต่อไปนี้กับสีc แต่ละสี ของแต่ละพิกเซล: โดยที่M ( i , j )คือแผนที่ค่าเกณฑ์บน แถวที่ iและคอลัมน์ที่j , c ′คือสีที่แปลงแล้ว และrคือปริมาณการกระจายในพื้นที่สีสมมติว่าจานสี RGB มี สี ที่ เว้นระยะห่างเท่า ๆ กัน 2³Nสีโดยแต่ละสี (ค่าสามค่าของสีแดง สีเขียว และสีน้ำเงิน) แทนด้วยอ็อกเท็ตตั้งแต่ 0 ถึง 255 โดยทั่วไปแล้วเราจะเลือก( 1/2 คือเทอมการทำให้เป็นมาตรฐานอีกครั้ง )
เนื่องจากอัลกอริทึมนี้ทำงานกับพิกเซลเดี่ยวและไม่มีเงื่อนไขใดๆ จึงมีความเร็วสูงและเหมาะสำหรับการแปลงภาพแบบเรียลไทม์ นอกจากนี้ เนื่องจากตำแหน่งของลวดลายการกระจายสีจะคงที่เสมอเมื่อเทียบกับเฟรมแสดงผล จึงมีโอกาสเกิดการสั่นไหวได้น้อยกว่าวิธีการกระจายข้อผิดพลาด ทำให้เหมาะสำหรับภาพเคลื่อนไหว เนื่องจากลวดลายมีความซ้ำซ้อนมากกว่าวิธีการกระจายข้อผิดพลาด ภาพที่มีการกระจายสีแบบเรียงลำดับจึงบีบอัดได้ดีกว่า การกระจายสีแบบเรียงลำดับจึงเหมาะสำหรับภาพกราฟิกแบบเส้นตรงมากกว่า เนื่องจากจะทำให้เส้นตรงมากขึ้นและมีสิ่งผิดปกติน้อยลง
ค่าที่อ่านได้จากแผนที่ค่าเกณฑ์ควรปรับขนาดให้อยู่ในช่วงเดียวกันกับความแตกต่างน้อยที่สุดระหว่างสีต่างๆ ในจานสีเป้าหมาย หรือกล่าวอีกนัยหนึ่ง ขนาดของแผนที่ที่เลือกควรเท่ากับหรือใหญ่กว่าอัตราส่วนของสีต้นฉบับต่อสีเป้าหมาย ตัวอย่างเช่น เมื่อทำการลดจำนวนสีในภาพ 24 บิตต่อพิกเซลให้เหลือ 15 บิตต่อพิกเซล (จาก 256 สีต่อช่องสัญญาณเหลือ 32 สีต่อช่องสัญญาณ) แผนที่ขนาดเล็กที่สุดที่ควรเลือกคือ 4×2 สำหรับอัตราส่วน 8 (256:32) วิธีนี้ช่วยให้สามารถแสดงโทนสีที่แตกต่างกันแต่ละโทนของภาพอินพุตด้วยรูปแบบการกระจายสีที่แตกต่างกันได้
จานสีที่ปรับเปลี่ยนได้: การกระจายสีแบบแพทเทิร์น
แนวทางที่ไม่ใช่ของไบเออร์
วิธีการใช้เมทริกซ์กำหนดค่าเกณฑ์ข้างต้นอธิบายถึง ตระกูลอัลกอริธึมการกระจายภาพแบบเรียงลำดับของไบ เออร์นอกจากนี้ยังมีอัลกอริธึมอื่นๆ อีกหลายแบบ ซึ่งโดยทั่วไปแล้วจะเกี่ยวข้องกับการเปลี่ยนแปลงในเมทริกซ์ค่าเกณฑ์ ซึ่งจะเปลี่ยนการกระจายของ "สัญญาณรบกวน" ที่เกิดจากการกระจายภาพทุกประเภท (ความแตกต่างระหว่างภาพต้นฉบับและภาพที่กระจายแล้ว)
ฮาล์ฟโทน
การกระจายสีแบบฮาล์ฟโทน (Halftone dithering) ใช้รูปแบบการกระจายสีแบบกลุ่ม (clustered dithering) เพื่อสร้างภาพที่มีลักษณะคล้ายกับ ลวดลาย ฮาล์ฟโทนโดยใช้เมทริกซ์ที่ออกแบบมาเป็นพิเศษ
ช่องว่างและกลุ่ม
อัลกอริทึม Void และคลัสเตอร์ใช้สัญญาณรบกวนสีน้ำเงิน ที่สร้างไว้ล่วงหน้า เป็นเมทริกซ์สำหรับกระบวนการกระจาย[ 4 ]เมทริกซ์สัญญาณรบกวนสีน้ำเงินยังคงรักษาเนื้อหาความถี่สูงที่ดีของ Bayer ไว้ แต่ด้วยการครอบคลุมความถี่ทั้งหมดที่เกี่ยวข้องอย่างสม่ำเสมอมากขึ้น จะแสดงรูปแบบที่น้อยลงมาก[ 5 ]
วิธีการ "ช่องว่างและคลัสเตอร์" ได้รับชื่อมาจากขั้นตอนการสร้างเมทริกซ์ โดยภาพสีดำที่มีพิกเซลสีขาวที่เริ่มต้นแบบสุ่มจะถูกเบลอแบบเกาส์เซียนเพื่อค้นหาส่วนที่สว่างที่สุดและมืดที่สุด ซึ่งสอดคล้องกับช่องว่างและคลัสเตอร์ หลังจากสลับตำแหน่งกันสองสามครั้งเพื่อให้ส่วนที่สว่างและมืดกระจายอย่างสม่ำเสมอ พิกเซลจะถูกกำหนดหมายเลขตามความสำคัญ การสร้างเมทริกซ์สัญญาณรบกวนสีน้ำเงินต้องใช้ทรัพยากรการคำนวณจำนวนมาก: บนคอมพิวเตอร์สมัยใหม่ เมทริกซ์ขนาด 64×64 ต้องใช้เวลาสองสามวินาทีโดยใช้อัลกอริทึมดั้งเดิม[ 6 ]
อัลกอริทึมนี้สามารถขยายเพื่อสร้างมาสก์ไดเทอร์แบบเคลื่อนไหวซึ่งพิจารณาแกนเวลาด้วย ทำได้โดยการรันอัลกอริทึมในสามมิติและใช้เคอร์เนลซึ่งเป็นผลคูณของเคอร์เนลเกาส์เซียนสองมิติบนระนาบ XY และเคอร์เนลเกาส์เซียนหนึ่งมิติบนแกน Z [ 7 ]
การอบชุบแบบจำลอง
การจำลองการอบอ่อนสามารถสร้างมาสก์แบบกระจายแสงได้โดยเริ่มจากฮิสโตแกรม แบบแบน และสลับค่าเพื่อปรับฟังก์ชันการสูญเสียให้เหมาะสม ฟังก์ชันการสูญเสียจะควบคุมคุณสมบัติสเปกตรัมของมาสก์ ทำให้สามารถสร้างสัญญาณรบกวนสีน้ำเงินหรือรูปแบบสัญญาณรบกวนที่ตั้งใจจะกรองด้วยตัวกรองเฉพาะ อัลกอริทึมยังสามารถขยายได้เมื่อเวลาผ่านไปสำหรับมาสก์แบบกระจายแสงแบบเคลื่อนไหวที่มีคุณสมบัติเชิงเวลาที่เลือก[ 8 ]
อ่านเพิ่มเติม
- Ancin, Hakan; Bhattacharjya, Anoop K.; Shu, Joseph S. (2 มกราคม 1998). Beretta, Giordano B.; Eschbach, Reiner (บรรณาธิการ). "การปรับปรุงช่องว่างและคลัสเตอร์เพื่อความสม่ำเสมอของฮาล์ฟโทนที่ดีขึ้น" Photonics West '98 Electronic Imaging . Color Imaging: Device-Independent Color, Color Hardcopy, and Graphic Arts III. 3300 : 321– 329. Bibcode : 1998SPIE.3300..321A . CiteSeerX 10.1.1.40.5331 . doi : 10.1117/12.298295 . S2CID 6219511 .
ลิงก์ภายนอก
- การนำวิธีการกระจายแสงแบบต่างๆ มาใช้ใน Matlab
- anim8gdxคือการใช้งาน Java สำหรับวิธีการกระจายสีแบบต่างๆ (ส่วนใหญ่เรียงลำดับ)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การจัดเรียงแบบไดเทอร์ริ่งที่สั่งการ
การกระจายสีแบบเรียงลำดับ (Ordered dithering) คือ อัลกอริทึม การกระจาย สีภาพใดๆ ที่ใช้แผนที่ค่าเกณฑ์ที่กำหนดไว้ล่วงหน้าเรียงต่อกันทั่วภาพ...
แผนที่เกณฑ์
อัลกอริทึมนี้ลดจำนวนสีลงโดยการใช้แผนที่ค่าเกณฑ์ M กับพิกเซลที่แสดง ทำให้พิกเซลบางส่วนเปลี่ยนสี ขึ้นอยู่กับระยะห่างของสีเดิมจากรายการสีที่มีอยู่ในจานสีที่ลดลง
แผนที่ค่าเกณฑ์ที่คำนวณไว้ล่วงหน้า
แทนที่จะจัดเก็บแผนที่ค่าเกณฑ์เป็นเมทริกซ์ของจำนวนเต็มตั้งแต่ 0 ถึงขึ้นอยู่กับฮาร์ดแวร์ที่ใช้ในการทำไดเทอร์ริ่ง การคำนวณค่าเกณฑ์ของแผนที่ล่วงหน้าในรูปแบบจุดลอยตัวอาจเป็นประโยชน์มากกว่า รูปแบบ เมทริกซ์จำนวนเต็มแบบ ดั้งเดิม ที่แสดงไว้ข้างต้น n {\displaystyle n}...
อัลกอริทึม
อัลกอริทึมการกระจายสีแบบเรียงลำดับจะแสดงผลภาพตามปกติ แต่สำหรับแต่ละพิกเซล จะทำการชดเชยค่าสีของพิกเซลนั้นด้วยค่าที่สอดคล้องกันจากแผนที่ค่าเกณฑ์ตามตำแหน่งของพิกเซล ทำให้ค่าสีของพิกเซลนั้นถูกแปลงเป็นสีอื่นหากค่าสีนั้นเกินค่าเกณฑ์