ความลึกสี

ความลึกสี (color depth) เป็นแนวคิดในคอมพิวเตอร์กราฟิกส์ ที่ว่าด้วยเรื่องจำนวนบิตต่อ พิกเซลในภาพกราฟิกส์แรสเตอร์สีหรือภาพขาวดำ หน่วยวัดที่ใช้เรียกว่า บิตต่อพิกเซล (bits per pixel, bpp) และใช้ในการระบุข้อมูลจำเพาะของอุปกรณ์กราฟิก ความลึกสีเป็นสมบัติหนึ่งของการแสดงสี บอกถึงจำนวนสีที่สามารถแสดงได้ พูดในอีกแง่มุมคือ มองสามารถแสดงสีช่วงสีได้ในขอบเขตกว้างแค่ไหน ข้อกำหนดการเข้ารหัสสีถูกนิยามโดยความลึกสีและช่วงสี และเป็นตัวกำหนดการเชื่อมโยงค่ารหัสสีเข้ากับตำแหน่งในปริภูมิสี
== ดัชนีสี ==
เมื่อความลึกสีค่อนข้างต่ำ ค่าที่เก็บไว้ในแต่ละพิกเซลมักจะเป็นดัชนีในตารางที่เรียกว่าจานสีหรือแผนที่สี สีบนชุดสีอาจถูกปรับแก้เนื่องจากข้อจำกัดของฮาร์ดแวร์คอมพิวเตอร์ รุ่นสีของแมคอินทอชรุ่นแรก ๆ หรือ IBM-PC VGA มีความลึกของสีเป็น 8 บิตเนื่องจากข้อจำกัดด้านความจุของ VRAM แต่ปัจจุบันสามารถเลือกปรับความลึกของจานสีได้ โดยแมคอินทอช มีความลึกสีสูงสุด 24 บิต (16.77 ล้านสี) และ VGA มีสูงสุด 18 บิต (262,144 สี) จานสีที่เปลี่ยนแปลงได้บางครั้งเรียกว่าจานสีซูโดคัลเลอร์ (pseudocolor)
ความลึกของสีในดัชนีสีที่ใช้จริงเป็นดังนี้

สี 1 บิต (21 = 2 สี) - ขาวดำ มักจะเป็นขาวกับดำ เช่น แมคอินทอช รุ่นแรก Atari ST ฯลฯ
สี 2 บิต (22 = 4 สี) - CGA (320 x 200 พิกเซล) NeXTstation รุ่นแรก, แมคอินทอช รุ่นแรก, Atari ST เป็นต้น

สี 3 บิต (23 = 8 สี) - คอมพิวเตอร์ส่วนบุคคลสำหรับงานอดิเรกในยุคแรก ๆ ที่ใช้เครื่องรับโทรทัศน์ในการแสดงผล เช่น ZX Spectrum, BBC Micro

สี 4 บิต (24 = 16 สี) - EGA (640 x 350 พิกเซล) และ VGA (โหมด 640 x 480 พิกเซล), แมคอินทอช, Atari ST, Commodore 64, Amstrad CPC
สี 5 บิต (25 = 32 สี) - Amiga รุ่นแรก
สี 6 บิต (26 = 64 สี) - เช่นชิปเซ็ตเฉพาะของ Amiga

สี 8 บิต (28 = 256 สี) - เวิร์กสเตชัน UNIX รุ่นแรก, โหมดความละเอียดต่ำของ VGA, SVGA, แมคอินทอช เป็นต้น
สี 12 บิต (212 = 4096 สี) - โหมด HAM ในระบบ กราฟิกซิลิคอน บางระบบ, Neo Geo, NeXTstation, Amiga
สี 16 บิต (216 = 65536 สี)
สี 24 บิต (224 = 16777216 สี) ใช้ในผลิตภัณฑ์จำนวนมาก
สี 30 บิต (230 = 1073741824 สี) สีมากกว่า 30 บิต (ไม่รวมสี 32 บิต) บางครั้งเรียกว่า ดีปคัลเลอร์ (deepcolor, deep colors)
สี 32 บิต (232 = 4294967296 สี) สี RGBA
สี 48 บิต (248 = 281,474,976,710,656 สี) มักใช้สำหรับข้อมูลภายในและข้อมูลระดับกลาง
ชิปกราฟิกเก่าบางรุ่นที่ใช้ในคอมพิวเตอร์ส่วนบุคคลและเครื่องเล่นเกมรุ่นแรก ๆ ได้พยายามเพิ่มจำนวนสีที่สามารถแสดงผลได้ในคราวเดียวโดยการออกแบบให้สอดคล้องกันระหว่างจานสีและพิกเซล ตัวอย่างเช่น ภาพบิตแมปใน ZX Spectrum นั้นอยู่ในรูปแบบสี 1 บิต (2 สี) แต่จานสีสามารถตั้งค่าเป็นหน่วย 8x8 พิกเซล เพื่อให้สามารถแสดงสีโดยรวมได้มากกว่า 2 สีโดยภาพรวมได้

== ไดเรกต์คัลเลอร์ ==
เมื่อจำนวนบิตเพิ่มขึ้น จำนวนสีที่สามารถแสดงได้ก็เพิ่มขึ้น และในขณะเดียวกันขนาดของแผนผังสีก็ไม่สมจริง (ที่ความลึก 20 บิต การใช้แผนผังสีจะใช้หน่วยความจำมากกว่าการใช้พิกเซลเพื่อแสดงสีโดยตรง) ดังนั้น เมื่อความลึกของสีเพิ่มขึ้น ข้อมูลต่อพิกเซลจึงถูกใช้โดยตรงเพื่อแสดงความสว่าง RGB (แดง เขียว น้ำเงิน) สิ่งนี้เรียกว่า ไดเรกต์คัลเลอร์ (direct color)
อุปกรณ์แสดงผลของคอมพิวเตอร์หรือการ์ดวิดีโอทั่วไปสามารถกำหนดความลึกของสี 8 บิต (256 ระดับสี) ให้กับแต่ละช่องสัญญาณ R/G/B สามช่อง ซึ่งแสดงถึงพื้นที่สีโดยรวม 24 บิต (อาจเพิ่มช่องอัลฟา อีก 8 บิตเป็น 32 บิต) ในอดีตเคยมีการกำหนดให้แต่ละช่องเป็น 6 บิต (64 ระดับสี)  มาตรฐาน DVD จัดสรร 10 บิต (1024 ระดับสี) ให้กับแต่ละช่องสัญญาณวิดีโอ Y/U/V (สัญญาณ YUV ประกอบด้วยสัญญาณความสว่างและสัญญาณความแตกต่างของสีสองสัญญาณ) ส่วนในมาตรฐานบลูเรย์จะจัดสรร 8 บิตต่อช่องสัญญาณเท่านั้น นอกจากนี้ โทรศัพท์มือถือที่ใช้ความลึกของสีนอกเหนือจากต่อไปนี้ เช่น ไดเรกต์คัลเลอร์ 12 บิต ได้รับการพัฒนาและจัดส่ง
=== สี 8 บิต ===
รูปแบบหนึ่งที่มีการใช้งานคือ จัดสรร 3 บิต (8 ระดับสี) ให้กับส่วนประกอบ R และ G และจัดสรรอีก 2 บิตที่เหลือ (4 ระดับสี) ให้กับ B ทำให้สามารถแสดงสีได้ 256 สี เนื่องจากดวงตาของมนุษย์มีความไวต่อส่วนประกอบสีน้ำเงินน้อยกว่าสีแดงและสีเขียว จึงให้จำนวนบิตที่จัดสรรให้กับ B ลดลง ระบบ V9938 ที่ใช้ในมาตรฐานเช่น MSX2 นั้นใช้โหมดการแสดงผลนี้
แม้ว่าจะแตกต่างจากสีที่จัดทำดัชนี 8bpp แต่ก็เป็นไปได้ที่จะจำลองการแสดงผลของมาตรฐานนี้ด้วยสีที่จัดทำดัชนี 8bpp
=== ไฮคัลเลอร์ (15/16 บิต) ===
ไฮคัลเลอร์ (high color) มีความลึกของสี 15 หรือ 16 บิต ซึ่งถือว่าให้สีเพียงพอสำหรับการแสดงสีทั่วไป ในกรณีของ 15 บิต ความสว่างของสีแดง เขียว และน้ำเงินจะแสดงด้วยอย่างละ 5 บิต เนื่องจาก 25 เท่ากับ 32 ความสว่างขององค์ประกอบสีแต่ละสีคือ 32 ระดับสี และสามารถแสดงสีโดยรวมได้ 32,768 สี (32×32×32=32,768) ในกรณีของ 16 บิต สีเขียวซึ่งดวงตาของมนุษย์ไวต่อการมองเห็นจะแสดงเป็น 6 บิต (64 ระดับสี) ดังนั้น จำนวนสีที่แสดงได้คือ 65,536 (32×64×32=65,536)  นอกจากนี้ยังมีวิธีการที่แต่ละ R/G/B แทนด้วย 4 บิต (16 การไล่ระดับสี) และอีก 4 บิตที่เหลือใช้สำหรับช่องอัลฟา ในกรณีนั้น จำนวนสีที่แสดงได้คือ 4,096 ความลึกของสีเหล่านี้บางครั้งใช้ในอุปกรณ์ขนาดเล็กที่มีหน้าจอสี เช่น โทรศัพท์มือถือ
โดยทั่วไปแล้วไฮคัลเลอร์จะจัดสรร 5 บิตหรือมากกว่านั้นให้กับแต่ละส่วนประกอบของสี บางครั้งถือได้ว่าเพียงพอสำหรับการแสดงภาพถ่าย
=== สี 18 บิต ===
LCD ราคาไม่แพง (เช่น รูปแบบ TN) ลดสีจริงลงเหลือ 18 บิต (64 x 64 x 64 = 262,144 สี) และใช้ดิเธอริง หรือเฟรมคอนโทรล หรืออีกทางหนึ่ง ข้อมูลสี 6 บิตอาจถูกยกเลิกทั้งหมด จอแสดงผลคริสตัลเหลวราคาแพง (เช่น ระบบ IPS ) สามารถแสดงความลึกสี 24 บิตหรือมากกว่านั้น
=== ทรูคัลเลอร์ (24/32 บิต) ===
ทรูคัลเลอร์ (true color) ประกอบด้วย 24 บิต ซึ่งสามารถแสดงสีได้ ประมาณ 16.77 ล้าน (=224) สี กล่าวกันว่านี่เกือบจะถึงขีดจำกัดของจำนวนสีที่ดวงตามนุษย์สามารถแยกแยะได้ เมื่อสร้างคอมพิวเตอร์กราฟิกส์จะเห็นได้ว่าข้อจำกัดเมื่อเทียบกับภาพแอนะล็อก ทรูคัลเลอร์ 24 บิตแสดงถึง 8 บิตสำหรับแต่ละสีใน RGB ดังนั้น แต่ละองค์ประกอบสีจึงแทนด้วยความสว่าง 256 ระดับ และสามารถแสดงสีได้ทั้งหมด 16,777,216 สี

บางครั้งก็ใช้คำว่า "ทรูคัลเลอร์" ในการเรียกโหมดที่แสดงข้อมูล RGB โดยไม่ใช้จานสีหรือแผนที่สี หรือก็คือความหมายเดียวกับไดเรกต์คัลเลอร์ และเป็นคำตรงกันข้ามกับซูโดคัลเลอร์ (pseudo color)
โดยทั่วไปแทนที่จะใช้แค่ 24 บิต มักจะใช้ในรูปของทรูคัลเลอร์ 32 บิต ซึ่ง 32 บิตในที่นี้ไม่ได้หมายความว่าสามารถแสดงสีได้ 4,294,967,296 (=232) สี แต่อันที่จริงแล้วเป็นสีจริง 24 บิต ส่วนอีก 8 บิตที่เหลืออาจไม่ได้จัดสรร หรือถูกใช้สำหรับช่องอัลฟา โดยทั่วไปแล้ว คอมพิวเตอร์ทุกวันนี้สามารถจัดการข้อมูลในหน่วย 32 บิตได้ดีกว่าหน่วย 24 บิต ดังนั้นจึงพยายามจัดเก็บข้อมูลพิกเซลในหน่วย 32 บิต ลำดับการจัดเก็บอาจเป็น RGB หรือ BGR
แบบจำลองสี RGB ซึ่งแสดงด้วยทรูคัลเลอร์นั้นไม่สามารถแสดงสีในช่วงสี ที่อยู่นอกพื้นที่สี RGB ได้
=== ดีปคัลเลอร์ (30/36/48/64 บิต) ===
ดีปคัลเลอร์ (deep color) หมายถึงความลึกสีที่สามารถแสดงช่วงสีตั้งแต่หนึ่งพันล้านสีขึ้นไป ระบบดีปคัลเลอร์สามารถใช้ปริภูมิสี ชนิด xvYCC, sRGB และ YCbCr
จำนวนบิตอาจใช้เป็น 30, 36, 48 หรือ 64 บิต การ์ดแสดงผลที่มี 10 บิตสำหรับ R/G/B (รวม 30 บิต) ปรากฏในตลาดในช่วงปลายทศวรรษที่ 1990 ตัวอย่างเช่น มีการ์ด Radius ThunderPower สำหรับ Macintosh ซึ่งมีปลั๊กอิน QuickDraw และอะโดบี โฟโตชอป เพื่อรองรับการแก้ไขภาพสี 30 บิต
บางบริษัทเช่นซิลิคอนกราฟิกส์ได้เปิดตัวรุ่นที่จัดสรร 12 บิตและ 16 บิตต่อช่อง (สี 36 บิต, สี 48 บิต) สำหรับเวิร์กสเตชันกราฟิกระดับไฮเอนด์ สำหรับสี 48 บิต ให้จัดสรร 64 บิตให้กับพิกเซล และ 16 บิตสำหรับช่องอัลฟา
ค่าความสว่างจะแสดงด้วยเลขทศนิยม ในรูปแบบส่วนต่อขยายช่วงไดนามิกของภาพ เช่น ในการสังเคราะห์ช่วงไดนามิกสูง (HDRI) ทำให้สามารถแสดงภาพที่มีการเปลี่ยนแปลงความสว่างอย่างคมชัดในปริภูมิสีเดียว มักใช้ 32 บิตสำหรับแต่ละ R/G/B บริษัท ILM ได้เสนอรูปแบบไฟล์ภาพ มาตรฐานใหม่ที่เรียกว่า OpenEXR ซึ่งใช้ เลขทศนิยม 16 บิต
== การสนับสนุนภาคอุตสาหกรรม ==
HDMI 1.3 ได้กำหนดให้ใช้ความลึกสี 30 บิต (1.073 พันล้านสี), 36 บิต (68.71 พันล้านสี) และ 48 บิต (281.5 ล้านล้านสี) และ NVIDIA ก็จึงผลิตกราฟิกการ์ดที่รองรับสีลึก 30 บิตตั้งแต่ปี 2006  เช่นเดียวกับ RADEON ของ AMD การ์ดแสดงผล ATI FireGL V7350 รองรับสี 40 บิตและ 64 บิต
มาตรฐาน DisplayPort ยังรองรับความลึกของสีที่ 24bpp หรือสูงกว่านั้น
=== สำหรับเครื่องรับโทรทัศน์ ===
จอโทรทัศน์และคอมพิวเตอร์ปัจจุบันแสดงสีโดยการผสมความเข้มของแม่สีสามสี (แดง เขียว และ น้ำเงิน) ตัวอย่างเช่น สีเหลืองสดมีส่วนประกอบของสีแดงและสีเขียวในปริมาณที่เท่ากัน และไม่มีส่วนประกอบของสีน้ำเงิน อย่างไรก็ตาม นี่เป็นเพียงการประมาณเท่านั้น และไม่อิ่มตัวเท่าแสงสีเหลืองจริง ด้วยเหตุนี้บางบริษัทเช่น เท็กซัสอินสตรูเมนต์ จึงได้เสนอวิธีการที่เรียกว่า บริลเลียนต์คัลเลอรื (Brilliant Color) นี่เป็นวิธีการที่มีข้อมูลความสว่างสำหรับสีฟ้า สีม่วงแดง และสีเหลืองนอกเหนือจาก RGB มิตซูบิชิ อิเล็กทริค และ ซัมซุง กำลังพัฒนาโทรทัศน์โดยใช้วิธีนี้ โดยใช้ 8 บิตสำหรับแต่ละช่องสี มีความลึกของสีรวม 48 บิต ชาร์ปนำเสนอเทคโนโลยีที่เรียกว่า Quattron ร่วมกับ AQUOS และเพิ่มองค์ประกอบสีเหลืองให้กับ RGB เพื่อขยายช่วงสี
== อ้างอิง ==
ความลึกสี
เทคโนโลยีโทรทัศน์