Advanced Information & Communication Technology Center, Digital Media Laboratory ﮔﺰﺍﺭﺵ ﭘﻴﺸﺮﻓﺖ ﭘﺮﻭﮊﻩ ﮐﺎﺭﺷﻨﺎﺳﯽ ﺍﺭﺷﺪ ﺟﻌﻔﺮ ﻣﺤﻤﺪﯼ Muhammadi@ce.sharif.edu ﺗﺎرﯾﺦ ﺗﻬﻴﻪ ﮔﺰارش .٩ﺁذر ١٣٨٣.ﺗﺎ .٢٠دﯼ١٣٨٣. ﺷﻤﺎرﻩ ﮔﺰارش ﮔﺰارش ﺷﻤﺎرﻩ ۵ ﻋﻨﻮان ﮔﺰارش ﻓﻀﺎهﺎﯼ رﻧﮓ ،وﯾﮋﮔﯽ و ﮐﺎرﺑﺮدهﺎ و ﺟﻌﺒﻪاﺑﺰار ColorConversion toolbox ﺧﻼﺻﻪ هﺪف از ﺗﻬﻴﻪﯼ اﯾﻦ ﮔﺰارش ﻣﻌﺮﻓﯽ ﻓﻀﺎهﺎﯼ رﻧﮓ ،وﯾﮋﮔﯽهﺎﯼ ﺁﻧﺎن و ﮐﺎرﺑﺮدهﺎﯾﯽ ﮐﻪ دارﻧﺪ ،ﻣﯽﺑﺎﺷﺪ .اﺑﺘﺪا ﻣﺒﺎﻧﯽ رﻧﮓ و ﺗﻌﺎرﯾﻒ اﺳﺘﺎﻧﺪارد اوﻟﻴﻪ ،اراﺋﻪ ﺷﺪﻩ ،ﻣﺪل RGBو XYZو ﻧﺤﻮﻩﯼ ﻧﻤﺎﯾﺶ ﻓﻀﺎهﺎﯼ رﻧﮕﯽ ﺗﻮﺿﻴﺢ دادﻩ ﺷﺪﻩاﻧﺪ .ﺳﭙﺲ دﻟﻴﻞ وﺟﻮد و اﺳﺘﻔﺎدﻩ از ﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﺘﻔﺎوت ﺑﺤﺚ ﺷﺪﻩ اﺳﺖ. در اداﻣﻪ ﻣﻌﻤﻮلﺗﺮﯾﻦ ﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﻮﺟﻮد ،ﺷﺎﻣﻞ ،CMY(K) ،xyYﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﺨﺘﻠﻒ اﻧﺘﻘﺎل ﺗﻠﻮﯾﺰﯾﻮﻧﯽ،YUV ،YIQ : ' YCbCr ،YU'Vو ،YCCﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﺒﺘﻨﯽ ﺑﺮ درﮎ دﯾﺪارﯼ اﻧﺴﺎن HIS :و HSVو ﻓﻀﺎهﺎﯼ ﺧﻄﯽ L*a*b* ،L*u*v* :و LCHﻣﻌﺮﻓﯽ ﺷﺪﻩ ،ﻧﺤﻮﻩﯼ ورود از ﻓﻀﺎﯼ RGBﺑﻪ ﺁنهﺎ و ﺑﺎﻟﻌﮑﺲ ﺗﻮﺿﻴﺢ دادﻩ ﺷﺪﻩ و ﻣﻮارد ﮐﺎرﺑﺮد هﺮ ﮐﺪام از ﺁنهﺎ ذﮐﺮ ﺷﺪﻩ اﺳﺖ. در هﺮ ﻣﺮﺣﻠﻪ ،ﭘﺲ از اراﺋﻪﯼ ﻧﺤﻮﻩﯼ ﺗﺒﺪﯾﻼت ،ﻧﮑﺎﺗﯽ ﮐﻪ ﺑﺎﯾﺪ در ﭘﻴﺎدﻩﺳﺎزﯼ ﺁنهﺎ ﻣﺪ ﻧﻈﺮ ﻗﺮار ﮔﻴﺮﻧﺪ ،ذﮐﺮ ﺷﺪﻩ و ﮐﺪ ﻣﻄﻠﺐ ﻣﺮﺑﻮط ﺑﻪ ﺁن ﺗﺒﺪﯾﻞ ﺁوردﻩ ﺷﺪﻩ اﺳﺖ .ﻣﺠﻤﻮﻋﻪﯼ ﮐﻠﻴﻪﯼ ﺗﻮاﺑﻊ ﻣﻄﻠﺐ ﺗﺤﺖ ﻋﻨﻮان ColorConversion toolboxﺟﻤﻊﺑﻨﺪﯼ ﺷﺪﻩ اﺳﺖ. ﮐﻠﻤﺎت ﮐﻠﻴﺪﯼ رﻧﮓ ،ﻓﻀﺎﯼ رﻧﮓ ،ﮐﺮوﻣﻴﻨﺎﻧﺲ ،ﻟﻮﻣﻴﻨﺎﻧﺲ ،درﮎ دﯾﺪارﯼ ،ﻣﻄﻠﺐ ،ﺟﻌﺒﻪاﺑﺰار ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖhttp://dml.aictc.com . 1 Advanced Information & Communication Technology Center ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ رﻧﮓ و ﻓﻀﺎﯼ رﻧﮓ RGB درﯾﺎﻓﺖ اﻧﺴﺎن از رﻧﮓ اﺷﻴﺎ ﺑﻪوﺳﻴﻠﻪﯼ ﻣﺎهﻴﺖ ﻧﻮر ﻣﻨﻌﮑﺲ ﺷﺪﻩ از ﺁنهﺎ ﻣﻌﻴﻦ ﻣﯽﺷﻮد .ﻧﻮر ﻣﺮﺋﯽ ﻧﻮار ﻧﺴﺒﺘﺎ ﺑﺎرﯾﮑﯽ در ﻃﻴﻒ اﻧﺮژﯼ اﻟﮑﺘﺮوﻣﻐﻨﺎﻃﻴﺴﯽ ﻣﯽﺑﺎﺷﺪ .ﺑﺴﺘﻪ ﺑﻪ اﯾﻨﮑﻪ ﯾﮏ ﺷﯽء در ﮐﺪام ﻣﺤﺪودﻩ از ﻃﻴﻒ ﻧﻮرﯼ ،اﻧﻌﮑﺎس ﺧﻮﺑﯽ داﺷﺘﻪ ﺑﺎﺷﺪ ،ﺑﺮاﯼ ﭼﺸﻢ ﻧﺎﻇﺮ ﺑﻪ ﺁن رﻧﮓ ﺑﻪ ﻧﻈﺮ ﻣﯽرﺳﺪ. اﯾﻦ ﺗﻌﺒﻴﺮ ،ﺗﻌﺒﻴﺮ ﻓﻴﺰﯾﮑﯽ رﻧﮓ ﻣﯽﺑﺎﺷﺪ ،اﻣﺎ ﭘﺪﯾﺪﻩﯼ ﺗﺸﺨﻴﺺ رﻧﮓ در اﻧﺴﺎن ﯾﮏ ﭘﺪﯾﺪﻩﯼ ﺟﺴﻤﯽ -رواﻧﯽ ﺑﻮدﻩ و ﻣﺎهﻴﺖ ﺁن ﺑﺮ ﻣﺎ ﭘﻮﺷﻴﺪﻩ اﺳﺖ .در اﺻﻞ درﮎ ﯾﮏ رﻧﮓ ،ﻋﮑﺲاﻟﻌﻤﻠﯽ اﺳﺖ ﮐﻪ ﻣﻐﺰ ﺑﻪ ﻣﺤﺮﮎهﺎﯼ درﯾﺎﻓﺘﯽ از ﺳﻨﺴﻮرهﺎﯼ ﭼﺸﻢ ﻣﯽدهﺪ .درﮎ و درﯾﺎﻓﺖ رﻧﮓ ،اﺣﺴﺎﺳﯽ ﺷﺨﺼﯽ ﺑﻮدﻩ و ﻧﺴﺒﯽ ﻣﯽﺑﺎﺷﺪ .اﻓﺮاد ﻣﺨﺘﻠﻒ در ﻣﻮاﺟﻬﻪ ﺑﺎ رﻧﮓهﺎﯼ ﻣﺘﻔﺎوت و ﺗﻼش ﺑﺮاﯼ ﺑﻴﺎن ﺗﻔﺎوت ﺁنهﺎ ،اﺣﺴﺎسهﺎﯼ ﻣﺨﺘﻠﻔﯽ را از اﯾﻦ ﺗﻔﺎوتهﺎ ﺑﻴﺎن ﮐﺮدﻩاﻧﺪ. ﻣﺠﻤﻊ ﺟﻬﺎﻧﯽ اﺳﺘﺎﻧﺪاردﺳﺎزﯼ روﺷﻨﺎﯾﯽ ) ،(CIE1ﺗﻌﺎرﯾﻒ ﻣﺸﺨﺺ زﯾﺮ را ﺑﺮاﯼ اﯾﻦ اﺣﺴﺎسهﺎ اراﯾﻪ دادﻩ اﺳﺖ: • درﺧﺸﻨﺪﮔﯽ :2ﻣﻴﺰان ﻧﻮر درﯾﺎﻓﺘﯽ ﺗﻮﺳﻂ ﭼﺸﻢ اﻧﺴﺎن از اﺷﻴﺎ ،ﮐﻪ ﺗﻮﺳﻂ ﺁن ،اﻧﺴﺎن ،درﺧﺸﻨﺪﻩﺗﺮ ﺑﻮدن ﯾﮏ ﺷﯽ از دﯾﮕﺮﯼ را ﺗﺸﺨﻴﺺ ﻣﯽدهﺪ. • ﺗﻪرﻧﮓ :3اﺣﺴﺎس اﻧﺴﺎن از ﺷﺒﺎهﺖ ﺑﻴﻦ دو ﻧﺎﺣﻴﻪ ،ﺗﻮﺳﻂ اﯾﻦ ﭘﺎراﻣﺘﺮ ﺗﻌﻴﻴﻦ ﻣﯽﮔﺮدد .در اﺻﻞ ،ﺗﻪرﻧﮓ ﺑﻴﺎﻧﮕﺮ رﻧﮓ ﻏﺎﻟﺒﯽ اﺳﺖ ﮐﻪ ﺑﻴﻨﻨﺪﻩ درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ. • ﭘﺮرﻧﮕﯽ :4ﻣﻴﺰان ﮐﻤﺘﺮ ﯾﺎ ﺑﻴﺸﺘﺮ ﺑﻪ ﭼﺸﻢﺁﻣﺪن دو ﻧﺎﺣﻴﻪ ﺑﺎ ﺗﻪرﻧﮓ ﯾﮑﺴﺎن را ﻧﺸﺎن ﻣﯽدهﺪ. 5 • روﺷﻨﺎﯾﯽ :ﻣﻴﺰان اﺣﺴﺎس درﺧﺸﻨﺪﮔﯽ ﯾﮏ ﻧﺎﺣﻴﻪ ﺗﻮﺳﻂ ﭼﺸﻢ اﻧﺴﺎن ﻧﺴﺒﺖ ﺑﻪ رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ. • رﻧﮕﻴﻨﯽ :6ﻣﻴﺰان ﭘﺮرﻧﮕﯽ ﯾﮏ ﻧﺎﺣﻴﻪ ﻧﺴﺒﺖ ﺑﻪ درﺧﺸﻨﺪﮔﯽ رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ. • 7 اﺷﺒﺎع :ﻣﻴﺰان ﭘﺮرﻧﮕﯽ ﯾﮏ ﻧﺎﺣﻴﻪ ﻧﺴﺒﺖ ﺑﻪ درﺧﺸﻨﺪﮔﯽ ﺁن ﻧﺎﺣﻴﻪ ﯾﺎ ﺑﻪﻋﺒﺎرﺗﯽ دﯾﮕﺮ ﺧﻠﻮص ﻧﺴﺒﯽ ﺗﻪرﻧﮓ ﺁن. ﯾﮑﯽ از اوﻟﻴﻦ اﺳﺘﺎﻧﺪاردهﺎﯾﯽ ﮐﻪ ﺗﻮﺳﻂ CIEﺗﻌﺮﯾﻒ ﺷﺪﻩ اﺳﺖ ،اﺳﺘﺎﻧﺪارد RGBﻣﯽﺑﺎﺷﺪ .اﯾﻦ اﺳﺘﺎﻧﺪارد ﺑﺮ ﭘﺎﯾﻪﯼ ﺗﺌﻮرﯼ ﺳﻪرﻧﮕﯽ ﻣﯽﺑﺎﺷﺪ .ﺑﺮ اﺳﺎس اﯾﻦ ﺗﺌﻮرﯼ در اﯾﻦ ﻣﺪل ،هﺮ رﻧﮓ ،ﺑﺎ ﺗﺮﮐﻴﺐ ﻣﻘﺎدﻳﺮي از هﺮ ﮐﺪام از ﺳﻪ رﻧﮓ ﭘﺎﯾﻪﯼ ﻗﺮﻣﺰ ) ،(Redﺳﺒﺰ ) (Greenو ﺁﺑﻲ ) (Blueاﻳﺠﺎد ﻣﻲﺷﻮد .ﻣﻄﺎﺑﻖ اﯾﻦ اﺳﺘﺎﻧﺪارد ) (CIE RGBرﻧﮓهﺎﯼ ﭘﺎﯾﻪ ﻋﺒﺎرﺗﻨﺪ از: • ﻗﺮﻣﺰ )ﺑﺎ ﻃﻮل ﻃﻴﻒ رﻧﮓ ٧٠٠ﻧﺎﻧﻮﻣﺘﺮ( • ﺳﺒﺰ )ﺑﺎ ﻃﻮل ﻃﻴﻒ رﻧﮓ ۵۴۶/١ﻧﺎﻧﻮﻣﺘﺮ( • ﺁﺑﯽ )ﺑﺎ ﻃﻮل ﻃﻴﻒ رﻧﮓ ۴٣۵/٨ﻧﺎﻧﻮﻣﺘﺮ( اﻟﺒﺘﻪ ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﻣﻌﻨﺎﯼ ﭘﺎﯾﻪ ،در ﺗﻌﺮﯾﻒ ﻓﻮق اﯾﻦ ﻧﻴﺴﺖ ﮐﻪ اﯾﻦ ﺳﻪ ﻣﻮﻟﻔﻪ ﺑﻪ ﺗﻨﻬﺎﯾﯽ ﻣﯽﺗﻮاﻧﻨﺪ ﺗﻤﺎم رﻧﮓهﺎﯼ ﻃﻮل ﻃﻴﻒ را ﺗﻮﻟﻴﺪ ﮐﻨﻨﺪ .دراﻳﻦ ﻣﺪل ﺑﺮاي ﻧﺸﺎن دادن ﻓﻀﺎ ،از ﻳﮏ دﺳﺘﮕﺎﻩ ﻣﺨﺘﺼﺎت ﮐﺎرﺗﺰﻳﻦ اﺳﺘﻔﺎدﻩ ﺷﺪﻩ اﺳﺖ .زﻳﺮﻓﻀﺎﻳﻲ از اﻳﻦ دﺳﺘﮕﺎﻩ ﻣﺨﺘﺼﺎت ﮐﻪ ﺗﻤﺎم رﻧﮓهﺎ را در ﺑﺮ ﻣﻲ ﮔﻴﺮد ﻣﮑﻌﺒﻲ اﺳﺖ ﮐﻪ در ﺷﮑﻞ زﯾﺮ ﻧﺸﺎن دادﻩ ﺷﺪﻩ اﺳﺖ: ﻓﻀﺎي رﻧﮓ RGB در ﻣﮑﻌﺐ ﻣﺨﺘﺼﺎت ،ﺳﻪ رﻧﮓ ﻗﺮﻣﺰ ،ﺳﺒﺰ و ﺁﺑﻲ در ﺳﻪ ﮔﻮﺷﻪﯼ ﻣﮑﻌﺐ و ﺳﻪ رﻧﮓ ﻓﻴﺮوزﻩاﯼ ،ﺑﻨﻔﺶ و زرد در ﺳﻪ ﮔﻮﺷﻪﯼ دﻳﮕﺮ اﻳﻦ ﻣﮑﻌﺐ ﺟﺎي دارﻧﺪ. رﻧﮓ ﺳﻴﺎﻩ در ﻣﺒﺪا اﺳﺖ و ﺳﻔﻴﺪ هﻢ در ﮔﻮﺷﻪ اي از ﻣﮑﻌﺐ اﺳﺖ ﮐﻪ ﺑﻴﺸﺘﺮﻳﻦ ﻓﺎﺻﻠﻪ را ﺗﺎ ﻣﺒﺪا دارد .در اﻳﻦ ﻣﺪل ﻣﻘﺎدﻳﺮ ﺳﻄﻮح ﺧﺎﮐﺴﺘﺮي ،در اﻣﺘﺪاد ﺧﻄﻲ ﮐﻪ رﻧﮓ ﺳﻴﺎﻩ را از ﻳﮏ ﮔﻮﺷﻪ ﺑﻪ رﻧﮓ ﺳﻔﻴﺪ در ﮔﻮﺷﻪﯼ دﻳﮕﺮ وﺻﻞ ﮐﺮدﻩ ،ﻗﺮار دارﻧﺪ و هﺮ رﻧﮕﻲ ﻧﻘﻄﻪاي روي ﺳﻄﺢ ﻣﮑﻌﺐ ﻳﺎ درون ﺁن اﺳﺖ ﮐﻪ ﻣﻲ ﺗﻮان ﺁن را ﺑﻪ ﺻﻮرت ﺑﺮدارهﺎﻳﻲ ﮐﻪ از ﻣﺒﺪا ﺳﺮﭼﺸﻤﻪ ﮔﺮﻓﺘﻪاﻧﺪ ،درﻧﻈﺮ ﮔﺮﻓﺖ .هﻤﭽﻨﻴﻦ ﻣﻘﺎدﻳﺮ رﻧﮓهﺎ را ﺑﻪ ﮔﻮﻧﻪاي ﻧﺮﻣﺎل ﻣﻲﮐﻨﻨﺪ ﮐﻪ ﻣﮑﻌﺐ ﺷﮑﻞ ﻓﻮق ،ﻳﮏ ﻣﮑﻌﺐ واﺣﺪ ﺑﺎﺷﺪ .ﺑﻨﺎﺑﺮاﻳﻦ هﺮ ﺳﻪ ﻣﺘﻐﻴﺮ G ، Rو Bدر ﻣﺤﺪودﻩ ] [0, 1ﺗﻐﻴﻴﺮ ﻣﻲﮐﻨﻨﺪ. http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/home.html Brightness Hue Colorfulness Lightness Chroma Saturation ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 2 1 2 3 4 5 6 7 Advanced Information & Communication Technology Center در ﺑﺴﻴﺎرﯼ از ﮐﺎرﺑﺮدهﺎ ﺑﻬﺘﺮ اﺳﺖ ﮐﻪ از ﻣﻘﺎدﯾﺮ Gamma Correctedﺷﺪﻩﯼ RGBﯾﻌﻨﯽ ' R'G'Bاﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﻢ .ﺑﺮاﯼ اﯾﻦ ﻣﻨﻈﻮر از ﺗﺒﺪﯾﻞ زﯾﺮ اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﻢ ) Kﻧﻤﺎﯾﻨﺪﻩﯼ هﺮ ﮐﺪام از ﻣﻮﻟﻔﻪهﺎﯼ ﻧﺮﻣﺎلﺷﺪﻩﯼ RGBﻣﯽﺑﺎﺷﺪ(: )if (K > 0.018 )if (K ≤ 0.018 0.45 − 0.099 ⎪⎧ 1.099 * K ⎨ = 'K 4.5 * K ⎩⎪ ﮐﻪ ﻣﻘﺎدﯾﺮ ﺑﺪﺳﺖﺁﻣﺪﻩﯼ ﻓﻮق ﻧﻴﺰ در ﺑﺎزﻩﯼ ] [0,1ﺑﻮدﻩ و ﺑﺎﯾﺪ ﺑﻴﻦ ٠و ٢۵۵ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﭘﻴﺪا ﮐﺮدﻩ و ﮔﺮد ﺷﻮﻧﺪ ﺗﺎ ﺑﻪ ﻣﻘﺎدﯾﺮ دﯾﺠﻴﺘﺎل ٨ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﮔﺮدﻧﺪ. ﻧﺎم ﺗﺎﺑﻊ: )[Rp Gp Bp] = GammaCorrectRGB (R, G, B ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ G ،Rو Bرا ﮐﻪ در ﺑﺎزﻩﯼ ] [0,255ﻗﺮار دارﻧﺪ ،ﺑﻪ ﻣﻘﺎدﯾﺮ Gamma Correctedﺷﺪﻩﯼ ﺁﻧﻬﺎ در هﻤﺎن ﺑﺎزﻩ ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ]% scaling components to [0,1 ;Rn = double(R)/255 ;Gn = double(G)/255 ;Bn = double(B)255 if Rn <= 0.018 ;Rp = 4.5*Rn else ;Rp = 1.099*(Rn^0.45)-0.099 ;end if Gn <= 0.018 ;Gp = 4.5*Gn else ;Gp = 1.099*(Gn^0.45)-0.099 ;end if Bn <= 0.018 ;Bp = 4.5*Bn else ;Bp = 1.099*(Bn^0.45)-0.099 ;end %scaling components to 8-bits values ;)[Rp Gp Bp] = Scale28bit(Rp,Gp,Bp ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق هﻢ از ﺗﺒﺪﯾﻞ زﯾﺮ اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﻢ )' Kﻧﻤﺎﯾﻨﺪﻩﯼ هﺮ ﮐﺪام از ﻣﻮﻟﻔﻪهﺎﯼ ﻧﺮﻣﺎلﺷﺪﻩﯼ ' R'G'Bﻣﯽﺑﺎﺷﺪ(: )if (K ' > 0.081 )if (K ' ≤ 0.081 ⎧ ⎛ K '+ 0.099 ⎞100 45 ⎜ ⎪⎪ ⎟ ⎠ K = ⎨ ⎝ 1.099 ⎪ 'K ⎩⎪ 4.5 ﮐﻪ ﻣﻘﺎدﯾﺮ ﺑﺪﺳﺖﺁﻣﺪﻩﯼ ﻓﻮق ﻧﻴﺰ در ﺑﺎزﻩﯼ ] [0,1ﺑﻮدﻩ و ﺑﺎﯾﺪ ﺑﻴﻦ ٠و ٢۵۵ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﭘﻴﺪا ﮐﺮدﻩ و ﮔﺮد ﺷﻮﻧﺪ ﺗﺎ ﺑﻪ ﻣﻘﺎدﯾﺮ دﯾﺠﻴﺘﺎل ٨ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﮔﺮدﻧﺪ. ﻧﺎم ﺗﺎﺑﻊ: )[R G B] = ReverseGammaCorrectRGB (Rp, Gp, Bp ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ Gamma Correctedﺷﺪﻩﯼ Gp ،Rpو Bpرا ﮐﻪ در ﺑﺎزﻩﯼ ] [0,255ﻗﺮار دارﻧﺪ ،ﺑﻪ ﻣﻘﺎدﯾﺮ ﻣﻌﻤﻮﻟﯽ ﺁﻧﻬﺎ در هﻤﺎن ﺑﺎزﻩ ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 3 Advanced Information & Communication Technology Center ]% scaling components to [0,1 ;Rpn = double(Rp)/255 ;Gpn = double(Gp)/255 ;Bpn = double(Bp)/255 if Rpn < 0.081 ;R = Rpn/4.5 else ;)R = ((Rpn+0.099)/1.099)^(100/45 ;end if Gpn < 0.081 ;G = Gpn/4.5 else ;)G = ((Gpn+0.099)/1.099)^(100/45 ;end if Bpn < 0.081 ;B = Bpn/4.5 else ;)B = ((Bpn+0.099)/1.099)^(100/45 ;end %scaling components to 8-bits values ;)[R G B] = Scale28bit(R,G,B ﭼﺮا ﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﺨﺘﻠﻒ؟ ﻧﻮر رﻧﮕﯽ ﻗﺎﺑﻞ ﻣﺸﺎهﺪﻩ ،ﺷﺎﻣﻞ رﻧﮓهﺎﯾﯽ اﺳﺖ ﮐﻪ ﺑﺮ روﯼ ﻃﻴﻒ اﻧﺮژﯼ اﻟﮑﺘﺮوﻣﻐﻨﺎﻃﻴﺴﯽ از ۴٠٠ﺗﺎ ٧٠٠ﻧﺎﻧﻮﻣﺘﺮ ﻗﺮار دارﻧﺪ .ﺗﻌﺪاد اﯾﻦ رﻧﮓهﺎ ﺑﺴﻴﺎر زﯾﺎد ﺑﻮدﻩ ،هﻢ از ﻟﺤﺎظ ﮐﺎراﯾﯽ و هﻢ از ﻟﺤﺎظ ﭘﻴﭽﻴﺪﮔﯽ ﺑﻪﮐﺎرﮔﻴﺮﯼ ،ﮐﺎر ﮐﺮدن ﺑﺎ ﻣﺸﺨﺼﻪﯼ ﻃﻮل ﻃﻴﻒ رﻧﮓهﺎ ،ﮐﺎرﯼ اﺳﺖ ﺑﺴﻴﺎر ﻣﺸﮑﻞ .از ﻃﺮﻓﯽ اﯾﻦ ﺗﻌﺮﯾﻒ از رﻧﮓ ،ﺟﻨﺒﻪﯼ ﻓﻴﺰﯾﮑﯽ داﺷﺘﻪ و هﻴﭻ ﺳﻨﺨﻴﺘﯽ ﺑﺎ ﺳﻴﺴﺘﻢ ﺑﻴﻨﺎﯾﯽ و ادراﮎ اﻧﺴﺎن ﻧﺪارد .در ﻧﺘﻴﺠﻪ ﻧﻴﺎز ﭘﻴﺪا ﮐﺮدن ﺑﻪ ﻓﻀﺎﯾﯽ ﭼﻨﺪ ﺑﻌﺪﯼ و ﺗﻌﺮﯾﻒ ﻣﺠﺪد رﻧﮓهﺎ در ﻓﻀﺎﯾﯽ ﺑﺎ اﺑﻌﺎد ﺑﻪ ﻣﺮاﺗﺐ ﮐﻮﭼﮏﺗﺮ و اﺳﺘﻔﺎدﻩ از ﺣﺪاﮐﺜﺮ اﺑﻌﺎد ﻗﺎﺑﻞ درﮎ )ﯾﻬﻨﯽ ٣ﺑﻌﺪ( ،ﻧﻴﺎزﯼ ﺑﺪﯾﻬﯽ ﺑﻮد .اﻟﺒﺘﻪ هﻤﺎنﻃﻮر ﮐﻪ اﺷﺎرﻩ ﺷﺪ ،اﺑﻌﺎدﯼ ﮐﻪ در اﯾﻦ ﻓﻀﺎهﺎ اراﺋﻪ ﻣﯽﺷﻮﻧﺪ ،اﺻﻮﻟﯽ اﺳﺖ ﻧﺸﺎﻧﮕﺮ وﯾﮋﮔﯽهﺎﯾﯽ از رﻧﮓ ﺑﺎﺷﻨﺪ ،ﮐﻪ ﺑﺮاﯼ ﺳﻴﺴﺘﻢ ﺑﻴﻨﺎﯾﯽ اﻧﺴﺎن ﻗﺎﺑﻞ ﻟﻤﺲ ﺑﺎﺷﺪ .اﯾﻦ ﮐﺎر ﭘﺮدازش ﺟﻬﺖدار و ﻣﻔﻬﻮﻣﯽ را ﺑﺮ روﯼ ﺗﺼﺎوﯾﺮ رﻧﮕﯽ اﻣﮑﺎنﭘﺬﯾﺮ ﻣﯽﺳﺎزد. ﺗﻤﺎﻣﯽ ﻓﻀﺎهﺎﯼ رﻧﮕﯽ ﺑﺮاﯼ رﻓﻊ اﯾﻦ ﻧﻴﺎز ﺑﻪوﺟﻮد ﺁﻣﺪﻩاﻧﺪ .ﺗﻔﺎوت ﺁﻧﻬﺎ ﺑﺎ هﻤﺪﯾﮕﺮ ﻧﻴﺰ ،ﻧﺎﺷﯽ از ﺗﻌﺎرﯾﻒ ﻣﺘﻔﺎوﺗﯽ اﺳﺖ ﮐﻪ ﺑﺮاﯼ هﺮ ﮐﺪام از اﺑﻌﺎد و ﻣﺮﮐﺰ اﯾﻦ اﺑﻌﺎد ﻣﺘﻌﺎﻣﺪ ،در هﺮ ﮐﺪام از اﯾﻦ ﻓﻀﺎهﺎ اراﯾﻪ ﺷﺪﻩ اﺳﺖ .ﺑﺴﺘﻪ ﺑﻪ ﻣﺎهﻴﺖ اﺑﻌﺎدﯼ ﮐﻪ در هﺮ ﮐﺪام از ﻓﻀﺎهﺎ اراﯾﻪ ﺷﺪﻩ اﺳﺖ ،ﺁن ﻓﻀﺎ ﺑﺮاﯼ ﮐﺎرﺑﺮدهﺎﯼ ﻣﺸﺨﺼﯽ ﻣﻨﺎﺳﺐ ﮔﺮدﯾﺪﻩ اﺳﺖ .ﻣﺜﻼ در ﯾﮏ ﺳﻴﺴﺘﻢ ﭘﺮدازﺷﯽ ،اﺳﺘﻔﺎدﻩ از ﯾﮏ ﻓﻀﺎﯼ ﺧﻄﯽ ﺣﺘﯽ ﺑﺎ ﭘﻴﭽﻴﺪﮔﯽ زﯾﺎد )ﻣﺜﻼ * ،(L*a*bﺑﺴﻴﺎر ﻣﻄﻠﻮب اﺳﺖ ،در ﺣﺎﻟﻴﮑﻪ در ﯾﮏ ﺳﻴﺴﺘﻢ ﻧﻤﺎﯾﺶ ،CRTﺧﻄﯽ ﺑﻮدن ﯾﺎ ﻧﺒﻮدن ﻓﻀﺎ ﺑﺮاﯼ ﻣﺎ ﻣﻬﻢ ﻧﻴﺴﺖ ،ﺑﻠﮑﻪ ﻣﻬﻢ ،ﺳﻬﻮﻟﺖ ﭘﻴﺎدﻩﺳﺎزﯼ ﺳﺨﺖاﻓﺰارﯼ ﺁن ﻓﻀﺎ و ﭘﻴﭽﻴﺪﮔﯽ هﺮ ﭼﻪ ﮐﻤﺘﺮ ﺁن )ﻣﺜﻼ (RGBاﺳﺖ )ﯾﮏ ﻓﻀﺎﯼ رﻧﮓ در ﺻﻮرﺗﯽ ﺧﻄﯽ اﺳﺖ ﮐﻪ ﺗﻐﻴﻴﺮات در ﯾﮑﯽ از اﺑﻌﺎد ﺁن ،ﻣﺘﻨﺎﻇﺮ ﺑﺎ هﻤﺎن ﻣﻴﺰان ﺗﻐﻴﻴﺮ در ﻣﻔﻬﻮﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﺑﺎ ﺁن ﺑﻌﺪ ﻣﺘﻨﺎﻇﺮ اﺳﺖ(. روشهﺎﯼ ﻣﺨﺘﻠﻒ ﻧﻤﺎﯾﺶ ﻓﻀﺎﯼ رﻧﮓ دو روش ﺑﺮاﯼ ﻣﺸﺨﺺ ﮐﺮن ﯾﮏ رﻧﮓ در ﯾﮏ ﻓﻀﺎ وﺟﻮد دارد .ﯾﮑﯽ اﺳﺘﻔﺎدﻩ از اﺑﻌﺎد )ﻣﺤﺮﮎ( ﭘﺎﯾﻪ ) ،(T1 T2 T3و دﯾﮕﺮﯼ ﺑﺎ اﺳﺘﻔﺎدﻩ از ﮐﺮوﻣﻴﻨﺎﻧﺲ )رﻧﮕﻴﻨﮕﯽ( و ﻟﻮﻣﻴﻨﺎﻧﺲ )درﺧﺸﻨﺪﮔﯽ( ﺁن ) ،(t1 t2 Yﮐﻪ در ﺁن: T2 T1 + T2 + T3 = t2 , T1 T1 + T2 + T3 = t1 ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 4 Advanced Information & Communication Technology Center در اﯾﻦ ﻧﺤﻮﻩﯼ ﻧﻤﺎﯾﺶ ،هﺮ ﻓﻀﺎﯼ رﻧﮓ ﺑﻪ دو ﺑﺨﺶ ﻣﺠﺰاﯼ اﻃﻼﻋﺎت رﻧﮕﯽ و درﺧﺸﻨﺪﮔﯽ ﺗﻘﺴﻴﻢ ﻣﯽﺷﻮد ،ﮐﻪ در ﺁن اﻃﻼﻋﺎت رﻧﮕﯽ ) t1و (t2در ﯾﮏ زﯾﺮ ﻓﻀﺎﯼ دو ﺑﻌﺪﯼ ﻗﺎﺑﻞ ﻧﻤﺎﯾﺶ اﺳﺖ .اﯾﻦ زﯾﺮ ﻓﻀﺎﯼ دوﺑﻌﺪﯼ را ﺑﺮاﯼ xyدر اداﻣﻪ ﺧﻮاهﻴﺪ دﯾﺪ .هﻤﭽﻨﻴﻦ در ﺑﺨﺶهﺎﯼ ﺑﻌﺪﯼ ﺧﻮاهﻴﻢ دﯾﺪ ﮐﻪ اﮐﺜﺮ ﻓﻀﺎهﺎﯾﯽ ﮐﻪ از اﯾﻦ ﺷﻴﻮﻩﯼ ﻧﻤﺎﯾﺶ ﺑﻬﺮﻩ ﻣﯽﮔﻴﺮﻧﺪ ،زﯾﺮﻓﻀﺎﯼ رﻧﮕﻴﻨﮕﯽ ﺁنهﺎ ﺗﻐﻴﻴﺮ ﺧﻄﯽ ﯾﺎﻓﺘﻪﯼ هﻤﻴﻦ زﯾﺮ ﻓﻀﺎﯼ xyﻣﯽﺑﺎﺷﺪ. ﻓﻀﺎﯼ رﻧﮓ XYZ ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :در ﺳﺎل CIE ،١٩٣١اﻗﺪام ﺑﻪ ﻣﻌﺮﻓﯽ ﯾﮏ ﻣﺠﻤﻮﻋﻪ رﻧﮓ ﭘﺎﯾﻪﯼ ﺟﺪﯾﺪ ﺑﺮاﯼ ﺑﺮﻃﺮف ﮐﺮدن ﻣﺸﮑﻼت ﻓﻀﺎﯼ رﻧﮓ RGBﻧﻤﻮد .XYZ :ﻣﺸﮑﻞ ﻓﻀﺎﯼ رﻧﮓ ﻗﺒﻠﯽ در اﯾﻦ ﺑﻮد ﮐﻪ ﺑﺮاﯼ ﻣﺸﺎهﺪﻩﮔﺮهﺎﯼ ﻣﺨﺘﻠﻒ ﻧﻈﻴﺮ اﻧﺴﺎنهﺎ ،ﺳﻨﺴﻮرهﺎ و ...ﺗﻌﺮﯾﻒ واﺣﺪﯼ ﺑﺮاﯼ درﯾﺎﻓﺖ اﻃﻼﻋﺎت رﻧﮕﯽ ﻣﻮﺟﻮد ﻧﺒﻮد. ﯾﻌﻨﯽ در ﻓﻀﺎﯼ ،RGBﻣﺸﺨﺼﺎت رﻧﮕﯽ ﻧﻴﻤﻪﺷﻬﻮدﯼ و واﺑﺴﺘﻪ ﺑﻪ وﺳﺎﯾﻞ اﻧﺪازﻩﮔﻴﺮﯼ اﺳﺖ .در اﯾﻦ ﻓﻀﺎﯼ رﻧﮓ ﭘﺎﯾﻪﯼ ﺟﺪﯾﺪ ،اﺟﺰاﯼ رﻧﮓهﺎﯼ ﭘﺎﯾﻪ رﻧﮓهﺎﯼ واﻗﻌﯽ ﻧﻴﺴﺘﻨﺪ .ﻣﻴﺰان درﺧﺸﻨﺪﮔﯽ رﻧﮓ در اﯾﻦ ﻓﻀﺎ ﺑﺮﺧﻼف ﻓﻀﺎﯼ ﻗﺒﻞ ﻓﻘﻂ ﺑﻪ ﯾﮏ ﭘﺎراﻣﺘﺮ ) (Yﺑﺴﺘﮕﯽ دارد و ﺑﻘﻴﻪﯼ ﭘﺎراﻣﺘﺮهﺎ ،وﯾﮋﮔﯽهﺎﯼ رﻧﮕﯽ را ﭘﻮﺷﺶ ﻣﯽدهﻨﺪ. ﺑﺮاﯼ ورود ﺑﻪ ﻓﻀﺎﯼ XYZاز RGBو ﺑﺎﻟﻌﮑﺲ ﻣﯽﺗﻮان از ﻣﺎﺗﺮﯾﺲهﺎﯼ ﺗﺒﺪﯾﻞ زﯾﺮ ) اﺳﺘﺎﻧﺪارد CIE 1931ﺑﺎ رﻧﮓ ﻣﺮﺟﻊ ﺳﻔﻴﺪ ( D65اﺳﺘﻔﺎدﻩ ﮐﺮد: ⎤ ⎥ ⎥ ⎥⎦ ⎡R ⎤ ⎡ 3.240479 −1.537150 −0.498535⎤ ⎡ X ⎢ ⎥ ⎢ ⎢ ⎥ 0.041556 ⎥ * ⎢Y ⎢G ⎥ = ⎢ −0.969256 1.875992 ⎣⎢B ⎦⎥ ⎢⎣ 0.055648 −0.204043 1.057311 ⎦⎥ ⎣⎢ Z ⎤ ⎤ ⎡ 0.412453 0.357580 0.180423⎤ ⎡R ⎢ ⎥ ⎥ ⎢ ⎥ ⎥ ⎥ = ⎢ 0.212671 0.715160 0.072169 ⎥ * ⎢G ⎥⎦ ⎦⎥ ⎢⎣0.019334 0.119193 0.950227 ⎦⎥ ⎢⎣B ⎡X ⎢ ⎢Y ⎣⎢ Z ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ RGBﺑﻪ ﻓﻀﺎﯼ XYZو ﺑﺎﻟﻌﮑﺲ ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :در ﺗﺒﺪﯾﻞ ﻣﺴﺘﻘﻴﻢ ) ﯾﻌﻨﯽ ﺣﺮﮐﺖ از RGBﺑﻪ ،( XYZاﮔﺮ ﻣﻘﺎدﯾﺮ G ،Rو Bدر ﺑﺎزﻩﯼ ] [0, 255ﺑﺎﺷﻨﺪ Y ،X ،و Zﺑﻪ ﺗﺮﺗﻴﺐ در ﺑﺎزﻩهﺎﯼ ] [0,255] ،[0, 243و ] [0,278واﻗﻊ ﺧﻮاهﻨﺪ ﺷﺪ و ﺑﺮاﯼ ﻧﻤﺎﯾﺶ ٨ﺑﻴﺘﯽ ﻣﯽﺑﺎﯾﺴﺘﯽ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس دادﻩ ﺷﻮﻧﺪ .ﺑﺮاﯼ اﻧﺠﺎم ﺗﺒﺪﯾﻞ ﻣﻌﮑﻮس ﻧﻴﺰ اﺑﺘﺪا ﺑﺎﯾﺪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ XYZﺑﻪ ﺑﺎزﻩهﺎﯼ ] [0,255] ،[0, 243و ] [0,278ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس دادﻩ ﺷﺪﻩ و ﺳﭙﺲ ﺿﺮب ﻣﺎﺗﺮﯾﺲهﺎ اﻧﺠﺎم ﺷﻮد .ﮐﻪ در اﯾﻦ ﺻﻮرت ﻣﻘﺎدﯾﺮ ﺑﺪﺳﺖ ﺁﻣﺪﻩ ٨ ،ﺑﻴﺘﯽ ﺧﻮاهﻨﺪ ﺑﻮد. )[x y z] = rgb2xyz (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBرا ﮔﺮﻓﺘﻪ و ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ XYZرا در ﺧﺮوﺟﯽ ﺗﻮﻟﻴﺪ ﻣﯽﮐﻨﺪ. %RGB to XYZ conversion matrix [=rgb2xryrzrMatrix 0.412453 0.357580 0.180423 0.212671 0.715160 0.072169 ;]0.019334 0.119193 0.950227 ;']xryrzr = rgb2xryrzrMatrix * [r g b %scaling components to 8-bits values ;)[x y z] = Scale28bit(xryrzr(1),xryrzr(2),xryrzr(3), 0,243 ,0,255 ,0,278 )[r g b] = xyz2rgb (x, y, z ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ XYZرا ﮔﺮﻓﺘﻪ و ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBرا در ﺧﺮوﺟﯽ ﺗﻮﻟﻴﺪ ﻣﯽﮐﻨﺪ. % scaling components to origin ranges. ;)x = MyScale(x, 0,255, 0,243 ;)y = MyScale(y, 0,255, 0,255 ;)z = MyScale(z, 0,255, 0,278 %XYZ to RGB coversion matrix ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 5 Advanced Information & Communication Technology Center [=xyz2rrgrbrMatrix -0.498535 0.041556 ;]1.057311 -1.537150 1.875992 -0.204043 3.240479 -0.969256 0.055648 ;']rgb = xyz2rrgrbrMatrix * [x y z %scaling components to 8-bits values ;))r=uint8(rgb(1 ;))g=uint8(rgb(2 ;))b=uint8(rgb(3 ﭼﻨﺪ ﻧﮑﺘﻪ در ﻣﻮرد ﺗﺒﺪﯾﻼت ﻓﻮق :ﺑﺮاﯼ ﺗﺒﺪﯾﻼت ﻓﻮق ﻣﺎﺗﺮﯾﺲهﺎﯼ ﺗﺒﺪﯾﻞ ﺑﺴﻴﺎر زﯾﺎدﯼ اراﺋﻪ ﺷﺪﻩاﻧﺪ ،ﮐﻪ هﺮ ﮐﺪام ﻧﻴﺰ ﻧﺴﺒﺖ ﺑﻪ ﯾﮏ رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ اﻧﺠﺎم ﻣﯽﮔﻴﺮﻧﺪ .در اﯾﻦ ﻣﻮرد ﻣﺎ از اﺳﺘﺎﻧﺪارد CIE 1931و رﻧﮓ ﻣﺮﺟﻊ اﺳﺘﺎﻧﺪارد D65اﺳﺘﻔﺎدﻩ ﮐﺮدﻩاﯾﻢ .ﻧﺘﻴﺠﻪﯼ ﺗﻘﺴﻴﻢ ﺣﺎﺻﻠﻀﺮب ﻣﺎﺗﺮﯾﺲ ورودﯼ در ﻣﺎﺗﺮﯾﺲ ﺗﺒﺪﯾﻞ ﺑﺮ رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻌﻤﺎن هﻤﺎن ﻧﺘﻴﺠﻪﯼ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس را ﺧﻮاهﺪ داد .در واﻗﻊ اﮔﺮ ﻣﺨﺘﺼﺎت رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ ) (X0,Y0,Z0ﺑﺎﺷﺪ ،ﻧﺘﺎﯾﺞ X Y Z ﺗﺒﺪﯾﻠﯽ ﮐﻪ در ﭘﻴﺎدﻩﺳﺎزﯼ ﻓﻮق اراﺋﻪ دادﻩاﯾﻢ, , ) ، X 0 Y0 Z 0 ( ﯾﺎ هﻤﺎن ﻣﻘﺎدﯾﺮ دﯾﺠﻴﺘﺎل ﺷﺪﻩﯼ ) (X,Y,Zﻣﯽﺑﺎﺷﻨﺪ .ﻣﺨﺘﺼﺎت رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ در اﯾﻦ اﺳﺘﺎﻧﺪارد ،در ﺑﺎزﻩﯼ ] [0, 1ﻋﺒﺎرﺗﻨﺪ از: )D65 Whitepoint: (X0,Y0,Z0) = (0.9504, 1, 1.0889 ﻓﻀﺎﯼ رﻧﮓ xyzﯾﺎ xyY ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻓﻀﺎ از ﻓﻀﺎﯼ XYZﻣﺸﺘﻖ ﺷﺪﻩ اﺳﺖ و ﻧﻤﺎﯾﺶ ﮐﺮوﻣﺎ- ﻟﻮﻣﺎﯼ ﺁن ﻣﯽﺑﺎﺷﺪ .از ﺁﻧﺠﺎﯾﯽ ﮐﻪ ،x+y+z =1در ﻧﺘﻴﺠﻪ ﺑﺎ داﺷﺘﻦ دو ﻣﻘﺪار x و yﻣﻘﺪار zﻧﻴﺰ ﺑﺮاﺣﺘﯽ ﺑﺪﺳﺖ ﻣﯽﺁﯾﺪ ،ﻟﺬا اﯾﻦ ﻓﻀﺎ را ﺑﺎ xyYﻧﻴﺰ ﻧﻤﺎﯾﺶ ﻣﯽدهﻨﺪ .اﺳﺘﻔﺎدﻩ از اﯾﻦ ﻓﻀﺎ در ﻣﻮاردﯼ ﻣﻔﻴﺪ اﺳﺖ ﮐﻪ ﺑﺨﻮاهﻴﻢ ﺑﻪ ﯾﮏ ﻓﻀﺎﯼ دوﺑﻌﺪﯼ ﻣﺴﺘﻘﻞ از ﺷﺪت ﻧﻮر ﺑﺮوﯾﻢ Y .در اﯾﻦ ﻣﺪل ﻟﻮﻣﻴﻨﺎﻧﺲ و xو yﮐﺮوﻣﺎ هﺴﺘﻨﺪ .در ﻧﺘﻴﺠﻪ دو ﻣﻘﺪار رﻧﮓ ﮐﻪ ﻓﻘﻂ در ﺷﺪت ﻧﻮر ﻣﺘﻔﺎوت هﺴﺘﻨﺪ ،در ﻓﻀﺎﯼ xyداراﯼ ﻣﻘﺎدﯾﺮ ﯾﮑﺴﺎﻧﯽ ﻣﯽﺑﺎﺷﻨﺪ .ﺑﺮاﯼ رﻓﺘﻦ ﺑﻪ اﯾﻦ ﻓﻀﺎ ،ﮐﺎﻓﯽ اﺳﺖ از ﻧﻤﺎﯾﺶ دوم ﻓﻀﺎﯼ XYZﮐﻪ در ﺑﺎﻻ ﺗﻮﺿﻴﺢ دادﻩ ﺷﺪ اﺳﺘﻔﺎدﻩ ﮐﻨﻴﻢ .زﯾﺮ ﻓﻀﺎﯼ ﮐﺮوﻣﻴﻨﺎﻧﺲ در ﺷﮑﻞ روﺑﺮو ﻧﻤﺎﯾﺶ دادﻩ ﺷﺪﻩ اﺳﺖ .ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق ﻧﻴﺰ ،اﮔﺮ ﻣﻘﺎدﯾﺮ xyYو XYZدر ﺑﺎزﻩﯼ ] [0, 1ﺑﺎﺷﻨﺪ ،ﺑﺼﻮرت زﯾﺮ ﻋﻤﻞ ﻣﯽﮐﻨﻴﻢ: xY zY (1 − (x + y)) Y =, Y=Y , Z = y y y =X ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :در ﺗﺒﺪﯾﻞ XYZﺑﻪ ،xyYاﮔﺮ X+Y+Zﺑﺮاﺑﺮ ﺻﻔﺮ ﺷﻮد، ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ ﭘﻴﺶ ﻣﯽﺁﯾﺪ .در اﯾﻦ ﺣﺎﻟﺖ xو yرا ﻣﯽﺗﻮان ﻣﯽﺗﻮان ﻣﺨﺘﺼﺎت زﯾﺮﻓﻀﺎﯼ ﮐﺮوﻣﻴﻨﺎﻧﺲ xz رﻧﮕﻴﻨﮕﯽ ﺳﻔﻴﺪ ﻣﺮﺟﻊ در ﻧﻈﺮ ﮔﺮﻓﺖ ،ﯾﻌﻨﯽ.(x,y) = (0,0) : در ﺗﺒﺪﯾﻞ ﻣﻌﮑﻮس هﻢ اﮔﺮ y=0ﺑﺎﺷﺪ ،(X,Y,Z) = (0,0,0) ،در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﯽﺷﻮد. ﻧﺎم ﺗﺎﺑﻊ: )[x y l] = xyz2xyl (x, y, z ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ XYZرا ﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺑﻪ ﯾﮏ ﭘﻴﮑﺴﻞ xyYﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ .ﺗﻮﺟﻪ داﺷﺘﻪ ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 6 Advanced Information & Communication Technology Center ﺑﺎﺷﻴﺪ ﮐﻪ Yرا ﮐﻪ ﻧﺸﺎﻧﮕﺮ ﻟﻮﻣﻴﻨﺎﻧﺲ ﻣﯽﺑﺎﺷﺪ ،ﺑﺎ Lﮐﻮﭼﮏ ﻧﺸﺎن دادﻩاﯾﻢ. ;l = y ;sum = x+y+z )if (sum == 0 %Preventing devide by zero ;x = 0 ;y = 0 else ;x = x/sum ;y = y/sum ;end %scaling components to 8-bits values ;)x = uint8(x*255 ;)y = uint8(y*255 ﻧﺎم ﺗﺎﺑﻊ: )[x y z] = xyl2xyz (x, y, l ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ xyYرا ﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺑﻪ ﯾﮏ ﭘﻴﮑﺴﻞ XYZﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ .ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ Yرا ﮐﻪ ﻧﺸﺎﻧﮕﺮ ﻟﻮﻣﻴﻨﺎﻧﺲ ﻣﯽﺑﺎﺷﺪ ،در ﻓﻀﺎﯼ xyYﺑﺎ Lﮐﻮﭼﮏ ﻧﺸﺎن دادﻩاﯾﻢ. ]%scaling components to [0,1 ;x = double(x)/255 ;y = double(y)/255 ;l = double(l)/255 ;)z = 1-(x+y )if (y == 0 % preventing devide by zero. ;x = 0 ;y = 0 ;z = 0 else ;x = (x/y) * l ;z = (z/y) * l ;y = l ;end %scaling components to 8-bits values ;)x = uint8(x*255 ;)y = uint8(y*255 ;)z = uint8(z*255 ﻓﻀﺎﯼ رﻧﮓ CMY ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻣﺪل ﺑﺮ ﭘﺎﯾﻪﯼ رﻧﮓهﺎﯼ ﻓﻴﺮوزﻩاﯼ ) ، (Cyanﺑﻨﻔﺶ ) (Magentaو زرد ) (Yellowﻣﯽﺑﺎﺷﺪ .ﺑﺴﻴﺎري از وﺳﺎﻳﻞ ﻣﺎﻧﻨﺪ ﭘﺮﻳﻨﺘﺮهﺎي رﻧﮕﻲ و دﺳﺘﮕﺎﻩ هﺎي ﮐﭙﻲ ﮐﻨﻨﺪﻩ ﮐﻪ ذرات رﻧﮕﻲ را ﺑﺮ روي ﮐﺎﻏﺬهﺎ ﻣﻲ ﻧﺸﺎﻧﻨﺪ ،ﺑﺮاي ﮐﺎر ﺧﻮد ﻧﻴﺎز ﺑﻪ اﻃﻼﻋﺎت ورودي CMYدارﻧﺪ .هﻤﭽﻨﻴﻦ اﻳﻦ دﺳﺘﮕﺎﻩهﺎ ﻗﺎدرﻧﺪ ﺗﺒﺪﻳﻞ اﻃﻼﻋﺎت در ﺳﻴﺴﺘﻢ CMYﺑﻪ اﻃﻼﻋﺎت در ﺳﻴﺴﺘﻢ RGBرا ﺑﻪ ﺻﻮرت دروﻧﻲ اﻧﺠﺎم دهﻨﺪ .اﻳﻦ ﺗﺒﺪﻳﻞ ﺗﻮﺳﻂ راﺑﻄﻪﯼ ﺳﺎدﻩﯼ زﻳﺮ اﻧﺠﺎم ﻣﻲ ﺷﻮد: ⎤ ⎡ C ⎤ ⎡1⎤ ⎡R ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢M⎥ = ⎢1⎥ − ⎢ G ⎦⎥ ⎢⎣ Y ⎥⎦ ⎢⎣1⎥⎦ ⎢⎣ B ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 7 Advanced Information & Communication Technology Center )[c m y] = rgb2cmy (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ ﺑﺎ ﻣﻘﺪار ٨ﺑﻴﺘﯽ RGBرا ﺑﻪ ﻓﻀﺎﯼ CMYﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﻣﯽﺑﺮد. ;]cmy = 255 - [r g b ;)c = cmy(1 ;)m = cmy(2 ;)y = cmy(3 )[r g b] = cmy2rgb (c, m, y ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ ﺑﺎ ﻣﻘﺪار ٨ﺑﻴﺘﯽ CMYرا ﺑﻪ ﻓﻀﺎﯼ RGBﺑﺎ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺑﺮ ﻣﯽﮔﺮداﻧﺪ. ;]rgb = 255 - [c m y ;)r = rgb(1 ;)g = rgb(2 ;)b = rgb(3 ﻓﻀﺎﯼ رﻧﮓ CMYK ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻓﻀﺎﯼ رﻧﮓ هﻤﺎن ﻓﻀﺎﯼ رﻧﮓ CMYﻣﯽﺑﺎﺷﺪ ﮐﻪ ﺟﺰء ،Kﯾﻌﻨﯽ رﻧﮓ ﺳﻴﺎﻩ ﺑﻪ ﺁن اﺿﺎﻓﻪ ﺷﺪﻩ اﺳﺖ .از ﺁنﺟﺎﯾﯽ ﮐﻪ در ﭼﺎﭘﮕﺮهﺎ و ﺳﺎﯾﺮ وﺳﺎﯾﻠﯽ ﮐﻪ از ﭘﻮدرهﺎ و ذرات رﻧﮕﯽ اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻨﺪ ،هﺰﯾﻨﻪﯼ ﺗﻮﻟﻴﺪ رﻧﮓ ﺳﻴﺎﻩ ﮐﻪ ﻣﯽﺗﻮاﻧﺪ ﻣﺴﺘﻘﻴﻤﺎ از دودﻩ ﺗﻮﻟﻴﺪ ﺷﻮد ،از ﺳﻪ ﺟﺰء رﻧﮕﯽ دﯾﮕﺮ ،ﺑﺴﻴﺎر هﺰﯾﻨﻪﺑﺮ ﻣﯽﺑﺎﺷﺪ ،ﺗﻮﻟﻴﺪ اﯾﻦ ﻓﻀﺎﯼ رﻧﮕﯽ ﺟﺪﯾﺪ ﺑﺮاﯼ ﻣﻘﺎدﯾﺮ ﺳﻄﻮح ﺧﺎﮐﺴﺘﺮﯼ ﻣﻨﻄﻘﯽ ﺑﻪ ﻧﻈﺮ ﻣﯽرﺳﺪ. )K = min(C,M, Y )C = (C − K) /(1 − K )M = (M − K) /(1 − K )Y = (Y − K) /(1 − K )C = min(1, C(1 − K) + K )M = min(1,M(1 − K) + K )Y = min(1, Y(1 − K) + K ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ CMYﺑﻪ ﻓﻀﺎﯼ CMYKو ﺑﺎﻟﻌﮑﺲ ﻧﺎم ﺗﺎﺑﻊ: )[c m y k] = cmy2cmyk (c, m, y ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ ﺑﺎ ﻣﻘﺪار ٨ﺑﻴﺘﯽ CMYرا ﺑﻪ ﭘﻴﮑﺴﻞ ٨ﺑﻴﺘﯽ CMYKﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ K .ﻣﻘﺪار رﻧﮓ ﺧﺎﮐﺴﺘﺮﯼ ﺧﺎﻟﺺ ﺑﻪﮐﺎر رﻓﺘﻪ در رﻧﮓ ﻣﯽﺑﺎﺷﺪ ،ﮐﻪ اﺳﺘﺨﺮاج ﺷﺪﻩ و ﻣﻘﺪار ﺁن از ﻣﻘﺎدﯾﺮ M ،Cو Yﮐﺴﺮ ﺷﺪﻩاﻧﺪ. ]% scaling components to [0,1 ;cn = double(c)/255 ;mc = double(m)/255 ;yn = double(y)/255 ;)]k = min([cn mn yn ;)c = (cn-k)/(1-k ;)m = (mn-k)/(1-k ;)y = (yn-k)/(1-k %scaling components to 8-bits values ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 8 Advanced Information & Communication Technology Center ;)cmyk = uint8([c m y k]*255 ;)c = cmyk(1 ;)m = cmyk(2 ;)y = cmyk(3 ;)k = cmyk(4 )[c m y] = cmyk2cmy (c, m, y, k ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ ﭘﻴﮑﺴﻞ ﺑﺎ ﻣﻘﺪار ٨ﺑﻴﺘﯽ CMYKرا ﺑﻪ ﭘﻴﮑﺴﻞ ٨ﺑﻴﺘﯽ CMYﺑﺮ ﻣﯽﮔﺮداﻧﺪ. ]%scaling components to [0,1 ;cmykn = [c m y k]/255 ;))c = min (1, cmykn(1)*(1-cmykn(4))+cmykn(4 ;))m = min (1, cmykn(2)*(1-cmykn(4))+cmykn(4 ;))y = min (1, cmykn(3)*(1-cmykn(4))+cmykn(4 %scaling components to 8-bits values ;)[c m y] = Scale28bit(c,m,y ﻓﻀﺎهﺎﯼ رﻧﮓ اﻧﺘﻘﺎل ﺗﻠﻮﯾﺰﯾﻮﻧﯽ YIQو YUVاﺳﺘﺎﻧﺪارد ﺗﻠﻮﯾﺰﯾﻮنهﺎﯼ ﺁﻧﺎﻟﻮگ و YCbCrاﺳﺘﺎﻧﺪارد ﺗﻠﻮﯾﺰﯾﻮن دﯾﺠﻴﺘﺎل ﻣﯽﺑﺎﺷﻨﺪ .در اﯾﻦ ﻓﻀﺎهﺎ اﻃﻼﻋﺎت رﻧﮕﯽ ﺑﻪ دو ﺟﺰء ﻟﻮﻣﻴﻨﺎﻧﺲ و ﮐﺮوﻣﻴﻨﺎﻧﺲ ﺗﺒﺪﯾﻞ ﻣﯽﺷﻮﻧﺪ ،در ﻧﺘﻴﺠﻪ اﻣﮑﺎن ﺧﻮﺑﯽ ﺑﺮاﯼ ﺗﻄﺎﺑﻖ ﺑﺎ ﺗﻠﻮﯾﺰﯾﻮنهﺎﯼ ﺳﻴﺎﻩ و ﺳﻔﻴﺪ و هﻤﭽﻨﻴﻦ ﮐﺎرﺑﺮدهﺎﯼ ﻓﺸﺮدﻩﺳﺎزﯼ در اﺧﺘﻴﺎر ﻗﺮار ﻣﯽدهﻨﺪ .ﻓﻀﺎﯼ رﻧﮓ YCCﻧﻴﺰ ﮐﻪ از هﻤﻴﻦ ﺧﺎﻧﻮادﻩ ﻣﯽﺑﺎﺷﺪ ،ﺗﻮﺳﻂ ﺷﺮﮐﺖ ﮐﺪاﮎ ﻣﻮرد اﺳﺘﻔﺎدﻩ ﻗﺮار ﻣﯽﮔﻴﺮد YUV .اﺳﺘﺎﻧﺪارد ﺳﻴﺴﺘﻢهﺎﯼ NTSCو YIQاﺳﺘﺎﻧﺪارد ﺳﻴﺴﺘﻢهﺎﯼ PALﻣﯽﺑﺎﺷﺪ. ﻓﻀﺎهﺎﯾﯽ رﻧﮕﻲ YIQو YUV ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻓﻀﺎهﺎ ﺑﺎ ﺗﻐﻴﻴﺮات ﮐﻮﭼﮑﻲ از روي ﻣﺪل ' R'G'Bﺑﺪﺳﺖ ﺁﻣﺪﻩ اﺳﺖ .اﻳﻦ ﺗﻐﻴﻴﺮات ﺑﺮاي ﺁن اﺳﺖ ﮐﻪ ﻣﺪل ﺟﺪﻳﺪ ﺑﺮاي اﻧﺘﻘﺎل ،ﻧﺴﺒﺖ ﺑﻪ ﻣﺪل RGBﮐﺎرﺁﻣﺪﺗﺮ ﺷﻮد و هﻤﻴﻦ ﻃﻮر ﺑﺎ ﺳﻴﺴﺘﻢ ﺗﻠﻮﻳﺰﻳﻮن هﺎي ﺳﻴﺎﻩ و ﺳﻔﻴﺪ ،ﺳﺎزﮔﺎر ﮔﺮدد .در ﺣﻘﻴﻘﺖ ﺟﺰء Yاز اﯾﻦ ﻓﻀﺎهﺎ اﻃﻼﻋﺎت وﻳﺪﻳﻮﻳﻲ ﻣﻮرد ﻧﻴﺎز ﻳﮏ ﺳﻴﺴﺘﻢ ﺗﻠﻮﻳﺰﻳﻮن ﺳﻴﺎﻩ و ﺳﻔﻴﺪ را ﺑﻄﻮر ﮐﺎﻣﻞ ﺗﺎﻣﻴﻦ ﻣﻲ ﮐﻨﺪ .ﺑﺮاي ﺗﺒﺪﻳﻞ ﻓﻀﺎﯼ RGBﺑﻪ ﻓﻀﺎهﺎﯼ YIQو YUVو ﺑﺎﻟﻌﮑﺲ از رواﺑﻂ زﻳﺮ اﺳﺘﻔﺎدﻩ ﻣﻲﺷﻮد: ⎤ 0.6199 ⎤ ⎡Y ⎡R ' ⎤ ⎡1 0.9557 ⎢ ⎥ ⎢ ⎥ ⎢⎥ ' 1 0.2716 ⎥ 0.6469 ⎥ ⎢ I = − − G ⎢ ⎥ ⎢ ⎦⎥ ⎢⎣B ' ⎥⎦ ⎢⎣1 −1.1082 1.7051 ⎥⎦ ⎢⎣Q ⎤' ⎥ ⎥' ⎦⎥ ' ⎡Y ⎤ ⎡0.299 0.587 0.114 ⎤ ⎡R ⎢ ⎥ ⎢ ⎢⎥ ⎢ I ⎥ = ⎢0.596 −0.275 −0.321⎥ ⎢G ⎢⎣Q ⎥⎦ ⎢⎣0.212 −0.523 0.311 ⎥⎦ ⎢⎣B ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ RGBﺑﻪ ﻓﻀﺎﯼ ) YIQﺳﻴﺴﺘﻢ (PALو ﺑﺎﻟﻌﮑﺲ 0 ⎤ 1.1398⎤ ⎡Y ⎥ ⎢⎥ ⎥ −0.3946 −0.5805⎥ ⎢U ⎥⎦ 2.0320 −0.0005⎦⎥ ⎣⎢V ⎡R ' ⎤ ⎡1 ⎢ ⎥ ⎢ ⎢G '⎥ = ⎢1 ⎣⎢B ' ⎦⎥ ⎢⎣1 ⎤ ' ⎡Y ⎤ ⎡ 0.299 0.587 0.114 ⎤ ⎡R ⎢ ⎥ ⎢ ⎥ ⎢⎥ ⎥' ⎢U ⎥ = ⎢ −0.147 −0.289 0.436 ⎥ ⎢G ⎥⎦ ' ⎣⎢V ⎦⎥ ⎢⎣ 0.615 −0.515 −0.100 ⎦⎥ ⎣⎢B ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ RGBﺑﻪ ﻓﻀﺎﯼ ) YUVﺳﻴﺴﺘﻢ (NTSCو ﺑﺎﻟﻌﮑﺲ ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ: ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 9 Advanced Information & Communication Technology Center )U = 0.492 (B'-Y) , V = 0.877(R'-Y و Q = V sin 33 + U cos 33 I = V cos 33 – U sin 33 , ﺣﺴﺎﺳﻴﺖ ﺳﻴﺴﺘﻢ ﺑﻴﻨﺎﻳﻲ اﻧﺴﺎن ﺑﻪ ﺗﻐﻴﻴﺮات روﺷﻨﺎﻳﻲ ﺑﻴﺸﺘﺮ از ﺣﺴﺎﺳﻴﺖ ﺁن ﺑﻪ ﺗﻪرﻧﮓ 8 و اﺷﺒﺎع 9 اﺳﺖ و ﻓﻀﺎهﺎﯼ YIQو YUVﺑﻪﮔﻮﻧﻪاي ﻃﺮاﺣﻲ ﺷﺪﻩاﻧﺪ ﮐﻪ از اﻳﻦ ﺧﺎﺻﻴﺖ اﺳﺘﻔﺎدﻩ ﮐﻨﻨﺪ .ﺑﻪ هﻤﻴﻦ دﻟﻴﻞ در اﺳﺘﺎﻧﺪاردهﺎي ﻣﻨﻄﺒﻖ ﺑﺮ اﯾﻦ ﻓﻀﺎهﺎ ،ﺑﻴﺸﺘﺮ ﭘﻬﻨﺎي ﺑﺎﻧﺪ ) ﺗﻌﺪاد ﺑﻴﺖ در رﻧﮓ دﻳﺠﻴﺘﺎل ( در دﺳﺘﺮس را ،ﺑﻪ ﭘﺎراﻣﺘﺮ Yاﺧﺘﺼﺎص ﻣﻲدهﻨﺪ و ﭘﻬﻨﺎي ﺑﺎﻧﺪ ﮐﻤﺘﺮي را ﺑﺮاي اﺟﺰاﯼ ﮐﺮوﻣﻴﻨﺎﻧﺲ ﻧﮕﻪ ﻣﻲدارﻧﺪ. ﻣﺰﻳﺖ ﻋﻤﺪﻩ دﻳﮕﺮي ﮐﻪ اﯾﻦ ﻓﻀﺎهﺎ ﻧﺴﺒﺖ ﺑﻪ ﻣﺪل RGBدارﻧﺪ ﺁن اﺳﺖ ﮐﻪ ﭘﺎراﻣﺘﺮ ﻣﺸﺨﺺ ﮐﻨﻨﺪﻩ روﺷﻨﺎﻳﻲ Yاز دو ﭘﺎراﻣﺘﺮ ﻣﺸﺨﺺ ﮐﻨﻨﺪﻩ رﻧﮓ ﺟﺪا اﺳﺖ. ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺁن ﮐﻪ ﻣﺘﻐﻴﺮ روﺷﻨﺎﻳﻲ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﻣﻘﺪار ﻧﻮري اﺳﺖ ﮐﻪ ﭼﺸﻢ ﺑﻴﻨﻨﺪﻩ درﻳﺎﻓﺖ ﻣﻲ ﮐﻨﺪ ،ﺑﺎ اﺳﺘﻔﺎدﻩ از اﻳﻦ ﺧﺎﺻﻴﺖ ﻣﻲ ﺗﻮان روﺷﻨﺎﻳﻲ ﻳﮏ ﺗﺼﻮﻳﺮ را ﺗﻐﻴﻴﺮ داد ﺑﺪون ﺁﻧﮑﻪ در ﺗﺮﮐﻴﺐ رﻧﮓ ﺁن ﺗﻐﻴﻴﺮي اﻳﺠﺎد ﺷﻮد .ﺑﺮاي ﻣﺜﺎل ﻣﻲ ﺗﻮان ﺗﮑﻨﻴﮏ ﻳﮑﺴﺎن ﺳﺎزي هﻴﺴﺘﻮﮔﺮام 10 را ﺗﻨﻬﺎ در ﻣﻮرد ﭘﺎراﻣﺘﺮ Yاز ﺗﺼﻮﻳﺮي ﺑﺎ ﻓﺮﻣﺖ YIQﯾﺎ YUVاﻋﻤﺎل ﮐﺮد .در اﻳﻦ ﺣﺎﻟﺖ رﻧﮓ ﺗﺼﻮﻳﺮ ﺗﻐﻴﻴﺮي ﻧﺨﻮاهﺪ ﮐﺮد. ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :ﺑﺎ ﺗﺒﺪﯾﻼت ﻓﻮق ،ﺑﺮاﯼ ﻓﻀﺎﯼ YIQاﮔﺮ از ' R'G'Bاﺳﺘﺎﻧﺪارد اﺳﺘﻔﺎدﻩ ﺷﻮد ﮐﻪ ﻣﻘﺎدﯾﺮ ﻣﻮﻟﻔﻪهﺎﯼ ﺁن ﺑﻴﻦ ٠و ٢۵۵ﺑﺎﺷﻨﺪ ،ﻣﻘﺎدﯾﺮ Y ﺑﻴﻦ ٠و ،I ،٢۵۵ﺑﻴﻦ -١۵٢و ١۵٢+وﻣﻘﺎدﯾﺮ Qﺑﻴﻦ -١٣۴و +١٣۴ﺧﻮاهﻨﺪ ﺑﻮد ،ﮐﻪ ﺑﺮاﯼ اﺳﺘﻔﺎدﻩﯼ دﯾﺠﻴﺘﺎل ﺑﺎﯾﺪ ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﭘﻴﺪا ﮐﻨﻨﺪ .ﺑﺮاﯼ ﻋﮑﺲ اﺳﻦ ﺗﺒﺪﯾﻞ ﻧﻴﺰ اﺑﺘﺪا ﺑﺎﯾﺪ ﻣﻘﺎدﯾﺮ دﯾﺠﻴﺘﺎل ﺷﺪﻩ ﺑﻪ هﻤﻴﻦ ﺑﺎزﻩهﺎ ﺑﺎز ﮔﺮداﻧﺪﻩ ﺷﺪﻩ و ﺗﺒﺪﯾﻞ ﻣﻌﮑﻮس ﺑﺮ روﯼ ﺁن ﺻﻮرت ﭘﺬﯾﺮد .ﮐﻪ ﻧﺘﺎﯾﺞ ﮐﺎر ،دﯾﺠﺘﺎﯾﺰ ﺷﺪﻩ هﺴﺘﻨﺪ. هﭽﻨﻴﻦ ﺑﺮاﯼ ﻓﻀﺎﯼ YUVاﮔﺮ از ' R'G'Bاﺳﺘﺎﻧﺪارد اﺳﺘﻔﺎدﻩ ﺷﻮد ﮐﻪ ﻣﻘﺎدﯾﺮ ﻣﻮﻟﻔﻪهﺎﯼ ﺁن ﺑﻴﻦ ٠و ٢۵۵ﺑﺎﺷﻨﺪ ،ﻣﻘﺎدﯾﺮ Yﺑﻴﻦ ٠و ،U ،٢۵۵ﺑﻴﻦ -١١٢و +١١٢و ﻣﻘﺎدﯾﺮ Vﺑﻴﻦ -١۵٧و +١۵٧ﺧﻮاهﻨﺪ ﺑﻮد .ﺳﺎﯾﺮ ﮔﻔﺘﻪهﺎﯼ ﻓﻮق در اﯾﻦ ﻣﻮرد ﻧﻴﺰ ﺻﺎدق ﻣﯽﺑﺎﺷﻨﺪ. )[y i q] = rgb2yiq (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ YIQﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. '%Convert RGB to R'G'B ;)[rp gp bp] = GammaCorrectRGB(r,g,b %R'G'B' to YIQ conversion matrix [=rpgpbp2yrirqrMatrix 0.299 0.587 0.114 0.596 -0.275 -0.321 ;]0.212 -0.523 0.311 ;)']yrirqr = rpgpbp2yrirqrMatrix * double([rp gp bp %scaling components to 8-bits values ;)[y i q] = Scale28bit(yrirqr(1),yrirqr(2),yrirqr(3),0,255,-152,152,-134,134 )[r g b] = yiq2rgb (y, i, q ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ YIQرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. % scaling components to origin ranges. ;)y = MyScale(y, 0,255, 0,255 ;)i = MyScale(i, 0,255, -152,152 ;)q = MyScale(q, 0,255, -134,134 %YIQ to R'G'B' ConversionMatrix [=yiq2rpgpbpMatrix - hue -saturation - histogram equalization 8 9 10 ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 10 Advanced Information & Communication Technology Center 1 0.9557 1 -0.2716 1 -1.1082 0.6199 -0.6469 1.7051]; rpgpbp = yiq2rpgpbpMatrix * [y i q]'; %Converting R'G'B' to RGB - RGB Components will be in [0,255] [r g b] = ReverseGammaCorrectRGB(rpgpbp(1),rpgpbp(2),rpgpbp(3)); [y u v] = rgb2yuv (r, g, b) :ﻧﺎم ﺗﺎﺑﻊ . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪYUV ﺑﻴﺘﯽ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮRGB ﺑﻴﺘﯽ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ :ﺗﻮﺻﻴﻒ %Convert RGB to R'G'B' [rp gp bp] = GammaCorrectRGB(r,g,b); %R'G'B' to YUV conversion matrix rpgpbp2yrurvrMatrix=[ 0.299 0.587 0.114 -0.147 -0.289 0.436 0.615 -0.515 -0.1]; yrurvr = rpgpbp2yrurvrMatrix * double([rp gp bp]'); %scaling components to 8-bits values [y u v] = Scale28bit(yrurvr(1),yrurvr(2),yrurvr(3),0,255,-112,112,-157,157); [r g b] = yuv2rgb (y, u, v) :ﻧﺎم ﺗﺎﺑﻊ . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪRGB ﺑﻴﺘﯽ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮYUV ﺑﻴﺘﯽ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ :ﺗﻮﺻﻴﻒ % scaling components to origin ranges. y = MyScale(y, 0,255, 0,255); u = MyScale(u, 0,255, -112,112); v = MyScale(v, 0,255, -157,157); %YUV to R'G'B' ConversionMatrix yuv2rpgpbpMatrix=[ 1 0 1.1398 1 -0.3946 -0.5805 1 2.0320 -0.0005]; rpgpbp = yuv2rpgpbpMatrix * [y u v]'; %Converting R'G'B' to RGB - RGB Components will be in [0,255] [r g b] = ReverseGammaCorrectRGB(rpgpbp(1),rpgpbp(2),rpgpbp(3)); YU'V' ﻓﻀﺎﯼ در. ﮐﺮوﻣﺎ ﺑﻮدﻧﺪ ﮐﻪ در ﺁنهﺎ ﮐﺮوﻣﺎ ﺑﻪ دو ﺷﻴﻮﻩﯼ ﻣﺨﺘﻠﻒ ﻧﻤﺎﯾﺶ دادﻩ ﺷﺪﻩ اﺳﺖ- هﺮ دو ﺑﻴﺎﻧﮕﺮ ﻓﻀﺎهﺎﯾﯽ ﻟﻮﻣﺎYUV وxyY ﻓﻀﺎهﺎﯼ رﻧﮓ:ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ : ﻣﯽﺑﺎﺷﺪxy ﺗﻐﻴﻴﺮ ﺧﻄﯽ ﯾﺎﻓﺘﻪﯼUV اﺻﻞ 11 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ Advanced Information & Communication Technology Center ⎛ ⎞ 2x ⎜=U ⎟ , ⎠ ⎝ 6y − x + 1.5 ⎛ ⎞ 3y ⎜=V ⎟ ⎠ ⎝ 6y − x + 1.5 ﻓﻀﺎﯼ ' YU'Vﻧﻴﺰ هﻤﺎﻧﻨﺪ ﻓﻀﺎﯼ YUVﯾﮏ ﺗﻐﻴﻴﺮ ﯾﺎﻓﺘﻪﯼ ﺧﻄﯽ xyzﺑﻮدﻩ و ﺗﻨﻬﺎ ﺗﻔﺎوت ﺁن ﺑﺎ YUVدر اﯾﻦ اﺳﺖ ﮐﻪ ،در ﺁن .V' = 1.5 V :ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ اﮔﺮ ﻣﺴﺘﻘﻴﻤﺎ ﻣﯽﺧﻮاﺳﺘﻴﻢ از XYZﺑﻪ YUVﺣﺮﮐﺖ ﮐﻨﻴﻢ ،رواﺑﻂ زﯾﺮ ﺑﺪﺳﺖ ﻣﯽﺁﻣﺪ: 4X ⎛ ⎞ ⎜=U ⎟ , ⎠ ⎝ X + 15Y + 3Z 6Y ⎛ ⎞ ⎜=V ⎟ ⎠ ⎝ X + 15Y + 3Z ﭼﻮن ﻣﺎ در اﯾﻨﺠﺎ ﭘﻴﺎدﻩﺳﺎزﯼهﺎﯼ ٨ﺑﻴﺘﯽ را اﻧﺠﺎم ﻣﯽدهﻴﻢ ،و ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎﺳﯽ روﯼ ﻧﺘﺎﯾﺞ ﺑﺪﺳﺖ ﺁﻣﺪﻩ اﻋﻤﺎل ﺧﻮاهﺪ ﺷﺪ ،در ﻧﺘﻴﺠﻪ ﻧﺘﺎﯾﺞ ﺣﺎﺻﻞ از رﻓﺘﻦ ﺑﻪ دو ﻓﻀﺎﯼ رﻧﮓ YUVو ' Y'U'Vﯾﮑﺴﺎن ﺧﻮاهﺪ ﺷﺪ. ﻓﻀﺎﯼ رﻧﮓ YCbCr ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻓﻀﺎﯼ رﻧﮕﯽ ﻧﻴﺰ ﻋﻤﺪﺗﺎ در ﺗﺼﺎوﯾﺮ وﯾﺪﯾﻮﯼ دﯾﺠﻴﺘﺎل و در ﮐﺎرﺑﺮدهﺎﯾﯽ ﮐﻪ روﯼ اﯾﻦ ﺗﺼﺎوﯾﺮ اﻧﺠﺎم ﻣﯽﺷﻮد ،ﻣﻮرد اﺳﺘﻔﺎدﻩ ﻗﺮار ﻣﯽﮔﻴﺮد. در اﯾﻦ ﻓﻀﺎﯼ رﻧﮕﯽ Yﻟﻮﻣﻴﻨﺎﻧﺲ ﺑﻮدﻩ و Cbو Crﻧﺸﺎندهﻨﺪﻩﯼ ﮐﺮوﻣﻴﻨﺎﻧﺲ ﻣﯽﺑﺎﺷﻨﺪ .ﺣﺮﮐﺖ از ﻓﻀﺎﯼ ' R'G'Bﺑﻪ YCbCrو ﺑﺎﻟﻌﮑﺲ ﺗﻮﺳﻂ ﻣﺎﺗﺮﯾﺲهﺎﯼ زﯾﺮ ﻗﺎﺑﻞ اﻧﺠﺎم اﺳﺖ )ﻓﺮض ﺷﺪﻩ اﺳﺖ ﮐﻪ از ﻓﻀﺎﯼ ' R'G'Bدﯾﺠﻴﺘﺎل ﮐﻪ ﻣﻮﻟﻔﻪهﺎﯼ ﺁن در ﺑﺎزﻩﯼ ٠و ٢۵۵واﻗﻊ هﺴﺘﻨﺪ اﺳﺘﻔﺎدﻩ ﺷﺪﻩ اﺳﺖ(: ⎤ ' ⎡Y 601 ⎤ ⎡ 0.257 0.504 0.098 ⎤ ⎡R ⎢ ⎢ ⎥ ⎥ ⎢⎥ ⎥' ⎢ Cb ⎥ = ⎢ −0.148 −0.291 0.439 ⎥ ⎢G ⎦⎥ ' ⎢⎣ Cr ⎥⎦ ⎢⎣ 0.439 −0.368 −0.071⎥⎦ ⎢⎣B 0 ⎤ 1.596 ⎤ ⎡Y 601 ⎡R ' ⎤ ⎡1.164 ⎢ ⎥ ⎢ ⎢⎥ ⎥ G = − − ' 1.164 0.391 ⎥ 0.813⎥ ⎢ Cb ⎢ ⎥ ⎢ ⎢⎣B ' ⎥⎦ ⎢⎣1.164 2.018 ⎦⎥ 0 ⎥⎦ ⎢⎣ Cr ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ R'G’Bﺑﻪ ﻓﻀﺎﯼ ) YCbCrﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪارد (۶٠١و ﺑﺎﻟﻌﮑﺲ و ﯾﺎ ﺑﺎز در ﻓﻀﺎﯼ ورودﯼ و ﺧﺮوﺟﯽ دﯾﺠﻴﺘﺎل ﺑﺎ اﺳﺘﺎﻧﺪارد ٧٠٩ﻣﯽﺗﻮان داﺷﺖ: 0 ⎤ 1.793 ⎤ ⎡Y 709 ⎡R ⎤ ⎡1.164 ⎢ ⎥ ⎢ ⎢⎥ ⎥ G = − − 1.164 0.213 ⎥ 0.534 ⎥ ⎢ Cb ⎢ ⎥ ⎢ ⎥⎦ 0 ⎦⎥ ⎣⎢ Cr ⎣⎢B ⎦⎥ ⎢⎣1.164 2.115 ⎤ 0.062 ⎤ ⎡R ⎡Y 709 ⎤ ⎡ 0.183 0.614 ⎢ ⎢ ⎥ ⎥ ⎢⎥ Cb = − − 0.101 0.338 0.439 ⎢ ⎢ ⎥ ⎥ ⎥ ⎢G ⎥⎦ ⎣⎢ Cr ⎦⎥ ⎢⎣ 0.439 −0.399 −0.040 ⎦⎥ ⎣⎢B ﺗﺒﺪﯾﻞ از ﻓﻀﺎﯼ رﻧﮓ RGBﺑﻪ ﻓﻀﺎﯼ ) YCbCrﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪارد (٧٠٩و ﺑﺎﻟﻌﮑﺲ دﻗﺖ ﮐﻨﻴﺪ ﮐﻪ از ﻣﻘﺎدﯾﺮ Cbو Crﯼ ﮐﻪ ﻧﻬﺎﯾﺘﺎ اﺳﺘﻔﺎدﻩ ﻣﯽﺷﻮﻧﺪ ،ﻣﻘﺪار ﻟﻮﻣﻴﻨﺎﻧﺲ ﮐﻢ ﺷﺪﻩ اﺳﺖ )اﮔﺮ ﻗﺒﻮل ﻧﺪارﯾﺪ ،رواﺑﻂ ﺑﺎﻻ را دوﺑﺎرﻩﻧﻮﯾﺴﯽ و ﺳﺎدﻩ ﮐﻨﻴﺪ( ،در ﻧﺘﻴﺠﻪ اﯾﻦ اﺟﺰاﯼ ﮐﺮوﻣﻴﻨﺎﻧﺲ ﻣﺴﺘﻘﻞ از ﺗﻐﻴﻴﺮات ﻧﻮرﯼ )اﻧﺮژﯼ( ﺑﻮدﻩ و در ﮐﺎرﺑﺮدهﺎﯾﯽ ﮐﻪ ﻣﺎﯾﻞ ﺑﺎﺷﻴﻢ ﺗﻐﻴﻴﺮات ﻧﻮرﯼ ﮐﻤﺘﺮﯾﻦ ﺗﺎﺛﻴﺮ را داﺷﺘﻪ ﺑﺎﺷﻨﺪ ،اﺳﺘﻔﺎدﻩ از اﯾﻦ ﺟﺰء ﻣﻨﺎﺳﺐ ﻣﯽﻧﻤﺎﯾﺎﻧﺪ. ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :در هﺮ دو ﺗﺒﺪﯾﻞ ﻓﻮق Y ،ﺑﺪﺳﺖ ﺁﻣﺪﻩ در ﺑﺎزﻩﯼ ] Cb ،[0, 220در ﺑﺎزﻩﯼ ] [-112, 112و Crدر ﺑﺎزﻩﯼ [-112, 112ﻗﺮار ﺧﻮاهﻨﺪ داﺷﺖ .در ﻧﺘﻴﺠﻪ ﺟﻬﺖ اﺳﺘﻔﺎدﻩ ،ﺑﺎﯾﺪ ﺁنهﺎ را ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﺑﺎزﻩﯼ ] [0, 255ﺗﺒﺪﯾﻞ ﻧﻤﺎﯾﻴﻢ .در ﻋﮑﺲ ﺗﺒﺪﯾﻼت ﻓﻮق ﻧﻴﺰ اﺑﺘﺪا ﺑﺎﯾﺪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ،Y Cbو Crﺑﻪ ﺑﺎزﻩهﺎﯼ ﻣﻘﺎدﯾﺮ ﺧﻮد ﺑﺮﮔﺸﺘﻪ و ﺳﭙﺲ ﻋﮑﺲ ﺗﺒﺪﯾﻞ را اﻧﺠﺎم داد ،ﮐﻪ در ﺁن ،ﻧﺘﺎﯾﺞ ٨ﺑﻴﺘﯽ ﺧﻮاهﻨﺪ ﺑﻮد. ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: )[y601 cb cr] = rgb2y601cbcr (r, g, b اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ YCbCrﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪارد CIE 601ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. )% convert RGB to R'G'B'(gamma corrected ;)[rp gp bp] = GammaCorrectRGB(r,g,b %R'G'B' to YCbCr (Standard 601) Conversion Matrix [=rpgpbp2y601rcbrcrrMatrix 0.257 0.504 0.098 -0.148 -0.291 0.439 ;]0.439 -0.368 -0.071 ;)']y601rcbrcrr = rpgpbp2y601rcbrcrrMatrix * double([rp gp bp ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 12 Advanced Information & Communication Technology Center %scaling components to 8-bits values [y601 cb cr] = Scale28bit(y601rcbrcrr(1),y601rcbrcrr(2),y601rcbrcrr(3) ,0,220, -112,112, -112,112); [r g b] = y601cbcr2rgb (y601, cb, cr) . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪRGB ﺑﻴﺘﯽ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮCIE 601 ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪاردYCbCr ﺑﻴﺘﯽ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ :ﻧﺎم ﺗﺎﺑﻊ :ﺗﻮﺻﻴﻒ % scaling components to origin ranges. y601 = MyScale(y601, 0,255, 0,220); cb = MyScale(cb, 0,255, -112,112); cr = MyScale(cr, 0,255, -112,112); %YCbCr to R'G'B' Conversion Matrix (Standard 601) y601cbcr2rpgpbpMatrix=[ 1.164 0 1.596 1.164 -0.391 -0.813 1.164 2.018 0]; rpgpbp = y601cbcr2rpgpbpMatrix * [y601 cb cr]'; rp = rpgpbp(1); gp = rpgpbp(2); bp = rpgpbp(3); %Converting R'G'B' to RGB - RGB Components will be in [0,255] [r g b] = ReverseGammaCorrectRGB(rp,gp,bp); [y709 cb cr] = rgb2y709cbcr (r, g, b) . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪCIE 709 ﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪاردYCbCr ﺑﻴﺘﯽ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮRGB ﺑﻴﺘﯽ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ :ﻧﺎم ﺗﺎﺑﻊ :ﺗﻮﺻﻴﻒ %RGB to YCbCr (Standard 709) Conversion Matrix rgb2y709rcbrcrrMatrix=[ 0.183 0.614 0.062 -0.101 -0.338 0.439 0.439 -0.399 -0.040]; y709rcbrcrr = rgb2y709rcbrcrrMatrix * double([r g b]'); %scaling components to 8-bits values [y709 cb cr] = Scale28bit(y709rcbrcrr(1),y709rcbrcrr(2),y709rcbrcrr(3),0,220,-112,112,-112,112); [r g b] = y709cbcr2rgb (y709, cb, cr) . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪRGB ﺑﻴﺘﯽ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮCIE 709 ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﻣﻄﺎﺑﻖ اﺳﺘﺎﻧﺪاردYCbCr ﺑﻴﺘﯽ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ % scaling components to origin ranges. y709 = MyScale(y709, 0,255, 0,220); cb = MyScale(cb, 0,255, -112,112); 13 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ :ﻧﺎم ﺗﺎﺑﻊ :ﺗﻮﺻﻴﻒ Advanced Information & Communication Technology Center ;)cr = MyScale(cr, 0,255, -112,112 )%YCbCr to RGB Conversion Matrix (Standard 709 [=y709cbcr2rgbMatrix 1.164 0 1.793 1.164 -0.213 -0.534 ;]1.164 2.115 0 ;)']rgb = uint8(y709cbcr2rgbMatrix * [y709 cb cr ;)r = rgb(1 ;)g = rgb(2 ;)b = rgb(3 ﻓﻀﺎﯼ رﻧﮓ Kodak Photo YCC ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :ﮐﺪاﮎ اﯾﻦ ﻓﻀﺎﯼ رﻧﮓ را ﺑﺮاﯼ encodingﺳﻴﺴﺘﻢهﺎﯼ PhotoCDﻃﺮاﺣﯽ ﮐﺮد .اﯾﻦ ﻓﻀﺎ هﻢ ﺑﺮاﯼ ﺑﮑﺎرﮔﻴﺮﯼ در ﺳﻴﺴﺘﻢهﺎﯼ ﺗﻠﻮﯾﺰﯾﻮﻧﯽ- وﯾﺪﯾﻮﯾﯽ و هﻢ ﺑﺮاﯼ ﺑﮑﺎرﮔﻴﺮﯼ در ﺳﻴﺴﺘﻢهﺎﯼ ﮔﺮاﻓﻴﮏ ﮐﺎﻣﭙﻴﻮﺗﺮﯼ ﻃﺮاﺣﯽ ﺷﺪﻩ اﺳﺖ. ﺑﺮاﯼ ورود ﺑﻪ اﯾﻦ ﻓﻀﺎ ،اﺑﺘﺪا ﺑﺮ روﯼ ﻓﻀﺎﯼ RGBﯾﮏ ﺗﺒﺪﯾﻞ Gamma Correctionﺻﻮرت ﻣﯽﮔﻴﺮدﺗﺎ ﻓﻀﺎﯼ ' R'G'Bﺑﺪﺳﺖ ﺁﯾﺪ ،ﺳﭙﺲ ﺑﺎ اﯾﻦ ﻣﻮﻟﻔﻪهﺎﯼ ﺟﺪﯾﺪ وارد ﻓﻀﺎﯼ YCCﻣﯽﺷﻮﯾﻢ )ﻓﺮض ﺷﺪﻩ اﺳﺖ ﮐﻪ ﻣﻮﻟﻔﻪهﺎﯼ ' R'G'Bدﯾﺠﻴﺘﺎل و در ﺑﺎزﻩﯼ ٠و ٢۵۵ﻣﯽﺑﺎﺷﻨﺪ(: ⎤ ' ⎡ Luma ⎤ ⎡ Y ⎤ ⎡ 0.213 0.419 0.081 ⎤ ⎡R ⎢ ⎢ ⎥ ⎢ ⎥ ⎥ ⎢⎥ ⎥' ⎢ Chroma1 ⎥ = ⎢ C ⎥ = ⎢ −0.131 −0.256 0.387 ⎥ ⎢ G ⎦⎥ ' ⎢⎣ Chroma2 ⎥⎦ ⎢⎣ C ⎥⎦ ⎢⎣ 0.373 −0.312 −0.061⎥⎦ ⎢⎣ B YCCاﻃﻼﻋﺎت ﺑﻴﺸﺘﺮﯼ از ﺳﺎﯾﺮ ﻓﻀﺎهﺎﯼ رﻧﮕﯽ ﻣﯽﺗﻮاﻧﺪ ذﺧﻴﺮﻩ ﮐﻨﺪ ،ﭼﻮن G ،Rو Bدر ﺁن ﻣﯽﺗﻮاﻧﻨﺪ ﻣﻘﺎدﯾﺮ ﻣﻨﻔﯽ را ﻧﻴﺰ ﺑﭙﺬﯾﺮﻧﺪ .ﺑﻨﺎﺑﺮاﯾﻦ ﺗﺒﺪﯾﻞ ﻣﻌﮑﻮس ﺁن راﺣﺖ ﻧﺒﻮدﻩ و ﺑﻪ ﺳﻴﺴﺘﻢ ﻧﻤﺎﯾﺶ ﻣﻘﺼﺪ ﺑﺴﺘﮕﯽ دارد .ﺗﺒﺪﯾﻞ YCCﺑﻪ RGB 24bitﺑﺮاﯼ ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ CRTاز رواﺑﻂ زﯾﺮ ﺑﺪﺳﺖ ﻣﯽﺁﯾﺪ: 0 ⎤ 1.8811 ⎤ ⎡ Y ⎡R ' ⎤ ⎡1.403 ⎢ ⎥ ⎢ ⎥ ⎢⎥ G ' = 1.403 − 0.444 ⎥ −0.957 ⎥ ⎢ C1 ⎢ ⎥ ⎢ ⎦⎥ 0 ⎥⎦ ⎢⎣ C2 ⎣⎢ B ' ⎦⎥ ⎢⎣1.403 2.291 ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :ﻣﻘﺎدﯾﺮ C1،Yو C2ﺣﺎﺻﻞ از ﺗﺒﺪﯾﻞ اول ﺑﻪ ﺗﺮﺗﻴﺐ در ﺑﺎزﻩهﺎﯼ ] [-99, 99] ،[0, 182و ] [-96, 96ﻗﺮار ﺧﻮاهﻨﺪ داﺷﺖ ،ﮐﻪ ﺑﺎﯾﺪ ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ .ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق ﻧﻴﺰ ،اﺑﺘﺪا ﺑﺎﯾﺪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ ﺑﻪ اﯾﻦ ﺑﺎزﻩهﺎ ﺑﺮﮔﺮداﻧﺪﻩ ﺷﺪﻩ و ﺳﭙﺲ ﻋﮑﺲ ﺗﺒﺪﯾﻞ روﯼ ﺁن ﺻﻮرت ﭘﺬﯾﺮد. )[y c1 c2] = rgb2ycc (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ YCCﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. '%Convert RGB to R'G'B ;)[rp gp bp] = GammaCorrectRGB(r,g,b %R'G'B' to Kodak YCC Matrix [=rpgpbp2yrcrcrMatrix 0.213 0.419 0.081 -0.131 -0.256 0.387 ;]0.373 -0.312 -0.061 ;)']yrcrcr = rpgpbp2yrcrcrMatrix * double([rp gp bp ;)[y c1 c2] = Scale28bit(yrcrcr(1),yrcrcr(2),yrcrcr(3) ,0,182, -99,99, -96,96 ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 14 Advanced Information & Communication Technology Center )[r g b] = ycc2rgb (y, c1, c2 ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ YCCرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ RGBﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. % scaling components to origin ranges. ;)y = MyScale(y, 0,255, 0,182 ;)c1 = MyScale(c1, 0,255, -99,99 ;)c2 = MyScale(c2, 0,255, -96,96 %YCC to R'G'B' Conversion Matrix [=ycc2rpgpbpMatrix 1.403 0 1.8811 1.403 -0.444 -0.957 ;]1.403 2.291 0 ;']rpgpbp = ycc2rpgpbpMatrix * [y c1 c2 ;)rp = rpgpbp(1 ;)gp = rpgpbp(2 ;)bp = rpgpbp(3 ]%Converting R'G'B' to RGB - RGB Components will be in [0,255 ;)[r g b] = ReverseGammaCorrectRGB(rp,gp,bp ﻓﻀﺎهﺎﯼ رﻧﮓ )HSL (Hue, Saturation, Lightness اﯾﻦ ﻓﻀﺎهﺎﯼ رﻧﮓ ﺷﺒﻴﻪﺗﺮﯾﻦ ﻓﻀﺎ ﺑﻪ ﺳﻴﺴﺘﻢ ﺑﻴﻨﺎﯾﯽ اﻧﺴﺎن ﻣﯽﺑﺎﺷﻨﺪ و در ﭘﺮدازش ﺗﺼﻮﯾﺮ ﻧﻴﺰ ﮐﺎرﺑﺮدهﺎﯼ ﺑﺴﻴﺎرﯼ ﯾﺎﻓﺘﻪ اﻧﺪ ،زﯾﺮا از ﻃﺮﻓﯽ دو ﭘﺎراﻣﺘﺮ Hو Sﺑﻪ ﺷﻴﻮﻩ اي ﮐﻪ اﻧﺴﺎنهﺎ رﻧﮓ را ﺗﺸﺨﻴﺺ ﻣﻲدهﻨﺪ ،ﺑﺴﻴﺎر ﻧﺰدﻳﮏ هﺴﺘﻨﺪ و از ﻃﺮﻓﯽ دﯾﮕﺮ ﭼﻮن در اﯾﻦ ﻓﻀﺎ ﻧﻴﺰ Lاز ﺑﻘﻴﻪﯼ رﻧﮓ ﺟﺪا ﺷﺪﻩ اﺳﺖ، ﺑﺮاﯼ ﭘﺮدازشهﺎﯾﯽ ﻧﻈﻴﺮ Histogram Equalizationو ...ﻓﻘﻂ ﮐﺎﻓﯽ اﺳﺖ ﮐﻪ ﭘﺮدازشهﺎ روﯼ اﯾﻦ ﻣﻮﻟﻔﻪ ﺻﻮرت ﭘﺬﯾﺮﻧﺪ و ﭘﺲ از اﺗﻤﺎم ﭘﺮدازش وﯾﮋﮔﯽهﺎﯼ رﻧﮕﯽ ﺑﺎ Lﭘﺮدازش ﺷﺪﻩ ﺗﺮﮐﻴﺐ ﺷﻮﻧﺪ .در اﯾﻦ ﻓﻀﺎﯼ رﻧﮓ Hue ،ﺗﻮﺻﻴﻒ ﮐﻨﻨﺪﻩﯼ رﻧﮓ ﺧﺎﻟﺺ اﺳﺖ) ﻣﺎﻧﻨﺪ زرد ﺧﺎﻟﺺ ،ﻧﺎرﻧﺠﻲ ﺧﺎﻟﺺ ﻳﺎ ﻗﺮﻣﺰ ﺧﺎﻟﺺ(Hue . ﻧﻮع رﻧﮓ را ﺑﺮ ﺣﺴﺐ درﺟﻪ ) در داﯾﺮﻩاﯼ ﮐﻪ در زﯾﺮ ﻧﺸﺎن دادﻩ ﺷﺪﻩ اﺳﺖ( ،ﺑﻴﺎن ﻣﯽﮐﻨﺪ Saturation .ﻧﺸﺎن ﻣﻲ دهﺪ ﮐﻪ ﻳﮏ رﻧﮓ ﺧﺎﻟﺺ ﺗﺎ ﭼﻪ ﺣﺪ ﺗﻮﺳﻂ ﻧﻮر ﻳﺎ رﻧﮓ ﺳﻔﻴﺪ رﻗﻴﻖ ﺷﺪﻩ اﺳﺖ و Brightnessﻣﻴﺰان ﺷﺪت رﻧﮓ اﺣﺴﺎس ﺷﻮﻧﺪﻩ ﺗﻮﺳﻂ ﺑﻴﻨﻨﺪﻩ را ﻣﯽرﺳﺎﻧﺪ. ﻓﻀﺎهﺎي رﻧﮓ HSL ﻓﻀﺎﯼ رﻧﮓ HSI ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :ﺑﺮاﯼ ورود ﺑﻪ HSIاز ﻓﻀﺎﯼ ،RGBﺗﺒﺪﯾﻞ واﺣﺪﯼ وﺟﻮد ﻧﺪارد )ﺑﺪﻟﻴﻞ ﻣﺎهﻴﺖ ﻓﻀﺎﯼ ،(HSIﺗﺒﺪﯾﻼت ﻣﺨﺘﻠﻔﯽ ﺑﺮاﯼ اﯾﻦ ﻣﻨﻈﻮر اراﺋﻪ ﺷﺪﻩاﻧﺪ ﮐﻪ هﺮ ﮐﺪام در ﮐﺎرﺑﺮد ﺧﺎﺻﯽ ﺑﻬﺘﺮ ﻋﻤﻞ ﮐﺮدﻩ اﺳﺖ .ﻣﺎ ﺑﺮاﯼ ﺗﺒﺪﯾﻞ ﻓﻀﺎﯼ رﻧﮓ RGBﺑﻪ ﻓﻀﺎﯼ ،HSIاز رواﺑﻂ زﯾﺮ ﮐﻪ در ﮐﺘﺎب ﭘﺮدازش ﺗﺼﻮﯾﺮ Gonzalezدرج ﺷﺪﻩ اﺳﺖ ،اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﻢ: ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 15 Advanced Information & Communication Technology Center if (B > G) then H = 360 − H 1 )(R − G) + (R − B 2 , )(R − G)2 + (R − B)(G − B )min(R, G,B R +G+B ∠H = cos −1 S =1−3 I = (R+G+B)/3. ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :اﮔﺮ در ﺗﺒﺪﯾﻼت ﻓﻮق S=0ﺑﺪﺳﺖ ﺁﯾﺪ ،ﭼﻮن Hهﺮﻣﻘﺪارﯼ ﮐﻪ ﺑﮕﻴﺮد ،ﺑﺎز ﻣﻌﺎدل ) (0,0,0در RGBهﺴﺘﻴﻢ ،ﺑﺮاﯼ ﯾﮑﺴﺎنﺳﺎزﯼ Hرا ﺑﺮاﺑﺮ ﺻﻔﺮ در ﻧﻈﺮ ﻣﯽﮔﻴﺮﯾﻢ .ﺑﻪﻋﺒﺎرﺗﯽ دﯾﮕﺮ ،وﻗﺘﯽ اﺷﺒﺎع ﺻﻔﺮ ﺑﺎﺷﺪ ،ﻣﻮﻟﻔﻪﯼ ﺗﻪرﻧﮓ ﺗﻌﺮﯾﻒ ﻧﻤﯽﺷﻮد و Hﺑﯽﻣﻌﻨﺎ ﻣﯽﮔﺮدد.هﻤﭽﻨﺎﻧﮑﻪ اﮔﺮ Iﺻﻔﺮ ﺑﺎﺷﺪ، اﺷﺒﺎع ﺗﻌﺮﯾﻒ ﻧﻤﯽﺷﻮد. )[h s i] = rgb2hsi (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ RGBرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ HISﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ;sumrgb = r + g + b ]%i is in [0, 255 ;i = sumrgb/3 ;))num = 0.5 *((r - g) + (r - b ;))den = eps + sqrt((r - g)^2 + (r - b)*(g - b ;)theta = acos(num/den ]% h is in [0, 2*pi ;h = theta )if (b>g ;h = 2*pi - h ;end ]% now h is in [0, 255 ;h = h/(2*pi) * 255 ;)]num = min([r g b %preventing devide by zero )if (sumrgb == 0 ;s = 0 else ;s = 1 - 3*num / sumrgb ;end ]% now s is [0,255 ;s = s*255 % if Saturation is 0 then H value is meaningless. )if (s==0 ;h = 0 ;end %scaling components to 8-bits values ;)h = uint8(h ;)s = uint8(s ;)i = uint8(i ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق هﻢ ﺑﻪ اﯾﻦ ﺻﻮرت ﻋﻤﻞ ﻣﯽﮐﻨﻴﻢ ﮐﻪ: ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 16 Advanced Information & Communication Technology Center 0D < H ≤ 120D 120D < H ≤ 240D 240D < H ≤ 360D H=H H = H − 120D H = H − 240D 1⎛ S cos H ⎞ r = ⎜1 + ⎟ 3⎝ cos (60D − H) ⎠ 1 r = (1 − S) 3 r = 1 − (g + b) g = 1 − (r + b) 1⎛ S cos H ⎞ g = ⎜1 + ⎟ 3⎝ cos (60D − H) ⎠ 1 g = (1 − S) 3 1 b = (1 − S) 3 b = 1 − (r + g) 1⎛ S cos H ⎞ b = ⎜1 + ⎟ 3⎝ cos (60D − H) ⎠ :ﺳﭙﺲ R = 3I*r , G=3I*g , B=3I*B .[ ﻗﺮار دارﻧﺪ0, 1] ﺑﺪﺳﺖﺁﻣﺪﻩﯼ ﻓﻮق در ﺑﺎزﻩﯼB وG ،R ﮐﻪ ﻣﻘﺎدﯾﺮ :ﻧﺎم ﺗﺎﺑﻊ [r g b] = hsi2rgb (h, s, i) . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪRGB ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮHSI ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ %scaling components to [0,1] h = double(h)/255; s = double(s)/255; i = double(i)/255; %convert h to radian h = h*(2*pi); if (h==0) h = 2*pi; end; a60 = pi/3; a120 = 2*a60; a240 = 2*a120; a360 = 2*pi; % for more details on conversion refer to toolbox documents if ((h>0) & (h<=a120)) b = (1/3)*(1-s); r = (1/3)*(1+(s*cos(h)) / cos(a60-h)); g = 1-(r+b); end; if ((h>a120) & (h<=a240)) h = h-a120; r = (1/3)*(1-s); g = (1/3)*(1+(s*cos(h))/cos(a60-h)); b = 1-(r+g); end; if ((h>a240) & (h<=a360)) h = h-a240; g = (1/3)*(1-s); b = (1/3)*(1+(s*cos(h))/cos(a60-h)); r = 1-(g+b); end; r = (3*i)*r; g = (3*i)*g; b = (3*i)*b; 17 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ :ﺗﻮﺻﻴﻒ Advanced Information & Communication Technology Center %scaling components to 8-bits values ;)r = uint8(255*r ;)g = uint8(255*g ;)b = uint8(255*b ﻓﻀﺎﯼ رﻧﮓ HSV ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :ﺑﺮاﯼ اﯾﻦ ﻓﻀﺎ ﻧﻴﺰ ﺗﺒﺪﯾﻼت ﻣﺨﺘﻠﻔﯽ ﭘﻴﺸﻨﻬﺎد ﺷﺪﻩ اﺳﺖ ﮐﻪ در اﯾﻨﺠﺎ ﻣﺎ از ﺗﺒﺪﯾﻞ Travisاﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﻢ .در اﯾﻨﺠﺎ ﻣﻘﺎدﯾﺮ G ،Rو Bﺑﻪﮐﺎر رﻓﺘﻪ در ﺑﺎزﻩﯼ ] [0, 1ﻧﺮﻣﺎل ﺷﺪﻩاﻧﺪ: ) max = max ( R, G,B ) , min = min ( R, G,B max − R max − G max − B = ', G = ', B max − min max − min max − min if S = 0 )if (R = max) & (G = min )if (R = max) & (B = min )if (G = max) & (B = min )if (G = max) & (R = min )if (B = max) & (r = min )if(B = max) & (G = min = 'R ⎧Undefined ⎪ '⎪ 5+B '⎪ 1 − G ⎪ 'H = ⎨ 1+R '⎪ 3−B ⎪ '⎪ 3 + G ⎪ ' ⎪⎩ 5 − R V = max , S = (max − min) / max ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :در راﺑﻄﻪﯼ ﻓﻮق H=Undefinedﺑﻪ اﯾﻦ ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ رﻧﮓ ﻣﻮرد ﻧﻈﺮ Hueﻧﺪاﺷﺘﻪ و ﻣﻮﻧﻮﮐﺮوم ﻣﯽﺑﺎﺷﺪ .هﻤﭽﻨﻴﻦ در ﻣﺤﺎﺳﺒﻪﯼ ،Sاﮔﺮ maxﺑﺮاﺑﺮ ﺻﻔﺮ ﺑﺎﺷﺪ ،ﯾﻌﻨﯽ ) ،(R,G,B) = (0,0,0ﮐﻪ در ﺁن Sﺑﺮاﺑﺮ ﺻﻔﺮ اﺳﺖ. ﻣﻘﺎدﯾﺮ Vو Sﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ﯾﮏ ﺑﻮدﻩ و ﻣﻘﺪار Hﺑﺎ ﺿﺮب ﮐﺮدن ﺁن در ۶٠درﺟﻪ ،ﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ٣۶٠درﺟﻪ ﺧﻮاهﺪ ﺑﻮد ،ﮐﻪ اﯾﻦ ﻣﻘﺎدﯾﺮ را در ﺑﺎزﻩﯼ ] [0, 255ﺗﻐﻴﻴﺮ ﻣﻘﻴﺎس ﻣﯽدهﻴﻢ. )[h s v] = rgb2hsv (r, g, b ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ RGBرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ HSVﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ]%scaling components to [0,1 ;r = double(r)/255 ;g = double(g)/255 ;b = double(b)/255 ;)]Maxrgb = max([r g b ;)]Minrgb = min([r g b ;v = Maxrgb ;delta = Maxrgb - Minrgb if Maxrgb == 0 %preventing devide bye zero ;s = 0 else ;s = delta/Maxrgb ;end ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 18 Advanced Information & Communication Technology Center if s == 0 % if Saturation is Zero, Hue Value is meaningless h = 0; else Rc = (Maxrgb - r) / delta; Gc = (Maxrgb - g) / delta; Bc = (Maxrgb - b) / delta; if ((r == Maxrgb) & (g == Minrgb)) h = 5 + Bc; elseif ((r == Maxrgb) & (b == Minrgb)) h = 1 - Gc; elseif ((g == Maxrgb) & (b == Minrgb)) h = 1 + Rc; elseif ((g == Maxrgb) & (r == Minrgb)) h = 3 - Bc; elseif ((b == Maxrgb) & (r == Minrgb)) h = 3 + Gc; elseif ((b == Maxrgb) & (g == Minrgb)) h = 5 - Rc; end; end; %H is in [0,60] h = h*60; if (h < 0) h = h+360; end; %scaling components to 8-bits values h = uint8((h/360)*255); s = uint8(s*255); v = uint8(v*255); :[ ﺑﻪ اﯾﻦ ﺻﻮرت ﻋﻤﻞ ﻣﯽﮐﻨﻴﻢ ﮐﻪ0, 1] در ﺑﺎزﻩﯼV وS [ و0, 360) در ﺑﺎزﻩﯼH ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق هﻢ ﺑﺮاﯼ Hex = H / 60, PC = floor(Hex), SC = Hex − PC a = (1 − S)V , b = (1 − (S * SC))V , c = (1 − (S * (1 − SC)))V ⎧ ⎪ ⎪ ⎪⎪ R, G,B = ⎨ ⎪ ⎪ ⎪ ⎪⎩ R = V, G = c, B = a R = b, G = V, B = a R = a, G = V , B = c if (PC = 0) if (PC = 1) if (PC = 2) R = a, G = b, B = V R = c , G = a, B = V R = V, G = a, B = b if (PC = 3) if (PC = 4) if (PC = 5) . ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ٨ [ ﺑﻮدﻩ و ﺑﺎﯾﺪ ﺑﻪ ﻣﻘﺎدﯾﺮ0, 1] ﺑﺪﺳﺖ ﺁﻣﺪﻩ در ﺑﺎزﻩﯼB وG ،R ﺿﻤﻨﺎ ﻣﻘﺎدﯾﺮ.R,G,B = V ﺑﺎﯾﺪ، ﺑﺎﺷﺪS=0 اﮔﺮ:ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ [r g b] = hsv2rgb (h, s, v) :ﻧﺎم ﺗﺎﺑﻊ . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪRGB ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮHSV ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ %Convert h to degree h = (double(h)/255)*360 ; 19 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ :ﺗﻮﺻﻴﻒ Advanced Information & Communication Technology Center ]%scaling components to [0,1 ;s = double(s)/255 ;v = double(v)/255 ;)%if Saturation doesnot exist, RGB=(V,V,V )if (s == 0 ;r = v ;g = v ;b = v else if h == 360 ;h = 0 ;end ;hex = h / 60 ;)pc = floor(hex ;sc = hex - pc ;)a = v * (1 - s ;))b = v * (1 - (s * sc ;)))c = v * (1 - (s * (1 - sc switch pc case 0 ;r = v; g = c; b = a case 1 ;r = b; g = v; b = a case 2 ;r = a; g = v; b = c case 3 ;r = a; g = b; b = v case 4 ;r = c; g = a; b = v case 5 ;r = v; g = a; b = b ;end ;end %scaling components to 8-bits values ;)r = uint8(r*255 ;)g = uint8(g*255 ;)b = uint8(b*255 ﻓﻀﺎهﺎﯼ رﻧﮓ ﻣﻔﻬﻮﻣﺎ ﯾﮑﻨﻮاﺧﺖ اﯾﺪﻩﯼ اﺻﻠﯽ ﻣﻌﺮﻓﯽ اﯾﻦ ﻓﻀﺎهﺎﯼ رﻧﮓ از ﺁﻧﺠﺎ ﺳﺮﭼﺸﻤﻪ ﮔﺮﻓﺘﻪ اﺳﺖ ﮐﻪ ﺗﻔﺎوت ﻣﻔﻬﻮﻣﯽ ﺑﻴﻦ دو رﻧﮓ ،ﺑﺮاﺑﺮ ﺗﻔﺎﺿﻞ ﺁنهﺎ در ﻓﻀﺎﯼ رﻧﮓ XYZﻧﻴﺴﺖ .ﯾﮏ ﻓﻀﺎﯼ رﻧﮓ ﯾﮑﻨﻮاﺧﺖ ،ﻓﻀﺎﯾﯽ اﺳﺖ ﮐﻪ در ﺁن ﻓﺎﺻﻠﻪﯼ ﻓﻀﺎﯾﯽ ﺑﻴﻦ دو رﻧﮓ ،ﺑﺎ ﻗﻀﺎوت ﺑﻴﻨﻨﺪﻩﯼ اﻧﺴﺎﻧﯽ از ﺷﺒﺎهﺖ دو رﻧﮓ ،ﻣﺘﻨﺎﻇﺮ ﺑﺎﺷﺪ CIE .ﺑﺮاﯼ دﺳﺘﻴﺎﺑﯽ ﺑﻪ ﻓﻀﺎﯼ رﻧﮕﯽ ﺑﺎ اﯾﻦ وﯾﮋﮔﯽ در ﺳﺎل ١٩٧۶ﻓﻀﺎهﺎﯼ رﻧﮓ * L*u*vو * L*a*bرا ﺑﺮ ﭘﺎﯾﻪﯼ * Lﻣﻌﺮﻓﯽ ﻧﻤﻮد ،ﮐﻪ در ﺁن * Lﺑﻴﺎﻧﮕﺮ ﻣﻘﺪار ﻟﻮﻣﻴﻨﺎﻧﺲ ﯾﮏ رﻧﮓ در ﯾﮏ ﻣﻘﻴﺎس ﻧﻮر ﯾﮑﻨﻮاﺧﺖ ﻣﯽﺑﺎﺷﺪ .در ﻓﻀﺎﯼ رﻧﮓ * L*u*vاﺟﺰاﯼ * uو * vﻧﺴﺨﻪهﺎﯼ ﺗﺒﺪﯾﻞ رﯾﺎﺿﯽ ﯾﺎﻓﺘﻪﯼ ﮐﺮوﻣﺎ ﻣﯽﺑﺎﺷﻨﺪ .در ﻓﻀﺎﯼ * a* ،L*a*bو * bﺑﻴﺎﻧﮕﺮ ﺗﻐﻴﻴﺮات رﻧﮕﯽ ﯾﮑﻨﻮاﺧﺖ ﺑﺮ روﯼ ﻣﺤﻮرهﺎﯼ زرد -ﺳﺒﺰ و زرد -ﺁﺑﯽ ﻣﯽﺑﺎﺷﻨﺪ. ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 20 Advanced Information & Communication Technology Center ﻓﻀﺎﯼ رﻧﮓ *L*u*v ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :اﯾﻦ ﻓﻀﺎ ﺑﺮ ﭘﺎﯾﻪﯼ ' YU'Vﻣﯽﺑﺎﺷﺪ .ﺑﺮاﯼ ﺣﺮﮐﺖ از ﻓﻀﺎﯼ XYZﺑﻪ ﻓﻀﺎﯼ رﻧﮓ * ،L*u*vﺑﻪ ﺻﻮرت زﯾﺮ ﻋﻤﻞ ﻣﯽﮐﻨﻴﻢ: Y > 0.008856 Y0 if Y ≤ 0.008856 Y0 if 1 ⎧ ⎛ ⎞ 3 ⎪ 116 ⎜ Y ⎟ − 16 ⎪ ⎠ ⎝ Y0 ⎨ =* L ⎞⎛ Y ⎪ ⎟ ⎜ ⎪ 903.3 ⎠ ⎝ Y0 ⎪⎩ )u* = 13 L*(u′ − u′0 )v* = 13 L*(v′ − v′0 ﮐﻪ اﮔﺮ Y0 ،X0و Z0ﻣﺨﺘﺼﺎت رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ ﺑﺎﺷﻨﺪ ،ﻣﺜﻼ هﻤﺎن ﻣﺨﺘﺼﺎت D65ﮐﻪ در ﻗﺴﻤﺖهﺎﯼ ﻗﺒﻠﯽ ﻣﻌﺮﻓﯽ ﺷﺪ ،ﺁﻧﮕﺎﻩ: 4X 9Y = 'U = ', V X + 15Y + 3Z X + 15Y + 3Z 4X 0 9Y0 = ' U0 = ' , V0 X 0 + 15Y0 + 3Z 0 X 0 + 15Y0 + 3Z 0 ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :اول اﯾﻨﮑﻪ اﮔﺮ از XYZدﯾﺠﻴﺘﺎﻟﯽ ﺷﺪﻩ اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﺪ ،ﭼﻮن در اﯾﻦ ﺗﺒﺪﯾﻞ دﯾﺠﻴﺘﺎلﺳﺎزﯼ ﯾﻌﻨﯽ ﺗﻘﺴﻴﻢ Y ،Xو Zﺑﺮ X0و Y0و Z0 اﻧﺠﺎم ﺷﺪﻩ اﺳﺖ ،در ﻣﺤﺎﺳﺒﻪﯼ * Lاز Yاﺳﺘﻔﺎدﻩ ﻧﻤﺎﯾﻴﺪ. ﺑﻌﺪ از ﺣﺮﮐﺖ از XYZﺑﻪ اﯾﻦ ﻓﻀﺎ U ،L ،و Vﺑﻪ ﺗﺮﺗﻴﺐ در ﺑﺎزﻩهﺎﯼ ] [-257,705] ،[3, 100و ] [-155,171ﻗﺮار ﺧﻮاهﻨﺪ داﺷﺖ. ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: )[L us vs] = xyz2luv (x, y, z اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ XYZرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ * L*u*vﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ]%scaling components to [0,1 ;x = double(x)/255 ;y = double(y)/255 ;z = double(z)/255 )% Reference White point definition (D65 ;]WP = [0.9504 1 1.0889 ;)x0 = WP(1 ;)y0 = WP(2 ;)z0 = WP(3 % scaling components to origin ranges. ;x = x*x0 ;y = y*y0 ;z = z*z0 *%Computing L )if (y > 0.008856 ;L = 116*(y^(1/3))-16 else ;L = 903.3 * y ;end )if ((x+15*y+3*z)==0 %preventing devide by zero ;us = 0 ;vs = 0 else ;)u = 4*x / (x+15*y+3*z ;)v = 9*y / (x+15*y+3*z ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 21 Advanced Information & Communication Technology Center %Computing U',V' for rference white point u0 = 4*x0 / (x0+15*y0+3*z0); v0 = 9*y0 / (x0+15*y0+3*z0); %Computing u*,v* us = 13*L*(u-u0); vs = 13*L*(v-v0); end; %scaling components to 8-bits values [L us vs] = Scale28bit(L,us,vs, 3,100, -257,705, -155,171); : ﺳﭙﺲ، ﺑﺮﻣﯽﮔﺮداﻧﻴﻢL*u*v* ﺑﺮاﯼ ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق ﻧﻴﺰ اﺑﺘﺪا ﻣﻘﺎدﯾﺮ دﯾﺠﻴﺘﺎﻟﯽ را ﺑﻪ ﻣﻘﺎدﯾﺮ ﺑﺎزﻩهﺎﯼ ﻣﻤﮑﻨﻪﯼ ⎧⎛ L + 16 ⎞3 ⎪⎜ ⎟ ⎪ Y = ⎨⎝ 116 ⎠ L ⎪ ⎪⎩ 903.3 V ' = V0 + X= if L ≤ 7.9996 V U , U ' = U0 + 13L 13L 9Y ) V' , 4 U '( if L > 7.9996 9Y − (X + 15Y) Z = V' 3 . ﺑﻴﺘﯽ ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ٨ [ ﺑﻮدﻩ و ﺑﺎﯾﺪ ﺑﻪ ﻣﻘﺎدﯾﺮ0, 1] ﺑﺪﺳﺖ ﺁﻣﺪﻩ در ﺑﺎزﻩﯼZ وY ،X ﻣﻘﺎدﯾﺮ.(X, Y, Z) = (0,0,0) ، ﺑﺎﺷﺪL = 0 اﮔﺮ:ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ [x y z] = luv2xyz (l, u, v) :ﻧﺎم ﺗﺎﺑﻊ . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪXYZ ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮL*u*v* ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ % scaling components to origin ranges. l = MyScale(l, 0,255, 3,100); us = MyScale(us, 0,255, -257,705); vs = MyScale(vs, 0,255, -155,171); % Reference White point definition (D65) WP = [0.9504 1 1.0889]; x0 = WP(1); y0 = WP(2); z0 = WP(3); % Reference white point in YU'V' Space u0 = 4*x0 / (x0+15*y0+3*z0); v0 = 9*y0 / (x0+15*y0+3*z0); %Cmputing Y if (l>7.9996) y = ((l+16)/116)^3; else y = l/903.3; end; % preventing devide by zero if (l==0) x = 0; z = 0; else 22 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ :ﺗﻮﺻﻴﻒ Advanced Information & Communication Technology Center ;)v = v0 + vs/(13*l ;)u = u0 + us/(13*l ;den = 9*y / v ;x = u*den /4 ;z = (den - (x+15*y))/3 ;end %scaling components to 8-bits values ;)x = uint8(x*255 ;)y = uint8(y*255 ;)z = uint8(z*255 ﻓﻀﺎﯼ رﻧﮓ *L*a*b ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ :ﺑﺮاﯼ ﺣﺮﮐﺖ از ﻓﻀﺎﯼ رﻧﮓ XYZﺑﻪ ﻓﻀﺎﯼ رﻧﮓ * ،L*a*bﺑﻪ ﺻﻮرت زﯾﺮ ﻋﻤﻞ ﻣﯽﮐﻨﻴﻢ)* Lدر اﯾﻦ ﻓﻀﺎ ،هﻤﺎن * Lدر ﻓﻀﺎﯼ *L*u*v ﻣﯽﺑﺎﺷﺪ(: ⎤⎞ ⎛ Y ⎥⎟ ⎜ ⎥⎦ ⎠ ⎝Y 0 ⎞ ⎡ ⎛X ⎟ −f ⎠ ⎣⎢ ⎝ X 0 ⎜ a * = 500 * ⎢f ⎞ ⎡ ⎛Y ⎤⎞ ⎛ Z ⎥ ⎟ ⎜ b * = 200 * ⎢f ⎜ ⎟ − f ⎠ ⎢⎣ ⎝Y 0 ⎦⎥ ⎠ ⎝ Z 0 ﮐﻪ در ﺁن Y0 ،X0و Z0ﻣﺨﺘﺼﺎت رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ ﻣﯽﺑﺎﺷﻨﺪ a* .ﻣﺘﻨﺎﻇﺮ ﻣﺤﻮر ﻗﺮﻣﺰ -ﺳﺒﺰ و * bﻣﺘﻨﺎﻇﺮ ﻣﺤﻮر زرد -ﺁﺑﯽ ﻣﯽﺑﺎﺷﺪ و fﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ: if t > 0.008856 if t ≤ 0.008856 1 ⎧ t3 ⎪ ⎨ = )f(t 16 ⎪7.787 * t + 116 ⎩ ﻧﮑﺘﻪهﺎﯼ ﭘﻴﺎدﻩﺳﺎزﯼ :اﮔﺮ از ﻣﻘﺎدﯾﺮ XYZدر ﺑﺎزﻩﯼ ] [0, 255اﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﻴﺪ ،ﻧﻴﺎزﯼ ﺑﻪ ﺗﻘﺴﻴﻢ ﻣﻮﻟﻔﻪهﺎ ﺑﺮ رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ ﻧﻴﺴﺖ .ﺑﻌﺪ از اﯾﻦ ﺗﺒﺪﯾﻞ ﻣﻘﺎدﯾﺮ * a* ،Lو * bﺑﻪ ﺗﺮﺗﻴﺐ در ﺑﺎزﻩهﺎﯼ ] [-416, 416] ،[3, 100و ] [-167, 167ﺧﻮاهﻨﺪ ﺑﻮد. )[L a b] = xyz2lab (x, y, z ﻧﺎم ﺗﺎﺑﻊ: ﺗﻮﺻﻴﻒ: اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ XYZرا ﺑﻪ ﻣﻘﺎدﯾﺮ ٨ﺑﻴﺘﯽ در ﻓﻀﺎﯼ * L*a*bﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ. ]%scaling components to [0,1 ;x = double(x)/255 ;y = double(y)/255 ;z = double(z)/255 *%Computing L )if (y > 0.008856 ;L = 116*(y^(1/3))-16 else ;L = 903.3 * y ;end )%Computing f(X/X0 )if (x > 0.008856 ;)fx = x^(1/3 else ;fx = 7.787 * x + 16/116 ;end ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 23 Advanced Information & Communication Technology Center %Computing f(Y/Y0) if (y > 0.008856) fy = y^(1/3); else fy = 7.787 * y + 16/116; end; %Computing f(Z/Z0) if (z > 0.008856) fz = z^(1/3); else fz = 7.787 * z + 16/116; end; %Computing a*,b* a = 500 * (fx - fy); b = 200 * (fy - fz); %scaling components to 8-bits values [L a b] = Scale28bit(L,a,b,3,100, -416,416, -167,167); ﻣﻌﺎدل اﺳﺖ ﺑﺎ X Z Y = = 0.008856 وL = 7.9996 ﻣﻌﺎدل اﺳﺖ ﺑﺎ = 0.008856 ﺑﺮاﯼ اﻧﺠﺎم دادن ﻋﮑﺲ ﺗﺒﺪﯾﻞ ﻓﻮق اﺑﺘﺪا ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ X0 Z0 Y0 : در ﻧﺘﻴﺠﻪ. f( ⎧⎛ L * +16 ⎞3 ⎪ Y ⎪⎜⎝ 116 ⎟⎠ =⎨ Y0 ⎪ L* ⎪⎩ 903.3 L ≥ 7.9996 , L < 7.9996 1 ⎧ ⎛ Y ⎞3 ⎪ ⎜ ⎟ ⎛ Y⎞ ⎪ ⎝ Y0 ⎠ f⎜ ⎟ = ⎨ Y ⎝ 0⎠ ⎪ Y 16 + ⎪7.787 * Y 116 0 ⎩ X Z ) = f( ) = 0.206893 X0 Z0 L ≥ 7.9996 L < 7.9996 :در ﻧﺘﻴﺠﻪ ⎛ X ⎞ a* ⎛ Y⎞ ⎛ Z ⎞ ⎛ Y ⎞ b* f⎜ ⎟ = +f⎜ ⎟ , f⎜ ⎟ = f⎜ ⎟− X 500 Y Z ⎝ 0⎠ ⎝ 0⎠ ⎝ 0⎠ ⎝ Y0 ⎠ 200 :و ﻧﻬﺎﯾﺘﺎ اﯾﻨﮑﻪ 3 ⎧ ⎛ X ⎞ ⎪ f⎜ ⎟ ⎪ ⎝ X0 ⎠ X ⎪ = ⎨⎛ ⎛ X ⎞ 16 ⎞ X0 ⎪ ⎜ f ⎜ ⎟ − ⎟⎟ ⎜ ⎪ ⎝ ⎝ X 0 ⎠ 116 ⎠ ⎪ 7.787 ⎩ ⎛ X ⎞ f ⎜ ⎟ ≥ 0.206893 ⎝ X0 ⎠ , ⎛ X f⎜ ⎝ X0 ⎞ ⎟ < 0.206893 ⎠ 3 ⎧ ⎛ Y⎞ ⎪ f⎜ ⎟ ⎪ ⎝ Y0 ⎠ Y ⎪ = ⎨⎛ ⎛ Y ⎞ 16 ⎞ Y0 ⎪ ⎜ f ⎜ ⎟ − ⎟⎟ ⎜ ⎪ ⎝ ⎝ Y0 ⎠ 116 ⎠ ⎪ 7.787 ⎩ ⎛ Y⎞ f ⎜ ⎟ ≥ 0.206893 ⎝ Y0 ⎠ ⎛ Y f⎜ ⎝ Y0 ⎞ ⎟ < 0.206893 ⎠ . ﻣﯽرﺳﻴﻢXYZ ﮐﻪ ﺑﺎ داﺷﺘﻦ ﻣﺸﺨﺼﺎت رﻧﮓ ﺳﻔﻴﺪ ﻣﺮﺟﻊ ﺑﻪ ﻓﻀﺎﯼ [x y z] = lab2xyz (l, a, b) :ﻧﺎم ﺗﺎﺑﻊ . ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪXYZ ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ را ﺑﻪ ﻣﻘﺎدﯾﺮL*a*b* ﺑﻴﺘﯽ در ﻓﻀﺎﯼ٨ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ % scaling components to origin ranges. l = MyScale(l, 0,255, 3,100); 24 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ :ﺗﻮﺻﻴﻒ Advanced Information & Communication Technology Center a = MyScale(a, 0,255, -416,416); b = MyScale(b, 0,255, -167,167); %computing Y and F(Y/Y0) if (l>=7.9996) fy = (l + 16)/116; y = fy ^ 3; else y = l/903.3; fy = 7.787*y + (16/116); end; %F(X/X0), F(Z/Z0) fx = a/500 + fy; fz = fy - b/200; %computing X if (fx >= 0.206893) x = fx ^ 3; else x = (fx - 16/116)/7.787; end; %computing Z if (fz >= 0.206893) z = fz ^ 3; else z = (fz - 16/116)/7.787; end; %scaling components to 8-bits values x = uint8(x*255); y = uint8(y*255); z = uint8(z*255); LCH ﻓﻀﺎهﺎﯼ ﻧﻤﺎﯾﺶ در ﻣﺨﺘﺼﺎت ﻗﻄﺒﯽ ﺑﻪ ﺗﺠﺎرب دﯾﺪارﯼ اﻧﺴﺎن. در ﻣﺨﺘﺼﺎت ﻗﻄﺒﯽ ﻣﯽﺑﺎﺷﺪL*a*b* وL*u*v* اﯾﻦ ﻓﻀﺎ ﺑﺮ ﭘﺎﯾﻪﯼ ﻓﻀﺎهﺎﯾﯽ:ﻣﺒﺎﻧﯽ ﻧﻈﺮﯼ .ﻧﺰدﯾﮏﺗﺮ از ﻧﻤﺎﯾﺶ در ﻣﺨﺘﺼﺎت ﮐﺎرﺗﺰﯾﻦ اﺳﺖ : ﺧﻮاهﻴﻢ داﺷﺖ، اﺳﺘﻔﺎدﻩ ﮐﻨﻴﻢL*a*b* اﮔﺮ از ﻣﺨﺘﺼﺎت ﻗﻄﺒﯽ ﻓﻀﺎﯼ L = L , C = a *2 +b *2 , Hab = a tan 2( b* ) a* :و ﺑﺮاﯼ ﻋﮑﺲ ﺁن −C ⎧ ⎪ 2 (tan(H ab )) + 1 ⎪ L = L , a* = ⎨ C ⎪ ⎪ (tan(H ))2 + 1 ab ⎩ 90 < Hab < 270 else 2 2 ⎪⎧ C − a * , b* = ⎨ ⎪⎩− C 2 − a *2 Hab ≤ 180 Hab > 180 : ﺧﻮاهﻴﻢ داﺷﺖ، اﺳﺘﻔﺎدﻩ ﮐﻨﻴﻢL*u*v* و اﮔﺮ از ﻣﺨﺘﺼﺎت ﻗﻄﺒﯽ ﻓﻀﺎﯼ L = L , C = u *2 + v *2 , Huv = a tan 2( u* ) v* :و ﺑﺮاﯼ ﻋﮑﺲ ﺁن 25 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ Advanced Information & Communication Technology Center −C ⎧ ⎪ 2 (tan(H uv )) + 1 ⎪ L = L , u* = ⎨ C ⎪ ⎪ (tan(H ))2 + 1 uv ⎩ 26 90 < Huv < 270 else 2 2 ⎪⎧ C − u * , v* = ⎨ ⎪⎩− C 2 − u *2 .©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ Huv ≤ 180 Huv > 180 Advanced Information & Communication Technology Center 11 ﻓﻀﺎهﺎﯼ رﻧﮓ – وﯾﮋﮔﯽهﺎ و ﮐﺎرﺑﺮدهﺎ ﻓﻀﺎﯼ رﻧﮓ RGB )CMY(K ﮐﺎرﺑﺮدهﺎ ﻣﻬﻤﺘﺮﯾﻦ وﯾﮋﮔﯽهﺎ • ﺳﻴﺴﺘﻢ رﻧﮓ ﺟﻤﻊﭘﺬﯾﺮ ،ﺷﺎﻣﻞ رﻧﮓهﺎﯼ ﭘﺎﯾﻪﯼ ﻗﺮﻣﺰ ،ﺳﺒﺰ ،ﺁﺑﯽ • ﻧﻤﺎﯾﺸﮕﺮهﺎﯼ CRT • ﺑﺮ ﭘﺎﯾﻪﯼ ﻧﻈﺮﯾﻪﯼ ﺳﻪرﻧﮕﯽ • دورﺑﻴﻦهﺎﯼ ﺗﻠﻮﯾﺰﯾﻮﻧﯽ • ﻓﻘﻂ ﻣﺨﺼﻮص ﺳﻴﺴﺘﻢهﺎﯼ ﻧﻤﺎﯾﺸﯽ • ﮔﺮاﻓﻴﮏ ﮐﺎﻣﭙﻴﻮﺗﺮﯼ • ﭘﻴﺎدﻩﺳﺎزﯼ و ﮐﺎرﺑﺮد ﺁﺳﺎن • و . ... • ﻏﻴﺮﺧﻄﯽ و ﻧﻴﻤﻪ ﺷﻬﻮدﯼ • واﺑﺴﺘﻪ ﺑﻪ وﺳﻴﻠﻪ )(Device dependent • رﻧﮓهﺎﯼ ﻣﮑﻤﻞ :ﻓﻴﺮوزﻩاﯼ ،ﺑﻨﻔﺶ ،زرد ،ﺳﻴﺎﻩ • ﭼﺎپ رﻧﮕﯽ • ﺑﮑﺎرﮔﻴﺮﯼ ﺁﺳﺎن • ﻋﮑﺲ رﻧﮕﯽ • ﺗﺒﺪﯾﻞ ﺑﻪ ﺁن از ﻓﻀﺎﯼ RGBﻣﺸﮑﻞ اﺳﺖ )ﻣﮕﺮ ﺑﺎ ﺑﻌﻀﯽ ﺳﺎدﻩاﻧﮕﺎرﯼهﺎ(. • ﻧﻘﺎﺷﯽ • واﺑﺴﺘﻪ ﺑﻪ .Device • • ﭼﺎﭘﮕﺮهﺎ و وﺳﺎﯾﻞ ﻧﻈﻴﺮ ﺁﻧﻬﺎ اﻏﻠﺐ داراﯼ رﻧﮓ ﺳﻴﺎﻩ ﺟﺪاﮔﺎﻧﻪ هﺴﺘﻨﺪ. ﺻﺮﻓﻪﺟﻮﯾﯽ در هﺰﯾﻨﻪ ﺑﻪ دﻟﻴﻞ اﺳﺘﻔﺎدﻩ از رﻧﮓ ﺳﻴﺎﻩ • ﻏﻴﺮﺧﻄﯽ و ﻏﻴﺮﺷﻬﻮدﯼ HSL HSI HSV HCI • اﻏﻠﺐ اﯾﻦ ﻓﻀﺎهﺎ ﺑﺎ ﯾﮏ ﺗﺒﺪﯾﻞ ﺧﻄﯽ از ﻓﻀﺎﯼ RGBﺑﺪﺳﺖ ﻣﯽﺁﯾﻨﺪ. • ﭘﺮدازش ﺗﺼﻮﯾﺮ • ﻏﻴﺮﺧﻄﯽ وﻟﯽ ﺑﺴﻴﺎر ﺷﻬﻮدﯼ • • واﺑﺴﺘﻪ ﺑﻪ دﺳﺘﮕﺎﻩ ﺟﺪاﺳﺎزﯼ ﻟﻮﻣﻴﻨﺎﻧﺲ ﻣﯽﺗﻮاﻧﺪ در ﭘﺮدازش ﺗﺼﻮﯾﺮ و ﺳﺎﯾﺮ ﮐﺎرﺑﺮدهﺎ، ﺑﺴﻴﺎر ﻣﻔﻴﺪ واﻗﻊ ﺷﻮد. YUV • YIQو YUVﻓﻀﺎهﺎﯼ ﺁﻧﺎﻟﻮگ ﺑﺮاﯼ NYSCو PALهﺴﺘﻨﺪ. • اﻧﺘﻘﺎﻻت ﺗﻠﻮﯾﺰﯾﻮﻧﯽ YIQ • YCbCrﺑﺮاﯼ ﺳﻴﺴﺘﻢهﺎﯼ دﯾﺠﻴﺘﺎل ﺑﮑﺎر ﻣﯽرود. • اﻧﺘﻘﺎل ﺗﺼﺎوﯾﺮ رﻧﮕﯽ YCbCr • ﺁﻧﻬﺎ ﻟﻮﻣﻴﻨﺎﻧﺲ را از ﮐﺮوﻣﻴﻨﺎﻧﺲ )ﻧﻮر را از رﻧﮓ( ﺟﺪا ﻣﯽﮐﻨﻨﺪ. • ﭘﺮدازش ﺗﺼﻮﯾﺮ YCC • واﺑﺴﺘﻪ ﺑﻪ دﺳﺘﮕﺎﻩ. • ﻓﺸﺮدﻩﺳﺎزﯼ ﺗﺼﻮﯾﺮ • ﻏﻴﺮﺷﻬﻮدﯼ ،ﻣﮕﺮ اﯾﻨﮑﻪ ﻣﺘﺨﺼﺺ ﺗﻠﻮﯾﺰﯾﻮن ﺑﺎﺷﻴﺪ. • ذﺧﻴﺮﻩﺳﺎزﯼ ﺗﺼﻮﯾﺮ • ﺳﻴﺴﺘﻢ PhotoCDﮐﺪاﮎ از ﻓﻀﺎﯼ YCCاﺳﺘﻔﺎدﻩ ﻣﯽﮐﻨﺪ ﮐﻪ ﯾﮏ ﻓﻀﺎﯼ رﻧﮓ Device Calibratedﻣﯽﺑﺎﺷﺪ. XYZ • رﯾﺸﻪ و ﭘﺎﯾﻪﯼ ﻋﻠﻮم رﻧﮓﺳﻨﺠﯽ )(Colorimetry • Y ،Xو Zﺑﺮاﯼ ﺗﻤﺎﻣﯽ رﻧﮓهﺎ داراﯼ ﻣﻘﺎدﯾﺮ ﻣﺜﺒﺖ ﻣﯽﺑﺎﺷﻨﺪ. • Yﺟﺰء ﻟﻮﻣﻴﻨﺎﻧﺲ رﻧﮓ ﻣﯽﺑﺎﺷﺪ. • • • ﻏﻴﺮﺧﻄﯽ. • ﺑﺼﻮرت ﯾﮑﻨﻮاﺧﺖ ﻗﺎﺑﻞ ﻣﺸﺎهﺪﻩ ﻧﻴﺴﺘﻨﺪ. • X=Y=Zﻣﺘﻨﺎﻇﺮ R=G=Bﺑﺎ اﻧﺮژﯼ ﻧﻮرﯼ ﯾﮑﺴﺎن ﻣﯽﺑﺎﺷﺪ. *L*U*V • ﺑﺮ ﭘﺎﯾﻪﯼ ﺳﻴﺴﺘﻢ ﺑﻴﻨﺎﯾﯽ اﻧﺴﺎن. *L*a*b • ﺗﻘﺮﯾﺒﺎ ﺧﻄﯽ ﺑﺎ درﮎ ﺑﺼﺮﯼ • ﻣﺴﺘﻘﻞ از دﺳﺘﮕﺎﻩ • ﮐﺎﻣﻼ ﻏﻴﺮﺷﻬﻮدﯼ ﺑﻪﻋﻨﻮان ﻓﻀﺎﯼ رﻧﮓ اﺳﺘﺎﻧﺪارد، اﻏﻠﺐ در ﺗﻌﺮﯾﻒ ﻓﻀﺎهﺎﯼ رﻧﮕﯽ دﯾﮕﺮ ﺑﻪﮐﺎر ﻣﯽرود. ﻣﻌﺎوﺿﻪﯼ دادﻩهﺎﯼ ﺗﺼﻮﯾﺮ رﻧﮕﯽ ﺑﻴﻦ دﺳﺘﮕﺎﻩهﺎﯼ ﻣﺨﺘﻠﻒ. • ﮐﺎﻟﻴﺒﺮاﺳﻴﻮن ﻣﺨﺘﻠﻒ • ﮐﺎﻟﻴﺒﺮاﺳﻴﻮن ﺑﺮاﯼ deviceهﺎﯼ ﻣﺨﺘﻠﻒ ﻧﻈﻴﺮ ﭼﺎﭘﮕﺮهﺎ ،دورﺑﻴﻦهﺎﯼ دﯾﺠﻴﺘﺎل و . ... ﺑﺮاﯼ deviceهﺎﯼ • ﻣﻌﺎوﺿﻪﯼ دادﻩهﺎﯼ ﺗﺼﻮﯾﺮ رﻧﮕﯽ ﺑﻴﻦ دﺳﺘﮕﺎﻩهﺎﯼ ﻣﺨﺘﻠﻒ. • ﻣﺪﯾﺮﯾﺖ رﻧﮓ • ﭘﺮدازش ﺗﺼﻮﯾﺮ http://www.digitalearth.net.cn/readingroom/Class-3/He Mingyi.doc ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 27 11 Advanced Information & Communication Technology Center ©ﮐﻠﻴﻪﯼ ﺣﻘﻮق اﯾﻦ ﻣﺴﺘﻨﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻣﺮﮐﺰ ﻓﻨﺎورﯼ اﻃﻼﻋﺎت و ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮﻓﺘﻪ ﺷﺮﯾﻒ اﺳﺖ. 28
© Copyright 2025 Paperzz