|
||
|
|||||||
![]() |
|
|
LinkBack | ابزارهای تاپيك | نحوه نمایش |
|
|
#1 (permalink) |
|
مدير کل انجمن و سایت
![]() Admin
|
اولين گام پردازش تصوير کار با رنگ نقاط (pixel) هستش. اما بايد بگم توی حالت عادی شما ۳ درجه رنگی از ۳ رنگ اصلی آبی و سبز و قرمز برای هر نقطه داريد که با کم و زياد شدن شدت هر مولفه اصلی رنگ حاصل تغيير ميکنه . اما تو پردازش تصوير اين فرمت اصلا به درد نمی خوره ! دليلش اينه که شما معمولا نياز به تشخيص يه محدوده رنگی خاص داريد مثلا رنگ حول و حوش صورتي, حالا با ۳ رنگ اصلی چطور می خوايد اين محدوده رو تعيين کنيد ؟! ميشه گفت محاله ممکنه
يا بهتر بگم اصلا عقلانی نيست دنبالش بريد.!!!پس بايد دنبال شيوه ای برای اون باشيم! برای هر رنگ ما ۳ مشخصه می تونيم نام ببريم : ۱- نام رنگ (چيز بهتری گير نيووردم بهش بگم -> Hue ) : اين يعنی اينکه رنگ چيه ! مثلا ميگی آبی يا آبی يکم متمايل به سبز يا .... ۲- شدت رنگ : اگه دقت کرده باشيد هر رنگ ميتونه پر رنگ يا کم رنگ باشه اما ماهيت ذاتی اون يه چيزه و فقط کم رنگ تر يا پررنگ تر شده به اين ميگن -> Saturation ۳- روشنايی يا تيرگی رنگ : يه رنگ رو می تونيد بهش نور بتابونيد که روشناييش زياد بشه يا نور رو کم کنيد که روشناييش کم بشه که ميتونه انقدر کم بشه که سياه بشه !! به اين ميگن->Intensity اميدوارم تونسته باشن خوب برسونم منظورم چيه ! پس يه حوضه جديد که الهام گرفته از چشم هستش رو باهاش آشنا شديم که کار روی رنگها برای تصميم گيری روی مشخصات اون رو راحت ميکنه. به اين حوضه رنگی اصطلاحا HSI ميگن که مخفف اون ۳کلمه بالاست. شکل زير نمودار تغييرات رنگ رو با توجه به اين ۳ مولفه نشون ميده: ![]() S بين ۰ تا ۱۰۰ هستش که از کم رنگ (۰) تا پر رنگ (۱۰۰) I از ۰ تا ۱۰۰ هستش يعنی از تاريک(۰) تا روشن(۱۰۰) چند نمونه از رنگها در ۲ حوضه مذکور : رنگ RGB مقادیرHSI مقادير سياه (255,255,255) (0,0,0) سفيد (255,255,255) (0,0,100) قرمز (255,0,0) (0,100,100) سبز (0,255,0) (120,100,100) آبی (0,0,255) (240,100,100) ! قهوه ای (64,128,128) (180,50,50) حالا نياز به اين داريم که RGB مربوط به هر نقطه را به HSI تبديل کنيم که رابطش رو به صورت سی نوشتم که r,g,b همون ۳ رنگ آبی و سبز و قرمز هر نقطه هستش: int min,max; ///////////////////// if(r>g) { max=r; min=g; } else { max=g; min=r; } if(b>max) max=b; if(b<min ) min=b; //////////////////// if(max==0) { i=0; s=0; h=0; } else { i=max*100/255; s=(max-min)*100/max; h=180*acos((((r-g)+(r-b))/2)/sqrt(pow(r-g,2)+(r-b)*(g-b)))/3.1415; if(b>g) h=360-h; }
__________________
فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد] فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد] فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد] فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد] فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد] فقط کاربراني که ثبت شده اند و فعال شده اند مي توانند لينکها را ببينند[براي ثبت نام اينجا را کليک کنيد]
|
|
|
|