ฉันเห็นพื้นที่สี HSV ใช้ทั่วสถานที่: สำหรับการติดตามการตรวจจับของมนุษย์ ฯลฯ ... ฉันสงสัยว่าทำไม มันเกี่ยวกับพื้นที่สีนี้ที่ทำให้ดีกว่าการใช้ RGB?
ฉันเห็นพื้นที่สี HSV ใช้ทั่วสถานที่: สำหรับการติดตามการตรวจจับของมนุษย์ ฯลฯ ... ฉันสงสัยว่าทำไม มันเกี่ยวกับพื้นที่สีนี้ที่ทำให้ดีกว่าการใช้ RGB?
คำตอบ:
คำตอบง่ายๆคือไม่เหมือนRGB , HSVแยกlumaหรือความเข้มของภาพจากchromaหรือข้อมูลสี สิ่งนี้มีประโยชน์มากในหลาย ๆ แอปพลิเคชัน ตัวอย่างเช่นหากคุณต้องการปรับสมดุลของฮิสโตแกรมของภาพสีคุณอาจต้องการทำเช่นนั้นกับองค์ประกอบความเข้มเท่านั้นและปล่อยให้องค์ประกอบสีอยู่คนเดียว ไม่งั้นคุณจะได้สีที่แปลกมาก
ในสายตาคอมพิวเตอร์คุณมักต้องการแยกส่วนประกอบของสีออกจากความเข้มด้วยเหตุผลต่าง ๆ เช่นความทนทานต่อการเปลี่ยนแปลงของแสงหรือการลบเงา
อย่างไรก็ตามโปรดทราบว่า HSV เป็นหนึ่งในช่องว่างสีจำนวนมากที่แยกสีจากความเข้ม (ดู YCbCr, Lab, ฯลฯ ) HSV มักจะใช้เพียงเพราะรหัสสำหรับการแปลงระหว่าง RGB และ HSV นั้นมีให้ใช้อย่างกว้างขวางและยังสามารถนำไปใช้งานได้ง่าย ยกตัวอย่างเช่นกล่องเครื่องมือสำหรับการประมวลผลภาพ MATLAB รวมถึงฟังก์ชั่นและrgb2hsv
hsv2rgb
ข้อมูลสีมักมีเสียงรบกวนมากกว่าข้อมูล HSV
ให้ฉันยกตัวอย่างให้คุณ: ฉันและเพื่อนบางคนมีส่วนเกี่ยวข้องในโครงการที่เกี่ยวข้องกับการจดจำสัญญาณจราจรในวิดีโอฉากจริง (เสียงเงาและบางครั้งการบดเคี้ยว) มันเป็นส่วนหนึ่งของโครงการที่ใหญ่กว่าดังนั้นเราจึงมีเวลาลองใช้แนวทางที่แตกต่างกับปัญหาเฉพาะนี้ (และใช้วิธีที่เก่ากว่า) ฉันไม่ได้ลองใช้วิธีใช้สี แต่ฉันจำข้อมูลที่น่าสนใจได้: _ ส่วนประกอบ RGB ที่โดดเด่นในสัญลักษณ์ STOP มักไม่แดง! (ส่วนใหญ่เกิดจากเงา)
คุณมักจะได้รับข้อมูลที่ดีจาก colorspace ให้ฉันลองและยกตัวอย่างประสบการณ์ส่วนตัวอีกครั้งลองจินตนาการว่าคุณมีภาพของระนาบสีเดียวที่มีเงาอยู่ ในพื้นที่สี RGB ส่วนที่เป็นเงาจะมีลักษณะแตกต่างจากส่วนที่ไม่มีเงามากที่สุด ใน HSV colourspace องค์ประกอบสีของแพทช์ทั้งสองมีแนวโน้มที่จะใกล้เคียงกันมากขึ้น: เงาจะมีอิทธิพลต่อค่าหรือองค์ประกอบความอิ่มตัวในขณะที่สีแสดงถึง "สี" หลัก (โดยไม่มีความสว่างและเจือจางตามสีขาว) / black) ไม่ควรเปลี่ยนแปลงมากนัก
หากคำอธิบายนี้ไม่ฟังดูง่ายสำหรับคุณฉันขอแนะนำ:
ลองดูเหตุผลว่าทำไมการแสดงสีแบบนี้ได้รับการพัฒนาขึ้นมา: มันมักจะเป็นไปในทางใดทางหนึ่งตามมุมมองของการตีความสีของมนุษย์
เช่นเด็กไม่จริงเช่นสูงสี == มูลค่าวัตถุพวกเขาต้องการที่สูงsatuatedวัตถุวัตถุซึ่งเป็นสีที่รุนแรงและไม่เจือจาง
หลังจากคุณได้รับสิ่งนี้และพัฒนาสัญชาตญาณคุณควรเล่นกับภาพ: ลองแยกภาพต่าง ๆ ในส่วนประกอบ RGB และ HSV ของพวกเขา
เป้าหมายของคุณคือการเห็นและเข้าใจความแตกต่างในการย่อยสลายเหล่านี้สำหรับภาพที่มีเงาความสว่างที่แข็งแกร่งการสะท้อนแสง
หากคุณมีรูปแบบเฉพาะที่คุณต้องการเล่นลองแยกย่อยมัน: ใครจะรู้บางที RGB นั้นเหมาะกับความต้องการของคุณมากกว่า HSV :)
การใช้เฉพาะองค์ประกอบของเว้ทำให้อัลกอริทึมมีความละเอียดอ่อนน้อยลง
อีกตัวเลือกยอดนิยมคือพื้นที่สี LAB ที่ช่อง AB แสดงระยะทางสีและปริภูมิแบบยุคลิดในพื้นที่ AB ให้ตรงกับการรับรู้สีของมนุษย์มากขึ้น การเพิกเฉยช่อง L (ความส่องสว่าง) อีกครั้งทำให้อัลกอริทึมมีความทนทานต่อความแตกต่างของแสงมากขึ้น
คำตอบที่ดีที่สุดที่ฉันสามารถทำได้คือ: RGB ต้องเกี่ยวข้องกับ "รายละเอียดการใช้งาน" เกี่ยวกับวิธีที่ RGB แสดงสีและ HSV เกี่ยวข้องกับส่วนประกอบ "สีจริง" อีกวิธีหนึ่งในการบอกว่านี่คือ RGB คือวิธีที่คอมพิวเตอร์ใช้สีและ HSV พยายามจับองค์ประกอบของวิธีที่เรารับรู้สี
ฉันจะทำอย่างละเอียด:
สีคือการรับรู้ตามคลื่นแม่เหล็กไฟฟ้า คุณสมบัติตามธรรมชาติของคลื่นเหล่านี้ยกตัวอย่างเช่นความเข้มและความถี่ หากเรากวาดความถี่ของคลื่นแสงจากอินฟาเรดถึงอัลตร้าไวโอเลตเราจะเห็นการเปลี่ยนแปลงของสีตามสีรุ้ง สีรุ้งอาจถือได้ว่าเป็น "บริสุทธิ์" เพราะมันเป็นตัวแทนของคลื่นความถี่เดียว
ตอนนี้สายตามนุษย์สามารถตอบสนองได้หรือ "สะท้อน" ถึงความถี่แสงหลักสามความถี่ไม่ใช่สีแดงสีเขียวและสีน้ำเงินที่น่าประหลาดใจ ความจริงก็คือการตอบสนองนี้ไม่เป็นเชิงเส้นเพื่อให้จอประสาทตาสามารถแยกแยะสีบริสุทธิ์ที่กำหนด (และโดยปริยาย "ความถี่" ของมัน) โดยการตอบสนองรวมของสามส่วนสี
พื้นที่สี RGB มีอยู่เพื่อเลียนแบบการทำงานภายในของเรตินาของเราเท่านั้นเพื่อให้สามารถแสดงสีส่วนใหญ่บนหน้าจอคอมพิวเตอร์โดยใช้วิธีที่สะดวก (จากมุมมองของคอมพิวเตอร์) สี 24 บิตต่อพิกเซล การเข้ารหัส พื้นที่สี RGB นั้นไม่มีความเกี่ยวข้องกับคุณสมบัติของสีตามธรรมชาติไม่ว่าจะเป็นการตีความสีของมนุษย์
ตัวอย่างเช่นการดำเนินการเกี่ยวกับคณิตศาสตร์ใด ๆ ดำเนินการช่องสัญญาณที่ชาญฉลาดในพื้นที่ RGB (ตัวอย่างเช่นการสร้างการไล่ระดับสี) ให้ผลลัพธ์ที่หยาบหรือแม้กระทั่งชัดเจนว่า "ผิด" นั่นคือเหตุผลที่แนะนำให้สร้าง colormaps โดยการแปลงสีหยุดจาก RGB ไปเป็นช่องว่างสีอื่น (HLS, Lab, ฯลฯ ) ทำการดำเนินการแก้ไขแล้วแปลงค่าที่ถูกแปลงกลับไปเป็น RGB
หวังว่านี่จะช่วยได้!
HSV ย่อมาจาก Hue-Saturation-Value จริงๆแล้วมันเป็นประเภทของการแสดงระนาบสี (เช่น RGB, YCbCr เป็นต้น)
มันเป็นรูปแบบการแสดงสีที่เป็นอิสระจากอุปกรณ์: การแสดงสี HSV มีประโยชน์ในการตรวจจับประเภทสีที่เฉพาะเจาะจงเช่น: สีผิวสีไฟ ฯลฯ
Matlab
ฟังก์ชั่นการแปลงภาพ RGB กับระนาบ HSV rgb2hsv('/inputimage_name')
คือ
ฉันจะยกตัวอย่างให้คุณเข้าใจ มือเรามีฝ่ามือหลายข้างฝ่ามือด้านล่างและใต้ฝ่ามือ เราสามารถเห็นความแตกต่างของสีที่แตกต่างกันในพื้นที่เหล่านี้ แต่เฉดสีสำหรับภูมิภาคเหล่านี้ไม่แตกต่างกันมากดังนั้นค่าสีจึงมีประโยชน์ในการแบ่งส่วนของมือ
ไม่มีอะไรที่ฉันรู้ว่าดีกว่าโดยเฉพาะกับ HSV เมื่อเทียบกับ YUV หรือ LAB ที่จะทำให้ดีขึ้นสำหรับการดึงคุณสมบัติและการแปรปรวนของแสงหรือการมองเห็น ฉันคิดว่า HSV เป็นสิ่งที่ใช้บ่อยกว่าเนื่องจากการประชุมและความต่อเนื่อง: ง่ายกว่าในการเปรียบเทียบผลลัพธ์และสื่อสารกันถ้าคุณทั้งคู่ใช้ colorpace เดียวกัน
จากที่กล่าวมา HSV (เมื่อเทียบกับ RGB) ใช้ในการมองเห็นคอมพิวเตอร์ด้วยเหตุผล 2 ประการที่ฉันรู้:
ดังที่คนอื่น ๆ กล่าวถึงมันจะเป็นประโยชน์ในการแยกลูมาจาก chroma ลูมาแตกต่างกันอย่างมากในฉากตามปริมาณแสงที่ตกลงบนวัตถุ Chroma ตรงกันข้ามมีความสัมพันธ์ที่ดีขึ้นกับคุณสมบัติที่แท้จริงของวัตถุและสำหรับภาพที่มีความสมดุลของสีขาวอย่างเหมาะสมนั้นมีความแปรปรวนไม่มากก็น้อย
อย่างไรก็ตามฉันต้องการเพิ่ม HSV, HSL หรือในความเป็นจริงพื้นที่สีใด ๆ ที่มีการแยกแยะความน่าสนใจของระนาบสีนั้นเป็นตัวเลือกที่ไม่ดีสำหรับจุดประสงค์ นั่นเป็นเพราะพวกเขานำเสนอความแปลกประหลาดในแนวของสีเทา (ซึ่งสีเป็นสีเทา?) ทำให้พวกเขามีความไวต่อเสียงรบกวนและสมดุลสีขาว นอกจากนี้การเปรียบเทียบระหว่างสองสีในระบบพิกัดเชิงขั้วไม่ได้ตรงไปข้างหน้า นอกจากนี้โปรดทราบว่าค่าใน HSV หรือความสว่างใน HSL นั้นไม่ตรงกับความรู้สึกของมนุษย์ที่รับรู้หรือการวัดพลังงานทางกายภาพอื่น ๆ
มีช่องว่างสีเชิงเส้นมากมายที่ให้การแยกลูม่า - โครมาเหมือนกันในขณะที่รักษาลิเนียริตี้ (YCbCr, YUV) หรือการมองเห็นของมนุษย์ในรูปแบบที่เหมาะสม (LUV, LAB) เมื่อเทียบกับที่คุณสามารถเปรียบเทียบสองสีโดยใช้ Euclidean L2 norm บนสีของพวกเขาส่งผลให้อัลกอริทึมที่แข็งแกร่งยิ่งขึ้นโดยรวม
ทำไมจึงใช้ HSV / HSL บ่อยครั้ง ยากที่จะให้คำตอบที่มีวัตถุประสงค์ จากประสบการณ์ของฉันส่วนใหญ่เกิดจากความไม่รู้และความพร้อมใช้งานของรูทีนการแปลง RGB-> HSV ต้องทำงานกับรหัสที่ผู้เขียนไม่เข้าใจการแก้ไขแกมม่าให้เว้นวรรคสีที่แตกต่างกันเพียงอย่างเดียว รหัสที่เห็นว่าแปลง RGB เป็น HSV จะแบ่งภาพตามเฉดสีโดยไม่คำนึงถึงความจริงที่ว่ามันเป็นปริมาณแบบแยกส่วน ฉันคิดว่าเราสามารถตกลงกันได้ว่าการตัดสินใจที่ไม่ใส่ใจนั้นได้รับการสนับสนุนด้วยเหตุผลใด ๆ
โมเดลสี HSV มีความสัมพันธ์กับวิธีที่มนุษย์มองเห็นวัตถุสีมากกว่าเมื่อเทียบกับ RGB, YUV, แล็บ ฯลฯ
เราเห็นว่าวัตถุมีสีอะไร (ฮิว) มันอิ่มตัวมากแค่ไหน (ความอิ่มตัว) และแสงสีขาวตกลงมาเท่าใด