PDA

View Full Version : تشخیص یک رنج رنگ



benyamin_pc
پنج شنبه 06 اردیبهشت 1386, 23:58 عصر
با سلام
هر رنگی یه رنجی داره که نور این رنج رو تخییر میده حالا اگه من یه رنگ داشته باشم چطوری میشه همید این تو کدوم رنجه؟
مثلا" یه رنگ خاص از نارنجی از کجا میشه فهمید این همون نارنجیه تو یه نور دیگه؟!

reza.palang
جمعه 07 اردیبهشت 1386, 00:19 صبح
منظورتون زیاد واضح نیست.
مطمئنا می دونی که هر رنگی 1 شماره رنگ داره و بوسیله این شماره، مقدار و رنگهای اصلی تشکیل دهنده اون استخراج میشه

Alireza_Salehi
جمعه 07 اردیبهشت 1386, 00:22 صبح
رنگها معمولا RGB ذخیره میشن که اون هم سه تا عدد 8 بیتیه !
تمام رنگها از تیره گرفته تا روشن با همین سه تا عدد ساخته میشن.

البته مدل های رنگ مختلفی وجود داره!

linux
جمعه 07 اردیبهشت 1386, 00:35 صبح
با سلام
هر رنگی یه رنجی داره که نور این رنج رو تخییر میده حالا اگه من یه رنگ داشته باشم چطوری میشه همید این تو کدوم رنجه؟
مثلا" یه رنگ خاص از نارنجی از کجا میشه فهمید این همون نارنجیه تو یه نور دیگه؟!
فکر نکنم کسی بتونه با این سوال اینجا جواب بده
منظور شما این هست یک جسم داریم که رنگش نارنجی هست حالا نور سبز به آن می تابانیم خوب رنگش عوض میشه حالا شما می خواهید ببنید که آیا این جسم رنگش همینی که هست بوده یا یک رنگ دیگر داشته؟!
به هر حال باید رنگ منبع نور را داشته باشید و جنس جسم را بدانید.
به نظر می رسه که درست کردن بر عکسش راحتر باشده یعنی با دانستن رنگ منبع نور و جنس و رنگ اولیه جسم میشه فهمید که بعد از تاباندن نور منبع به چه رنگی در خواهد آمد

benyamin_pc
جمعه 07 اردیبهشت 1386, 09:28 صبح
انگار منظور من رو کسی نفهمید!
به این عکس نگاه کنین
این مثلا" یه رنج برای آبی و قرمز هست که البته می تونه از این بیشتر هم بشه
من فقط همچین چیزی مد نظرم بود البته یه راه حل براش چیدا کردم ولی یکم کند جواب میده می خوام ببینم راهی نیست که سریعتر با الگوریتم بهتری بشه این کار رو کرد

reza.palang
جمعه 07 اردیبهشت 1386, 10:35 صبح
نمیدونم شاید هم بد متوجه شدیم
اما فکر میکنم کارتون با همون شماره رنگها راه بیفته.
سیستم RGB برای نشون دادن رنگ هر پیکسل از ترکیب 3 رنگ اصلی استفاده میکنه
Red - Green - Blue
که هرکدوم بین 0 و 255 متغیر هستن

reza.palang
جمعه 07 اردیبهشت 1386, 11:03 صبح
نمیدونم چرا درست upload نمیکنه. اینا نمونه هستن که شماره رنگ تغییر کرده.
این یکی نمونه خودت هستhttp://i14.tinypic.com/2dr75h5.jpg (http://barnamenevis.org/forum/%5BIMG%5Dhttp://i14.tinypic.com/2dr75h5.jpg%5B/IMG%5D)

http://i17.tinypic.com/4gzdjeq.jpg (http://barnamenevis.org/forum/%5BIMG%5Dhttp://i17.tinypic.com/4gzdjeq.jpg%5B/IMG%5D) http://i13.tinypic.com/2czzkva.jpg (http://barnamenevis.org/forum/%5BIMG%5Dhttp://i13.tinypic.com/2czzkva.jpg%5B/IMG%5D)الگوریتم خاصی هم نمیخواد. فقط باید بدونی اون رنگی که میخوای با چه رنگی تولید میشهhttp://barnamenevis.org/forum/%5BIMG%5Dhttp://i14.tinypic.com/2dr75h5.jpg%5B/IMG%5D
http://barnamenevis.org/forum/%5BIMG%5Dhttp://i17.tinypic.com/4gzdjeq.jpg%5B/IMG%5Dhttp://barnamenevis.org/forum/%5BIMG%5Dhttp://i13.tinypic.com/2czzkva.jpg%5B/IMG%5D

benyamin_pc
جمعه 07 اردیبهشت 1386, 11:17 صبح
شما دارین تو 256 کالر مقایسه می کنین در صورتی که وقتی 32 بیت رنگ بشه قضیه کلا" فرق داره اونوقت نور باعث میشه که همون آبی که شما کلا" قرمز رو توش 0 در نظر گرفتین و کار رو راحت کردین همون قرمز مقدار پیدا می کنه و با ترکیب اون با قاعده ای با آبی و سبز نور رو پدید میاره و باعث روشن و تیره شدن همون آبی تو انواع حالات دیگه میشه

benyamin_pc
جمعه 07 اردیبهشت 1386, 11:22 صبح
این عکس رو ببینین
این تازه 16 بیت هست!
اگه بخواهیم رنج آبی رو تو این نگا کنیم اون کادر میشه البته اگه رنگهای کناریش که چزی از آبی هستند رو در نظر نگیریم و بجای در نظر گرفتن 3 رنگ 10 رنگ در نظر بگیریم

reza.palang
جمعه 07 اردیبهشت 1386, 11:29 صبح
(البته این چیزی نبود که قبلا گفته بودی)
خب 0 هم یک عدد هست میشد بذاریم 123 حالا اگه توی 32 بیت رنگ هم مقدار بگیره در اصل قضیه فرقی نداره.
حالا این به کنار که تو این 4، 5 سالی که با رنگ سر و کار داشتم بیشتر از 16 بیت ندیدم که همون هم کارایی چندانی نداشت. 8 بیت نیازهای زیادی رو برطرف میکنه. چشم انسان همینقدر رو هم نمیتونه تشخیص بده .... 32 بیت :متعجب::عصبانی++:!!!!!!!!!

benyamin_pc
جمعه 07 اردیبهشت 1386, 11:53 صبح
آقا من زیاد از حرفات سر در نیاوردم!!
اما به نظرم باید بگم همچین چیزی بساز تا فبهمی به این سادگی ها که میگی نیست!
می خوام یه تکست باکس داشته باشم که توش یه کد رنگ بدیم بد بگه این کد شبیه یکی از 10 رنگ آبی سبز قرمز زرد سیاه سفید ارغوانی(سبز مایل به آبی)صورتی نارنجی بنفش است
در واقع این کد به کدوم یک از این رنگها می خوره

reza.palang
جمعه 07 اردیبهشت 1386, 14:00 عصر
روش کارمیکنم . البته قبلا یه چیزایی تو این مایه ها درست کردم. از اون چیزی که فکر میکنی ساده تره.
کلیات کار:
مقدار رنگ هر کدوم از کانال های رنگ رو با هر کدام از 10 رنگ موردنظر مقایسه میکنیم. 3 عدد برای هر رنگ بدست میاد (10*3=30). مقایسه اعداد متناظر و بدست اوردن اختلاف اونها نشون میده که هر رنگ به چه رنگی نزدیک تر هست.

benyamin_pc
جمعه 07 اردیبهشت 1386, 15:47 عصر
اگه بتونی سورس بذاری ممنون میشم

benyamin_pc
شنبه 08 اردیبهشت 1386, 08:22 صبح
R G B
ff ff ff
این مدل رو چطوری میشه به این مدل تبدیل کرد؟
R G B
255 255 255

benyamin_pc
شنبه 08 اردیبهشت 1386, 08:28 صبح
این مربوط به یک رنگ است که فقط نور اون کم و زیاد شده
کم و زیاد کردن نور یک رنگ طبق چه قاعده ای مقادیر RGB رو عوض می کنه؟

reza.palang
شنبه 08 اردیبهشت 1386, 09:36 صبح
R G B
ff ff ff
این مدل رو چطوری میشه به این مدل تبدیل کرد؟
R G B
255 255 255


اینا هگزادسیمال هستن. یعنی در مبنای 16. یه تبدیل مبنای ساده لازم داره

reza.palang
شنبه 08 اردیبهشت 1386, 09:46 صبح
این مربوط به یک رنگ است که فقط نور اون کم و زیاد شده
کم و زیاد کردن نور یک رنگ طبق چه قاعده ای مقادیر RGB رو عوض می کنه؟


عکسی که اینجا نیست اما فکر میکنم منظورت Alpha Channel (شفافیت) باشه.
این هم بین 0و 255 متغیر هست. وقتی یه object از نوع color میسازی یه property داره که اون رو برمیگردونه. (A) مخفف Alpha

benyamin_pc
شنبه 08 اردیبهشت 1386, 09:48 صبح
خوب معلومه مبنای 16 هست اما برای تبدیلش چی کار میشه کرد؟البته به طور دستی و توسط هیچ تابعی نباشه

benyamin_pc
شنبه 08 اردیبهشت 1386, 09:53 صبح
249.125.0

176.88.0
اینا هر دوشون نارنجی هستند
و آلفایی از توشون نمیشه در آورد
همش همون RGB هست که با تغییر تو یه نسبت خاص نورش کم و زیاد میشه من که نمی خوام یه Pixel رو تست کنم که کانال آلفا اونجا مشخص شه!

reza.palang
شنبه 08 اردیبهشت 1386, 10:02 صبح
این هم سورس برنامه. البته من برای 4 رنگ دلخواه تنظیمش کردم که میشه کم و زیاد یا رنگاش عوض بشه.
من از color object استفاده نکردم. اگه از این استفاده بشه خیلی بهتره.

reza.palang
شنبه 08 اردیبهشت 1386, 10:14 صبح
http://i19.tinypic.com/35kibeb.jpg (http://barnamenevis.org/forum/%3Ca%20href=)
اینا رنگایی هست که توی برنامه استفاده کردم

reza.palang
شنبه 08 اردیبهشت 1386, 10:24 صبح
تبدیل مبنا فرمول خیلی ساده ای داره:



FF = (15*16^0) + (15*16^1) = 255
--------------------------------


کانال آلفا جزو شماره رنگ حساب نمیشه
برای دسترسی به بعد چهارم رنگها همون جور که گفتم توی VS باید پراپرتی A رو ببینید. و توی برنامه های گرافیکی مثل فوتوشاپ opacity رو تغییر بده.

benyamin_pc
شنبه 08 اردیبهشت 1386, 10:26 صبح
بررسیش که کردم باز میام
ممنون

reza.palang
شنبه 08 اردیبهشت 1386, 10:28 صبح
یه چیزی یادم رفت بگم. اون برنامه 4 تا عدد میده که هر عدد نشون دهنده فاصله رنگ وارد شده با 4 تا رنگ داخل برنامه هست.

benyamin_pc
شنبه 08 اردیبهشت 1386, 10:56 صبح
آقا رضا اون نور و آلفا و محدوده رنگی که می گفتم اینجاس
شما اون موارد رو رعایت نکردین پس رنگ 221 255 250 که زرد است و فقط نورش نسبت به
28 255 243 (که اینم زرد است) بیشتر است را میگه به صورتی نزدیک تر ولی اونی که نورش کم تر هست رو میگه به سبز نزدیک تر البته باید همیشه بگه به سبز نزدیک تر

benyamin_pc
شنبه 08 اردیبهشت 1386, 11:00 صبح
اصلا" کلا" با نور مشکل داره
0 119 83 این یه رنگ سبز تیرس که برنامه شما میگه قرمز هست
اینا همش برای اینه که شما تو یه نور خاص اون بازه هاتون رو تعیین کردین در صورتی که باید طوری باشه که با در نظر گرفتن هر نوری روی اون رنگ بازم بازه تغییر کنه و بتونه تشخیص بده مثلا" سبز تیره سبز روشن و سبز تو هر شدت نوری رو بگه سبز هست و ..

PC2st
شنبه 08 اردیبهشت 1386, 21:18 عصر
0 119 83 این یه رنگ سبز تیرس که برنامه شما میگه قرمز هست
این رنگ به اصطلاح سبز پسته ایه! با در نظر گرفتن رنگ سبز تا این بازه (تا سبز پسته ای)، اگر بخوایم برای دیگر رنگها هم کد بنویسیم، اونوقت رنگ سرمه ای هم تا حدودیش آبی حساب میشه مگر اینکه خودمون بصورت یک استثنا، کاری کنیم که رنگ بنفش رو بصورت آبی تشخیص نده.

من هم یک برنامه ای نوشتم، توی اون برنامه، چون سبز پسته ای رو بعنوان رنگ سبز حساب کردم، اونوقت رنگ سرمه ای هم آبی رنگ به حساب میاد ! برنامه رو میگذارم، که فقط رنگهای قرمز و سبز و آبی و زرد و بنفش و فیروزه ای رو تشخیص میده. :متفکر:

در قسمت نمونه برنامه ها (http://www.barnamenevis.org/forum/showpost.php?p=333368&postcount=8) گذاشتمش.

reza.palang
یک شنبه 09 اردیبهشت 1386, 00:44 صبح
آقا رضا اون نور و آلفا و محدوده رنگی که می گفتم اینجاس
شما اون موارد رو رعایت نکردین پس رنگ 221 255 250 که زرد است و فقط نورش نسبت به
28 255 243 (که اینم زرد است) بیشتر است را میگه به صورتی نزدیک تر ولی اونی که نورش کم تر هست رو میگه به سبز نزدیک تر البته باید همیشه بگه به سبز نزدیک تر

ببین آلفا شفافیت رو تنظیم میکنه. وقتی تغییرش میدی پیزی که دیده میشه هم تغییر میکنه. (و همچنین شماره رنگ).وقتی این آلفای دردسر ساز رو کم میکنی رنگ آبجکت ما به شدت تحت تاثیر بکگراند قرار میگیره.
. مثال میزنم:
(00و 00و 00) این رنگ سیاهه
(204و204و204) این رنگ همون رنگ سیاه هست اما opacity اون یک پنجم شده.
حالا به نظر شما باید بگه این همون سیاهه؟ یا سفید بیشتر میشه حسابش کرد؟؟؟؟:متفکر:
و یه چیز دیگه یک رنگ سبز تیره (خیلی تیره) به قرمز تیره (این هم خیلی) نزدیک تره تا به سبز روشن اینجا هم تقریبان همین موصوع صادق هست.
اگه نگاهکنی میبینی تفاوت با صورتی با تفاوتی که با سبز داره 4 واحده یعنی خیلی کم. ایم نشون میده این رنگ بین این دو تاست


اصلا" کلا" با نور مشکل داره
0 119 83 این یه رنگ سبز تیرس که برنامه شما میگه قرمز هست
اینا همش برای اینه که شما تو یه نور خاص اون بازه هاتون رو تعیین کردین
*/اگه به کدی که تقدیم کردم دقت کنید میبینید که من توی بازه خاصی این کار رو نکردم. حتی محدود به 255 واحد هم نیست و حتی اگه عددی بیشتر از 255 هم بدید جواب میده. که عددی بی معنا خواهد بود. تنها قسمتی که محدود و مشخص کردم همون 4 تا رنگ هست.


مثلا" سبز تیره سبز روشن و سبز تو هر شدت نوری رو بگه سبز هست و ..

(اول بگم که این کلمه "نور" یه جورایی مبهم هست.)
اون برنامه نمیگه تیره هست. میگه توی اون 4 تا رنگ تعریف شده به اون قرمز خاص نزیدک تر هست تا به سه تای دیگه. عطف به پست قبل بگم که سبز تیره به قرمز تیره خیلی نزدیک تره تا به سبز روشن. تاکید میکنم که وقتی Opacity (یا همون Alfa) تغییر میکنه رنگ (و در نتیجه شماره رنگ) تغییر میکنه. پس نمیشه فقط گفت: "این همون رنگه فقط نورش کم تره."

اینکه یه رنگ به مثلا ابی نزدیک تره تا به سبز یه مقایسه بصری هست. مثل اینه که بگیم فلان بچه شبیه مامانش هست یا باباش؟ درسته که تو اینجور چیزا نظرها نزدیکه اما ممکنه یکی فکر کنو این بچه شبیه بابشه اون یکی نه.
یادمه یه فاکتور دیدم بعضی ها میگفتن سبزه بعضی ها میگفتن آبی (احتمالا این رنگ رو دیدین)
اما مشکل اینجاست که این چیزا پایه ریاضی نداره.

با تشکر از PC2st.ir که برنامش رو گذاشت.
اگه رنگ های (250, 255, 221) - (243, 255, 28) با برنامه ی PC2st.ir چک بشه میبینید یکی رو سبز نشون میده و یکی رو زرد.
و یا (83, 119, 0) که زرد نتیجه میده. که درست هم هست
البته هنوز نمیدونم الگوریتم اون چیه. وقت نشده نگاش کنم.

benyamin_pc
یک شنبه 09 اردیبهشت 1386, 18:17 عصر
این دقیق تره اما بازم باگ داره
203 247 254 این کجاش شبیه سبز؟و چند مورد دیگه که هست
اما من فکر می کنم بشه از این هم دقیق تر درست کرد البته یه راه خوب همونه که حداقل 10 رنگ را در نظر بگیریم

من با یه کامپایلر رنگ یه یه پیکسل رو می گیریم 4277354 همچین چیزی میده این تو چه مبناییه به چه فرمیه؟به فرم معمولیه rgb اگه بخواهیم ببریمش چجوری میشه؟ مثلا" شبیه 255 255 255

PC2st
یک شنبه 09 اردیبهشت 1386, 19:41 عصر
من با یه کامپایلر رنگ یه یه پیکسل رو می گیریم 4277354 همچین چیزی میده این تو چه مبناییه به چه فرمیه؟به فرم معمولیه rgb اگه بخواهیم ببریمش چجوری میشه؟ مثلا" شبیه 255 255 255


فکر کنم اینجوریه:

Color.FromArgb( 4277354 ).R
Color.FromArgb( 4277354 ).G
Color.FromArgb( 4277354 ).B

PC2st
یک شنبه 09 اردیبهشت 1386, 19:56 عصر
اینکه یه رنگ به مثلا ابی نزدیک تره تا به سبز یه مقایسه بصری هست. مثل اینه که بگیم فلان بچه شبیه مامانش هست یا باباش؟ درسته که تو اینجور چیزا نظرها نزدیکه اما ممکنه یکی فکر کنو این بچه شبیه بابشه اون یکی نه.
یادمه یه فاکتور دیدم بعضی ها میگفتن سبزه بعضی ها میگفتن آبی (احتمالا این رنگ رو دیدین)
اما مشکل اینجاست که این چیزا پایه ریاضی نداره.

دقیقا، با چشم نمیشه به راحتی تشخیص داد که یک رنگ در کدام بازه قرار داره و مثلا آبیه یا سبز... همچنین خیلی بهتر بود که اگه یک فرمولی واسش پیدا میشد.
دقیقا مطمئن نیستم، ولی شاید بکمک فرمول انحراف معیار (!) بشه یه جورائی تشخیص داد که دو رنگ (مثلا R, G) به هم نزدیک هستند تا در اونصورت اگر سبز (R) از اونها بیشتر بود، اونوقت مطمئن تر تشخیص میدادیم که رنگ سبزه یا ...

reza.palang
یک شنبه 09 اردیبهشت 1386, 20:55 عصر
این دقیق تره اما بازم باگ داره
203 247 254 این کجاش شبیه سبز؟و چند مورد دیگه که هست
اما من فکر می کنم بشه از این هم دقیق تر درست کرد البته یه راه خوب همونه که حداقل 10 رنگ را در نظر بگیریم

کدوم دقیق تره؟ متوجه منظورتون نمیشم.

203 247 254 - این اصلا شبیه سبز نیست اما توی اون رنگها به سبز بیشتر نزدیکه. اگه به عدد نگاه کنی میبینی 207 تا فاصله داره که کم نیست.
من یه رنگ زرد (پر رنگ، نزدیک نارمجی) به رنگهای برنامه اضافه کردم. نتیجه رو نمیگم خودت نگاه کن. این هم بگم که الگوریتم تغییر نکرده
اگه موارد دیگه رو هم بگی ممنون میشم.
شماره رنگهای مورد نظر رو بذار اینجا اضافه کنم به برنامه ببینم نتیجه چیه
(اگه رنگهایی که میخوای تست کنی رو هم بذاری اول تستش کنم بهتره)

http://i18.tinypic.com/43zfdwi.jpg (http://barnamenevis.org/forum/%5BIMG%5Dhttp://i18.tinypic.com/43zfdwi.jpg%5B/IMG%5D)

reza.palang
یک شنبه 09 اردیبهشت 1386, 21:44 عصر
دقیقا، با چشم نمیشه به راحتی تشخیص داد که یک رنگ در کدام بازه قرار داره و مثلا آبیه یا سبز... همچنین خیلی بهتر بود که اگه یک فرمولی واسش پیدا میشد.
دقیقا مطمئن نیستم، ولی شاید بکمک فرمول انحراف معیار (!) بشه یه جورائی تشخیص داد که دو رنگ (مثلا R, G) به هم نزدیک هستند تا در اونصورت اگر سبز (R) از اونها بیشتر بود، اونوقت مطمئن تر تشخیص میدادیم که رنگ سبزه یا ...

برای رنگای قرمز و سبز و آبی در سیستم RGB و برای رنگهای فیروزه ای، قرمز (magenta) ، زرد و سیاه در سیستم CMYK میشه این کار رو کرد. (توی سیستم های دیگه هم مطمئنا میشه ولی من با اونا زید کار نکردم)



این ها رو نگاه کنید: (تصحیح: شماره رنگ وسطی 255 ها 200 هستن)[/URL]

[URL="http://barnamenevis.org/forum/%5BIMG%5Dhttp://i17.tinypic.com/63tnl95.jpg%5B/IMG%5D"]http://i17.tinypic.com/63tnl95.jpg (http://barnamenevis.org/forum/%5BIMG%5Dhttp://i12.tinypic.com/4lpe8td.jpg%5B/IMG%5D)

اینا هر کدوم به چه رنگی نزدیک هستن؟ اولی به قرمز نزدیک تره یا آبی؟ (مقدار R و B هر دو 200 هست) . دومی همون رنگی هست که من گفتم هر کسی یه چیز میگه. یکی میگه آبی یکی میگه سبز. و همینطور سومی. نمیشه گفت که زرده یا سبز.
اولی به قرمز بیشتر میخوره. دومی به آبی نزدیک تره و سومی به زرد. این نظر منه و ممکنه که نظر شما چیز دیگه باشه. (خوشحال میشم بدونم. منظورم همه کسایی هست که این پست رو میبینن). اما واقعیت اینه که مقدار رنگ اینها توی هر کدوم از کانال های RGB به غیر از یکیشون با هم مساویه. پس همیشه هم آدمیزاد نمیتونه به چشمش اعتماد کنه (قابل توجه اونایی که به چشمشون اعتماد دارن:لبخند:) پس با این حساب این رنگ ها رو نمیشه فرموله کرد. حداقل با دانش الآن ما نمیشه.

benyamin_pc
یک شنبه 09 اردیبهشت 1386, 23:09 عصر
اما به نظر من فرمول دقیق داره و لازم نیست شما بیای ببینی که یه رنگ مات به چی می خوره کافیه اون رو با یه فرمول به یه استاندارد نزدیک کنی و بعد
البته من در این مورد قبلا" یه چیزیایی دیده بودم حالا وقت کردم این موشو رو به طور کامل تمومش می کنم نتیجرو می گم البته چند راه وجود داره از همین راهی که شماها رفتین اگه بازم بیایین بازه هارو کوچیکتر کنین منظورم اون الگوهایی هست که برای رنگا گرفتین باز بهتر میشه اونم که گفتم به سبز ربظی نداره برنامه آقا رضا نبود تو برنامه دوستمون پی سی دوست اشتباه این کد تشخیص داده میشه امتحان کنین نتیجرو ببینین
اما من از اون راهنماییتون آقای پی سی دوست برای تبدیل اون عدد به اون استاندارد چیزی نفهمیدم اگه بیشتر توضیح بدین ممنون میشم

Alireza_Salehi
یک شنبه 09 اردیبهشت 1386, 23:40 عصر
اما به نظر من فرمول دقیق داره و لازم نیست شما بیای ببینی که یه رنگ مات به چی می خوره کافیه اون رو با یه فرمول به یه استاندارد نزدیک کنی و بعد
البته من در این مورد قبلا" یه چیزیایی دیده بودم حالا وقت کردم این موشو رو به طور کامل تمومش می کنم نتیجرو می گم البته چند راه وجود داره از همین راهی که شماها رفتین اگه بازم بیایین بازه هارو کوچیکتر کنین منظورم اون الگوهایی هست که برای رنگا گرفتین باز بهتر میشه اونم که گفتم به سبز ربظی نداره برنامه آقا رضا نبود تو برنامه دوستمون پی سی دوست اشتباه این کد تشخیص داده میشه امتحان کنین نتیجرو ببینین
اما من از اون راهنماییتون آقای پی سی دوست برای تبدیل اون عدد به اون استاندارد چیزی نفهمیدم اگه بیشتر توضیح بدین ممنون میشم

گفتی استاندارد!
این استاندارد چیه و کجاست؟
تا جایی که من اطلاع دارم در پردازش تصاویر ، رنگ ها ، سایه ها و ... این کاربرده که استاندارد رو مشخص میکنه ، مثلا وقتی یک عکس رادیولوژی تهیه میشه هدف یه چیزه و وقتی یک عکس خانوادگی گرفته میشه هدف چیز دیگه ، یا مثلا یک عکس از ستارگان !

یه طور دیگه بگم وقتی شما با نور معمولی عکس میگیرید رنگ یک معنا داره و قتی با امواج عکس میگیرید رنگ یک معنای دیگه داره !

ممکنه همون طور که دوستمون مثال زدند در یک کاربرد یک رنگی رو سبز در نظر بگیرند و دریک کاربردی زرد!

در واقع شما باید با یک منطقی محدوده های مختلف رنگی رو تقسیم بندی کنید و این بستگی به دقت رنگ ، کاربرد رنگ و خیلی چیزهای دیگه داره!

reza.palang
یک شنبه 09 اردیبهشت 1386, 23:45 عصر
اما به نظر من فرمول دقیق داره و لازم نیست شما بیای ببینی که یه رنگ مات به چی می خوره کافیه اون رو با یه فرمول به یه استاندارد نزدیک کنی و بعد
البته من در این مورد قبلا" یه چیزیایی دیده بودم حالا وقت کردم این موشو رو به طور کامل تمومش می کنم نتیجرو می گم البته چند راه وجود داره از همین راهی که شماها رفتین اگه بازم بیایین بازه هارو کوچیکتر کنین منظورم اون الگوهایی هست که برای رنگا گرفتین باز بهتر میشه

نگفتی اون سه تا رنگ توی پست قبلی منچه رنگایی هستن.
خیلی دوست دارم بدونم این چه فرمولی هست گه بین دوتا 200 میتونه فرق بذاره:متعجب:. باید بتونه تا بگه این رنگ کدوم طرفی هست.
من مسئله رو خیلی ساده کردم. از 10 تا رنگ نه 3تا رنگ اصلی سیستم RGB رو میگم. اگه فقط این سه تا بودن کار خیلی خیلی ساده بود و نیازی به هیچ الگوریتم خاصی نبود. فقط سه تا تفریق و یک مقایسه. همین:متفکر:. اما سه رنگ پست قبلیم به هیچ عنوان و با هیچ فرمول و الگوریتمی نمیشه تشخیص داد که کدوم طرفی هست. این هم دلیل خیلی ساده ای داره ==> دقیقا روی مرز هستن. یعنی مقدار رنگ توی 2تا کانال مساوی هست. ==> 200=200
ساده تر از این فکر نمیکنم باشه. چه الگوریتمی میتونه 200=200 رو نقض کنه؟؟:متفکر:


نگفتی اون سه تا رنگ توی پست قبلی منچه رنگایی هستن.

benyamin_pc
دوشنبه 10 اردیبهشت 1386, 13:17 عصر
منظور من رو درست متوجه نشدین شایدم خودم منظورم رو درست بیان نکردم بعدا" درمودش دوباره پست می ذارم اما یکی اون عدد رو بگه چجوری میشه ازش مقادیر RGB رو در آورد

reza.palang
دوشنبه 10 اردیبهشت 1386, 14:40 عصر
منظور من رو درست متوجه نشدین شایدم خودم منظورم رو درست بیان نکردم بعدا" درمودش دوباره پست می ذارم
من هم همین پیشنهاد رو دارم بعدا در موردش صحبت کنید



اما یکی اون عدد رو بگه چجوری میشه ازش مقادیر RGB رو در آورد
کدوم عدد؟ 4277354؟؟ اینو که PC2st.ir توضیح دادن

PC2st
دوشنبه 10 اردیبهشت 1386, 16:02 عصر
اون عدد رو بگه چجوری میشه ازش مقادیر RGB رو در آورد

اینو که PC2st.ir توضیح دادن

دوباره توضیح میدم:
مثلا میخوایم رنگ 4277354 رو RGB هاش رو بگیریم، به همین خاطر:


Color myColor = Color.FromArgb(4277354);

به این طریق که رنگ رو در یک شی ریختیم، حالا به کمک خاصیت R از این متغیر، میشه به مقدار رنگ قرمز و به کمک خاصیت G به رنگ سبز و بکمک خاصیت B به مقدار رنگ آبی موجود در این شی، پی برد.
مثلا، کد زیر، مقدار رنگ آبی از 4277354 رو در textBox1 میریزه:


Color myColor = Color.FromArgb(4277354);
textBox1.Text = myColor.B;

PC2st
دوشنبه 10 اردیبهشت 1386, 16:18 عصر
اما به نظر من فرمول دقیق داره و لازم نیست شما بیای ببینی که یه رنگ مات به چی می خوره
احتمالش هست که اینجوری باشه...



در واقع شما باید با یک منطقی محدوده های مختلف رنگی رو تقسیم بندی کنید و این بستگی به دقت رنگ ، کاربرد رنگ و خیلی چیزهای دیگه داره!

مسلما همین جوریه و به قول reza.palang به راحتی نمیشه هر رنگی رو تشخیص داد. در واقع چون میخوایم مقدار 32 بیت رنگ رو به تنها 15 الی 16 رنگ تقلیل بدیم، پس خواه یا ناخواه، بعضی از رنگها مابین دو رنگ قرار میگیره.
دقیقا همین مشکلی که در برنامه من پیش اومده! یک برنامه دیگه ای نوشتم، الگوریتم منطقی تری با توجه به برنامه قبلی داره (سعی کردم برای تشخیص رنگ، از روابط ریاضی استفاده کنم تا if).
12 رنگ رو تشخیص میده ولی متاسفانه بعضی از رنگها مابین دو تا از اون 12 رنگ قرار میگیرند و من واقعا نمیدونستم که اون رنگ رو در چه رنجی قرار بدم! بهمین خاطر، به کمک یک سری ضریب عددی، محدودیت برای هر رنج رنگ گذاشتم. (که این ضرایب رو از روی تشخیص چشم (!) انتخاب کردم!) حالا ممکنه کس دیگه ای مخالف باشه با اون ضرایت و مثلا از نظر اون، رنگی که برنامه من میگه صورتیه، از نظر اون بنفش باشه ! (خوب، مشکلی نداره، توی سورسش ضرایب رو گذاشتم، اگر خواست ضرایب رو تغییر بده !!!)
یک نگاه به برنامه بندازین، الگوریتم بدی نداره، (فقط رنگهای سیاه و سفید رو تشخیص نمیده، یا مثلا صورتی کمرنگ رو با صورتی پر رنگ که شبیه به جیگری خودمونه! رو یک رنگ در نظر میگیره و میگه صورتیه !)
در قسمت نمونه برنامه ها گذاشتمش (http://www.barnamenevis.org/forum/showpost.php?p=334235&postcount=8).
رنگها رو تشخیص میده ولی هنوز برای سفید و سیاه کاری نمیکنه. (برای اون هم میشه از میانگین رنگها (R و G و B) استفاده کرد، اگر میانگینشون کمتر از 64 بود، به سیاه میخوره و رنگش تیره است اگر بیشتر از 192 بود، رنگش روشنه)

benyamin_pc
دوشنبه 10 اردیبهشت 1386, 21:29 عصر
دوباره توضیح میدم:
مثلا میخوایم رنگ 4277354 رو RGB هاش رو بگیریم، به همین خاطر:


Color myColor = Color.FromArgb(4277354);

به این طریق که رنگ رو در یک شی ریختیم، حالا به کمک خاصیت R از این متغیر، میشه به مقدار رنگ قرمز و به کمک خاصیت G به رنگ سبز و بکمک خاصیت B به مقدار رنگ آبی موجود در این شی، پی برد.
مثلا، کد زیر، مقدار رنگ آبی از 4277354 رو در textBox1 میریزه:


Color myColor = Color.FromArgb(4277354);
textBox1.Text = myColor.B;


اگه دقت کنین گفتم با یه کامپایلر دیگه اونو نوشتم و یه راه دستی می خوام

reza.palang
دوشنبه 10 اردیبهشت 1386, 21:57 عصر
اگه دقت کنین گفتم با یه کامپایلر دیگه اونو نوشتم و یه راه دستی می خوام

دقت کنید میبینید هیچ جا نگفتید "یه راه دستی می خواهید". تا حایی که من یادم هست 3، 4 جا از این عبارت استفاده کردید:"نتونستم منظورم رو برسونم". یه مقداری توی تفهیم منظورتون دقت کنید.
بگزریم... من که الگوریتم دستی این تبدیل رو ندارم. راستش تا الان مصرفی نداشتم که بخوام دنبالش بگردم

reza.palang
سه شنبه 11 اردیبهشت 1386, 00:30 صبح
PC2st.ir کد شما خیلی پیچیده هست. اونقدر ها هم که داستان عجیب غریب نیست.
ایشالا اگه تا اخر هفته وقت شد یه توضیح در مورد این رنگها و تفاوتشون باهم مینویسم. اخه یه مدتی نیستم.
اگه میشه 1 توضیحی در مورد الگوریتمتون بنویسید. (به خصوص ضرایب )

benyamin_pc
دوشنبه 17 اردیبهشت 1386, 23:25 عصر
یکی جواب ما رو نداد اگه میشه با 10 رنگ این کار رو انجام بدین : ارغوانی : آبی : زرد :سبز :قرمز :صورتی :بنفش :سیاه :سفید و نارنجی
ضمنا" این کار را کاملا" دستی انجام بدین بدون استفاده از هیچ تابع آماده ای و کاملا" کار با اعداد هگزا فقط باشه نه هیچ چیز دیگه ضمنا" یه چیز دیگه مثلا" اگه یه برنامه بخواهیم بسازیم که با تیره و روشن شدن یه رنگ تضخیص بده که این رنج تغییر نکرده و فقط تیره شده چه باید کرد؟به عکس زیر نگاه کنین


اون ناحیه هایی که با کادر آبی نشون دادم فقط تیرگی یا روشنی رنگ سبز رو مشخص میکنه که با تغییر اون رنگ تو کادر قرمز تغییر نمی کنه
حالا برنامه چطور تشخیص بده که با بالا و پایین شدن اون اهرم حتی تا حد خیلی تیره در رنگ مثلا" سبز هنوز این همان رنجی هست که داخل کادر قرمز بوده و رنج کادر قرمز تغییر نکرده فقط کادر آبی تغییر کرده که اونم هر چی تیره یا روشن بشه باز کادر قرمز رو جابجا نمی کنه
رنگ سبز می تونه بین کادر قرمز و سیاه تغییر کنه و تو همون رنج رنگ می تونه تو کادر آبی تیره یا روشن شه

PC2st
سه شنبه 18 اردیبهشت 1386, 00:26 صبح
اگه میشه 1 توضیحی در مورد الگوریتمتون بنویسید. (به خصوص ضرایب )
ببخشید، این پست رو ندیدم و اینقدر دیر جواب میدم:

الگوریتم:

ابتدا یک تابع نوشتم که مشخص میکنه که رنگ سبز، قرمز یا آبیه. اینکار توسط تابع ColorIsBase صورت میگیره. این تابع سه پارامتر میگیره، پارامتر اول و دوم برای رنگهائی هستند که باید کمتر باشند و پارامتر سوم هم برای رنگی هست که به نسبت اولی و دومی به مقدار بیشتری وجود داره. در اینصورت، در صورتی که مقدار رنگ سوم از اول و دوم بیشتر باشه، این تابع مقدار True رو برمیگردونه و در نتیجه، نوع رنگ بعنوان رنگ سوم تشخیص داده میشه.

نحوه پیاده سازی تابع:

ابتدا فرض میکنیم که رنگهای اول و دوم را داریم و حال رنگ سوم باید مقدارش به گونه ای باشد که بعد از ترکیب هر سه رنگ، رنگ سوم بیشتر نمایان باشد. تا تابع مقدار True را برگرداند. رنگ اول و دوم و سوم را به ترتیب به عنوان پارامتر اول تا سوم به متد ColorIsBase میفرستیم. متد ColorIsBase فقط در صورتی میتوان از آن استفاده کرد که بخواهیم یک رنگ اصلی مثل آبی یا قرمز یا سبز را تشخیص دهیم، برای رنگهائی که از ترکیب این رنگها بدست میآید از متد ColorIsDouble استفاده میکنیم.

بعبارت دیگه، رنگ اول و دوم رو داریم، حال باید رنگ سوم range مشخصی داشته باشد تا بعد از ترکیب این سه رنگ، اثر رنگ سوم از بین نرود و رنگ سوم غالب بر رنگهای اول و دوم باشد تا از ترکیب این سه رنگ، بتوان گفت این رنگ، شبیه به رنگ سوم است. برای این منظور، رنگ سوم باید با فاصله مناسبی، بیشتر از، بزرگترین رنگ بین رنگهای اول و دوم، باشد. این فاصله مناسب همان اختلاف بین دو رنگ اول و دوم است که با ضرب کردن در یک ضریب بخصوص، میتوان اثر این اختلاف را بیشتر یا کمتر در نظر گرفت (یعنی به همان فاصله که رنگهای اول و دوم از هم اختلاف دارند، به همان فاصله باید رنگ سوم از بزرگترین یکی از آن دو رنگ، بزرگتر باشد). پس در اینصورت، تابع مقدار درست را برمیگرداند.

مثلا سه رنگ 64, 60, 192 رو در نظر بگیرید (از راست به چپ: قرمز، سبز، آبی مشخص شده اند) همانطور که میبینید رنگ آبی (192) بیشتر از دو رنگ دیگر است، پس ترکیب این رنگها به آبی نزدیکتر است. و همانطور که میبینید، رنگ آبی باید از بزرگترین دو رنگ قرمز (64) و سبز (60) (بزرگترین اینها میشه 64) بعلاوه اختلاف این دو رنگ (میشه 4)، باید بیشتر باشد، یعنی رنگ آبی باید از 64+4=68 بیشتر باشه تا ترکیب این رنگها به آبی بخوره و تابع مقدار True را برگرداند.

عملکرد تابع ColorIsDouble هم شبیه به همین تابع هست با این تفاوت که برای رنگهائی هست که از دو رنگ تشکیل شده اند مثلا رنگ آبی باید از کوچکترین مقدار بین دو رنگ قرمز و سبز (که میشه زرد) به فاصله معینی، کوچکتر باشد تا رنگ زرد بوجود بیاد. (اون فاصله معین همان اختلاف بین دو رنگ قرمز و زرد هست با یک ضریب خاص تا اثر این اختلاف کم یا زیاد بشه، تقریبا مثل همون تابع ColorIsBase)


با تیره و روشن شدن یه رنگ تضخیص بده که این رنج تغییر نکرده و فقط تیره شده چه باید کرد؟به عکس زیر نگاه کنین
مثلا اگر رنگ سبز رو بصورت 64, 225, 64 انتخاب کنیم، اگه دقت کنید، میبینید که با بالا و پائین کردن دکمه در کادر آبی رنگ، بین رنگ سبز با رنگهای قرمز و آبی، یک فاصله ای هست که به نسبت مشخصی باقی میمونه، اگر اون نسبت پیدا بشه، مشکل تقریبا حل شده و تنها موردی که باقی میمونه، تشخیص این هست که علاوه بر همون تنظیم نور (کادر آبی)، کادر قرمز رنگ باید چه محدودیتی داشته باشه، تا از رنگ سبز تغییر نکنه. (در اون برنامه ای که گذاشتم، فقط همون کادر قرمز رو میخواستم موقعیت اش رو برای هر رنگ تعیین کنم، ولی بهر حال یک مورد دیگه ای که هست، اون کادر دارای یک عرض و یک ارتفاعه، من هنوز برای محدود کردن ارتفاعش، چیزی پیدا نکردم)

benyamin_pc
سه شنبه 18 اردیبهشت 1386, 10:52 صبح
مثلا اگر رنگ سبز رو بصورت 64, 225, 64 انتخاب کنیم، اگه دقت کنید، میبینید که با بالا و پائین کردن دکمه در کادر آبی رنگ، بین رنگ سبز با رنگهای قرمز و آبی، یک فاصله ای هست که به نسبت مشخصی باقی میمونه، اگر اون نسبت پیدا بشه، مشکل تقریبا حل شده و تنها موردی که باقی میمونه، تشخیص این هست که علاوه بر همون تنظیم نور (کادر آبی)، کادر قرمز رنگ باید چه محدودیتی داشته باشه، تا از رنگ سبز تغییر نکنه. (در اون برنامه ای که گذاشتم، فقط همون کادر قرمز رو میخواستم موقعیت اش رو برای هر رنگ تعیین کنم، ولی بهر حال یک مورد دیگه ای که هست، اون کادر دارای یک عرض و یک ارتفاعه، من هنوز برای محدود کردن ارتفاعش، چیزی پیدا نکردم)
قربون آدم چیز فهم:تشویق:
از اول این بحث من فقط دنبال همین نسبتم که قرمز هست همین اصلا" منظور من اون چیزی نبود که آقا پلنگ می گفت این رو شما سبز می بینی یا آبی :: حالا سبز یا آبی می خوام وقتی نورش تغییر می کنه تضخیص داد که این هنوز همون رنج هست همین داداش

benyamin_pc
سه شنبه 18 اردیبهشت 1386, 10:59 صبح
من خیلی سعی کردم یه فرمولی برای تغییر اون کد ها یا به عبارتی فرمولی برای اون نسبت پیدا کنم اما اون نسبت با توجه به هر رنگی تغییر می کنه و این کار رو سخت می کنه البته به یه چیزایی رسیدم
نا گفته نباشه که اون نسبت 100% یه فرمول داره و فکر نکنین که محال
این همون فرمولی هست که من منظورم بود از اول بحث و آقا رضا با یه چی دیگه اشتبا گرفته بود و فکر می کرد من تشخیص رنگ های بصری رو فرمول ازش می خوام


راستی من یه جا همچین چیزی دیدم ببینین همین نیست؟ چون خودم که با این فرمول کار کردم جواب نداد

light=sqrt(r^2+g^2+b^2 ) l

این فرمول نور باید باشه که فکر می کنم با اضافه و کم کردن به کد اصلی اون رو تیره و روشن کنه در واقع همون نسبته باید باشه
90% فکر می کنم به همین ربط داشته باشه اما باش کار کردم درست حسابی نشد شمام باش کار کنین

PC2st
سه شنبه 18 اردیبهشت 1386, 19:36 عصر
این فرمول، برای همه رنگها یکسان عمل میکنه، مثال میزنم، رنگ 64, 60, 68 رو اگر در فرمول بالا بگذاریم، با رنگ 60, 64, 68 و رنگ 68, 60, 64 و ... اون فرمول برای همشون یک نوع مقدار رو برمیگردونه. بعبارت دیگه، این فرمول برای نوع رنگ، تفاوت قائل نمیشه و فقط به کمک اون، میشه تشخیص داد که رنگ روشنه یا تاریک که روشنی یا تاریکی رو هم به درستی پیدا نمیکنه.
مثلا:


light1 = sqrt( 64^2 + 255^2 + 96^2 ) = 279.9
light2 = sqrt( 160^2 + 160^2 + 160^2 ) = 277
light3 = sqrt( 255^2 + 255^2 + 255^2 ) = 441.7

light1 و light2 علی رغم تفاوت زیادی که با هم دارند، یک مقدار رو برمیگردانند.
light3 از 255 بیشتر شد، پس بازه این فرمول از 0 است تا 441.7

اگر بشه رنگها رو به شکل زیر به خطوطی تقسیم کرد، خیلی خوب میشه.

PC2st
سه شنبه 18 اردیبهشت 1386, 19:45 عصر
آقا پلنگ می گفت این رو شما سبز می بینی یا آبی :: حالا سبز یا آبی می خوام وقتی نورش تغییر می کنه تضخیص داد که این هنوز همون رنج هست همین داداش
منظور reza.palang تشخیص مرز بین دو رنگ بود (تقریبا همون خطوطی که در عکس قبل مشخص کردم)، بعبارت دیگه، باید مرز بین دو رنگ تعیین بشه تا در هنگام تغییر روشنائی، بشه تشخیص داد که کدوم رنگ بوده که روشن تر یا تاریک تر شده، مثلا رنگ نارنجی رو اگر تاریک کنیم، میشه قهوه ای و اگر بگیم که این نارنجیه، کسی قبول نمیکنه.

benyamin_pc
چهارشنبه 19 اردیبهشت 1386, 12:04 عصر
مثلا اگر رنگ سبز رو بصورت 64, 225, 64 انتخاب کنیم، اگه دقت کنید، میبینید که با بالا و
پائین کردن دکمه در کادر آبی رنگ، بین رنگ سبز با رنگهای قرمز و آبی، یک فاصله ای هست که به نسبت مشخصی باقی میمونه، اگر اون نسبت پیدا بشه، مشکل تقریبا حل شده و تنها موردی که باقی میمونه، تشخیص این هست که علاوه بر همون تنظیم نور (کادر آبی)، کادر قرمز رنگ باید چه محدودیتی داشته باشه، تا از رنگ سبز تغییر نکنه. (در اون برنامه ای که گذاشتم، فقط همون کادر قرمز رو میخواستم موقعیت اش رو برای هر رنگ تعیین کنم، ولی بهر حال یک مورد دیگه ای که هست، اون کادر دارای یک عرض و یک ارتفاعه، من هنوز برای محدود کردن ارتفاعش، چیزی پیدا نکردم)


دیگه خرابش نکن همین چیزی که خودت گفتی اصلش همینه اصلا" مهم نیست که این رنگ شبیه قهوهای هست یا نارنجی اون یه گزینه بصریه که حالا با تفکیک بهتر به هر روشی که بهتر جواب بده حالا یا با اون خط هایی که شما کشیدی یا به حر روش دیگه ای میشه نتیجه بهتر داشت
اما اصل مطلب همینه که اون نسبت به دست بیاد بعد میشه توسط اون نسبت کد رو حالا هگز یا هر چی به یه استاندارد ثابت برای همه رنگ ها در آورد به یه سطح محدود آورد و ...

PC2st
پنج شنبه 20 اردیبهشت 1386, 00:41 صبح
دیگه خرابش نکن همین چیزی که خودت گفتی اصلش همینه
چشم :)

تقریبا رابطه اش رو پیدا کردم، مثلا اگر r=192 و g=128 و b=64 باشه، همونطور که میبینید اگر r رو بر g تقسیم کنیم، یک نسبت بوجود میآد که مقدارش 1.5 هست و اگر r رو بر b تقسیم کنیم، نسبتی به مقدار 3 بدست میآد. حال تمام رنگهائی که این نسبت بین این رنگها برابر باشه، همون رنگه با این تفاوت که روشن تر یا تیره تر شده. :)
با توجه به اینکه برای روشن تر شدن، زمانی که بزرگترین رنگ (192) به 255 برسه، این نسبتها تا حدودی بهم میریزه تا به رنگ سفید برسه.

benyamin_pc
پنج شنبه 20 اردیبهشت 1386, 10:22 صبح
اینی که گفتین تو هر رنگی ثابت؟یعنی این نسبت رو رو هر رنگی حالا زرد قرمز یا هر چی اعمال کنیم باعث تیره و روشن شدن اون میشه؟ضمنا" تو هر نوری از هر رنگی باز این کار می کنه؟
اگه این نسبت درست باشه 90% همه چیز حله

PC2st
جمعه 21 اردیبهشت 1386, 00:00 صبح
میشه؟ضمنا" تو هر نوری از هر رنگی باز این کار می کنه؟
تا اونجائی که فهمیدم، آره.

reza.palang
دوشنبه 24 اردیبهشت 1386, 00:24 صبح
سلام به همه دوستان یه مدتی نبودم خوش گذشت؟
سعی میکنم پست ها رو به ترتیب چک کنم

ضمنا" یه چیز دیگه مثلا" اگه یه برنامه بخواهیم بسازیم که با تیره و روشن شدن یه رنگ تضخیص بده که این رنج تغییر نکرده و فقط تیره شده چه باید کرد؟به عکس زیر نگاه کنین
اگر مقادیر RوGو B رو به یه اندازه کم یا زیاد کنید نتیجه حاصل میشه. یعنی رنگ بدست اومده روشن تر یا تیره تر میشه. تنها ایراد اینه که اگر توی عرض پالت رنگ حتی یک پیکسل جابجا بشیم (همون علامت توی کادر قرمز) نتیجه دلخواه رو نمیده. که برای حلش راه های مختلفی هست


اون ناحیه هایی که با کادر آبی نشون دادم فقط تیرگی یا روشنی رنگ سبز رو مشخص میکنه که با تغییر اون رنگ تو کادر قرمز تغییر نمی کنه
کادر آبی مقادیر R, Gو B رو به یه اندازه کم و زیاد میکنه. توی کادر قرمز رینگ رو نشون نمیده فقط دو بعد اون رو نشون میده. رنگ اصلی توی یه کادر دیگه مشون داده میشه


حالا برنامه چطور تشخیص بده که با بالا و پایین شدن اون اهرم حتی تا حد خیلی تیره در رنگ مثلا" سبز هنوز این همان رنجی هست که داخل کادر قرمز بوده و رنج کادر قرمز تغییر نکرده فقط کادر آبی تغییر کرده که اونم هر چی تیره یا روشن بشه باز کادر قرمز رو جابجا نمی کنه
اینکه برنامه چجوری تشخیص بده رو که بالا گفتم. اما اگه همون اهرم به سیاه مطلق برسه دیگه این امکان نیست (که اگه نسبت ها درست رعایت شوند این اتفاق نمیافته)


رنگ سبز می تونه بین کادر قرمز و سیاه تغییر کنه و تو همون رنج رنگ می تونه تو کادر آبی تیره یا روشن شه

مرز کادر سیاه رو چجوری میخوای مشخص کنی؟ یعنی چجوری باید مرز سبز و رنگ بغلیش مشخص بشه؟؟/؟

reza.palang
دوشنبه 24 اردیبهشت 1386, 00:34 صبح
قربون آدم چیز فهم:تشویق:
از اول این بحث من فقط دنبال همین نسبتم که قرمز هست همین اصلا" منظور من اون چیزی نبود که آقا پلنگ می گفت این رو شما سبز می بینی یا آبی :: حالا سبز یا آبی می خوام وقتی نورش تغییر می کنه تضخیص داد که این هنوز همون رنج هست همین داداش

اولا قبول دارم که منظورت رو بد متوجه شدم اما شما هم قبول کن مفهوم رو بد رسوندی.
اما همونجور که تو پست قبلی کفتم باز این مسئله مرز بین رنگ سبز و رنگ بغلیش وجود داره که یه راهش اینه که 255 رنگ رو به عنوان رنگ پایه در نظر بگیری و یه راه دیگه اینه که پالت رنگ رو تقسیم کنی. که این یکی ساده تره اما ممکن هست اشتباهاتی رو ایجاد کنه

reza.palang
دوشنبه 24 اردیبهشت 1386, 01:00 صبح
دیگه خرابش نکن همین چیزی که خودت گفتی اصلش همینه اصلا" مهم نیست که این رنگ شبیه قهوهای هست یا نارنجی اون یه گزینه بصریه که حالا با تفکیک بهتر به هر روشی که بهتر جواب بده حالا یا با اون خط هایی که شما کشیدی یا به حر روش دیگه ای میشه نتیجه بهتر داشت
اما اصل مطلب همینه که اون نسبت به دست بیاد بعد میشه توسط اون نسبت کد رو حالا هگز یا هر چی به یه استاندارد ثابت برای همه رنگ ها در آورد به یه سطح محدود آورد و ...

کسی که خواب هست رو میشه بیدار کرد ولی کسی که خودش رو به خواب زده رو نمیشه بیدار کرد


راستی من یه جا همچین چیزی دیدم ببینین همین نیست؟ چون خودم که با این فرمول کار کردم جواب نداد

light=sqrt(r^2+g^2+b^2 ) l

این فرمول نور باید باشه که فکر می کنم با اضافه و کم کردن به کد اصلی اون رو تیره و روشن کنه در واقع همون نسبته باید باشه
90% فکر می کنم به همین ربط داشته باشه اما باش کار کردم درست حسابی نشد شمام باش کار کنین

این فرمول، برای همه رنگها یکسان عمل میکنه، مثال میزنم، رنگ 64, 60, 68 رو اگر در فرمول بالا بگذاریم، با رنگ 60, 64, 68 و رنگ 68, 60, 64 و ... اون فرمول برای همشون یک نوع مقدار رو برمیگردونه. بعبارت دیگه، این فرمول برای نوع رنگ، تفاوت قائل نمیشه و فقط به کمک اون، میشه تشخیص داد که رنگ روشنه یا تاریک که روشنی یا تاریکی رو هم به درستی پیدا نمیکنه.
مثلا:


light1 = sqrt( 64^2 + 255^2 + 96^2 ) = 279.9
light2 = sqrt( 160^2 + 160^2 + 160^2 ) = 277
light3 = sqrt( 255^2 + 255^2 + 255^2 ) = 441.7
light1 و light2 علی رغم تفاوت زیادی که با هم دارند، یک مقدار رو برمیگردانند.
light3 از 255 بیشتر شد، پس بازه این فرمول از 0 است تا 441.7

اگر بشه رنگها رو به شکل زیر به خطوطی تقسیم کرد، خیلی خوب میشه.

این فرمول مال تیرگی وروشنایی رنگ ها نیست. عددی که بدست میده فاصله رنگ با رنگ سیاه (0،0،0)هست. این همون فرمولی هست که من توی کد برنامه خودم استفاده کردم. اما با یه تفا.ت کوچیک و اون هم اینه که بجای رنگ سیاه (0،0،0) رنگهای تعریف شده در برنامه و یا رنگ دلخواه رومیشه وارد کرد.

reza.palang
دوشنبه 24 اردیبهشت 1386, 01:38 صبح
تقریبا رابطه اش رو پیدا کردم، مثلا اگر r=192 و g=128 و b=64 باشه، همونطور که میبینید اگر r رو بر g تقسیم کنیم، یک نسبت بوجود میآد که مقدارش 1.5 هست و اگر r رو بر b تقسیم کنیم، نسبتی به مقدار 3 بدست میآد. حال تمام رنگهائی که این نسبت بین این رنگها برابر باشه، همون رنگه با این تفاوت که روشن تر یا تیره تر شده. :)
با توجه به اینکه برای روشن تر شدن، زمانی که بزرگترین رنگ (192) به 255 برسه، این نسبتها تا حدودی بهم میریزه تا به رنگ سفید برسه.

متاسفانه باید بگم این فرمولتون درست نیست. هنوز راه حلی برای این موضوع پیدا نکردم اما این رو که امتحان کردم دیدم درست کار نمیکنه.
دلیل:
حتمان میدونید اگه بخواهیم روشنایی (brightness) رنگ رو ببینیم باید modeرنگ رو به grayscale ببریم من با 4 تا رنگ این کار رو کردم. که نسبت های رنگ های خاکستری که در ردیف پایین هستن با هم مساوی هست. اما رنگهای بالا که روشنایی هر کدوم با رنگ پایینش یکی هست همون تناسب رو ندارن.

----------------------------------------------------------------
| (100, 50, 25) | (140, 70, 35) | (200,100,50) | ( 0 , 0 ,255) |
----------------------------------------------------------------
| ( 64, 64, 64) | ( 90, 90, 90) | (129,129,129)| (129,129,129) |
----------------------------------------------------------------
اگه این شماره ها رو به رنگ تبدیل کنید یه جذول رنگ میبینید. حالا اگه روشنایی هر کدوم از این رنگ ها رو نگاه کنید متوجه میشید.
من از photoshop استفاده کردم.

PC2st
دوشنبه 24 اردیبهشت 1386, 22:04 عصر
اگه این شماره ها رو به رنگ تبدیل کنید یه جذول رنگ میبینید. حالا اگه روشنایی هر کدوم از این رنگ ها رو نگاه کنید متوجه میشید.
ببخشید اشتباه نشه، اون فرمول روشنائی یا تاریکی رو مشخص نمیکنه، اگر با ColorDialog مربوطه به کنترلهای سی#، یک رنگی مثل 100, 50, 25 رو انتخاب کنی و بعدش به کمک یک دکمه که بصورت کشوئی به بالا و پائین میره و از سیاه تا سفید هم ادامه داره، اون دکمه رو جابجا کنی ( همون کادر آبی رنگی که در عکس موجود در پست شماره 44 از همین تاپیک قرار داره )، اون فرمول رنگهای قرار گرفته در این بازه ( از سیاه تا سفید ) رو مشخص میکنه و میگه که همشون یک رنگ هستند... برای رنگهای نزدیک به سفید یعنی مثلا وقتی رنگ 100, 50, 25 به 255, 128, 64 برسه، چون یکی از رنگها به 255 رسیده، اگر بخوایم رنگها رو روشن تر کنیم، مجبور میشیم که رنگی که از 255 بیشتر شده رو هم بیشتر کنیم ( مثلا 268 ) تا جائی که بقیه رنگها یعنی 128 و 64 هم به 255 برسند. ( اما رنگهائی که بیشتر 255 شده اند رو در حین ترکیب، همون 255 در نظر میگیریم )... خیلی بد توضیح دادم خودم هم نفهمیدم چی شد !!! راستی، اینها رو در همین RGB خودمون بکار بردم.

reza.palang
دوشنبه 24 اردیبهشت 1386, 22:51 عصر
ببخشید اشتباه نشه، اون فرمول روشنائی یا تاریکی رو مشخص نمیکنه، اگر با ColorDialog مربوطه به کنترلهای سی#، یک رنگی مثل 100, 50, 25 رو انتخاب کنی و بعدش به کمک یک دکمه که بصورت کشوئی به بالا و پائین میره و از سیاه تا سفید هم ادامه داره، اون دکمه رو جابجا کنی ( همون کادر آبی رنگی که در عکس موجود در پست شماره 44 از همین تاپیک قرار داره )، اون فرمول رنگهای قرار گرفته در این بازه ( از سیاه تا سفید ) رو مشخص میکنه و میگه که همشون یک رنگ هستند... برای رنگهای نزدیک به سفید یعنی مثلا وقتی رنگ 100, 50, 25 به 255, 128, 64 برسه، چون یکی از رنگها به 255 رسیده، اگر بخوایم رنگها رو روشن تر کنیم، مجبور میشیم که رنگی که از 255 بیشتر شده رو هم بیشتر کنیم ( مثلا 268 ) تا جائی که بقیه رنگها یعنی 128 و 64 هم به 255 برسند. ( اما رنگهائی که بیشتر 255 شده اند رو در حین ترکیب، همون 255 در نظر میگیریم )... خیلی بد توضیح دادم خودم هم نفهمیدم چی شد !!! راستی، اینها رو در همین RGB خودمون بکار بردم.


اهان، فهمیدم اما فکر میکنم اون فرمول بجای تقسیم باید تفریق باشه. من چک کردم (همون طور که توی چند پست قبل گفتم)
برای تست کردن رنگ ها اول توی image editor ها چک میکنم بعد اگه نتیجه داد کدش رو پیاده میکنم. سریع تره. اون نوار لغزان در کادر ابی هم همین کار رو میکنه.

Alireza_Salehi
سه شنبه 25 اردیبهشت 1386, 09:29 صبح
به نظر من برای جدا کردن محدوده های رنگی بر اساس روشنایی یا تاریکی آن (مثلا تمام حالت های رنگ آبی) ساختار RGB یا ARGB اصلا مناسب نیست ، حالا با هر دقتی (16 و 24 و 32) به جای این کار بهتره اول رنگ RGB مورد نظر رو به فرمت HSV تبدیل کنید و سپس در این فرمت به راحتی به نوع رنگ (Hue (http://en.wikipedia.org/wiki/Hue)) شدت رنگ (Saturation (http://en.wikipedia.org/wiki/Saturation_%28color_theory%29)) و درجه نور (Value (http://en.wikipedia.org/wiki/Color_value)) آن دسترسی دارید!


(شاید فرمولی که دنبالش میگردید همین تبدیل RGB به HSV باشه !) HSV color space (http://en.wikipedia.org/wiki/HSV_color_space)


RGB color model (http://en.wikipedia.org/wiki/RGB)


(در این لینک تبدیلات رو می تونید تست کنید!)The RGB Color Calculator (http://webdeveloper.earthweb.com/repository/javascripts/2001/06/48571/hex.html)


Color theory (http://en.wikipedia.org/wiki/Color_value)

با این اوصاف باز هم میگم که هیچ مرز مشخصی بین رنگها نمیتونه وجود داشته باشه این کاربرد هستش که مرز ها رو تعیین میکنه!

reza.palang
پنج شنبه 27 اردیبهشت 1386, 00:54 صبح
به نظر من برای جدا کردن محدوده های رنگی بر اساس روشنایی یا تاریکی آن (مثلا تمام حالت های رنگ آبی) ساختار RGB یا ARGB اصلا مناسب نیست ، حالا با هر دقتی (16 و 24 و 32) به جای این کار بهتره اول رنگ RGB مورد نظر رو به فرمت HSV تبدیل کنید و سپس در این فرمت به راحتی به نوع رنگ (Hue (http://en.wikipedia.org/wiki/Hue)) شدت رنگ (Saturation (http://en.wikipedia.org/wiki/Saturation_%28color_theory%29)) و درجه نور (Value (http://en.wikipedia.org/wiki/Color_value)) آن دسترسی دارید!

با این اوصاف باز هم میگم که هیچ مرز مشخصی بین رنگها نمیتونه وجود داشته باشه این کاربرد هستش که مرز ها رو تعیین میکنه!

از تذکرت ممنون. (دنبال فرمول تبدیلهای سیستم های رنگی بودم)
اما اینجا مشکل تبدیل RGB به HSB نیست. چون هم توی #C و هم توی Image editor ها این امکان که به مقادیر هر دو دسترسی داشته باشیم هست.
استفاده از HSB (همون HSV - س B = Brightness) مورد خوبی هست (در حقیقت عالی) و مقادیر Sو B کنترل کننده روشنایی و تاریکی رنگ هستن. ولی بعضی از رنگها هستن که نور بیشتری رو جزب میکنن . پس تاریک تر به نظر میان (تاکید میکنم رنگهای خالص رو میگم. یعنی هر دو مقدار S و B صد باشن) مثل رنگای زرد و قرمز. یعنی خود رنگ هم توی مفدار نوری که بازتاب میکنه تاثیر داره. اگه بخوایم در مجموع حساب کنیم روشنایی رنگ به مقدار H هم مرتبط هست. یعنی کنتراست ..... (cotrast)
اینو هم تا حدودی حل کردم. اما کامل نیست. تا همینجاشو میگم، شاید فرجی بشه (الله اکبر):
باید از سیستم رنگ LAB استفاده کنیم. مقدار L میزان کنتراست رو میده. مشکل اینه که #C این مقادیر رو به آدم نمیده.

اینو هم بگم که برای فهمیدن اینکه فلان رنگ که میبینیم همون رنگ قبلی هست یا نه این کافیه (همون چیزی کهbenyamin-pc لازم داره - البته اگه بعدا معلوم نشه که منظورشون چیز دیگه ای هست:اشتباه:) اما ادامه بحث به آدم چیزای زادی یاد میده

Alireza_Salehi
پنج شنبه 27 اردیبهشت 1386, 05:19 صبح
این هم روش تبدیل چند سیستم رنگی به هم دیگه:
http://www.cs.rit.edu/~ncs/color/t_convert.html

به هر حال سوال کننده باید بگه کدومش مشکلش رو حل میکنه (RGB (http://en.wikipedia.org/wiki/RGB) , HSV (http://en.wikipedia.org/wiki/HSV_color_space) , CIELAB (http://en.wikipedia.org/wiki/Lab_color_space) , HSL (http://en.wikipedia.org/wiki/HSL_color_space) یا ....)، چون این همه سیستم های رنگی بر اساس ضرورتی ایجاد شده اند و در شرایط خاصی بهترین نتیجه رو دارند و نه در همه شرایط.

تفاوت های کلیدی و مهمی بین سیستم های رنگی وجود داره که باید به اونها دقت بشه ، مثلا :
Gamma Correction and Color Space (http://www.cgsd.com/papers/gamma_colorspace.html)

Color space (http://en.wikipedia.org/wiki/Color_space)

نکته بسیار مهم دیگه این که تاثیر رنگها توسط ابزارهای الکترونیکی را با تاثیر آنها در اشیای فیزیکی یکسان در نظر نگیرید ، در بین این دو حالت تبدیلات و قوانینی برای نگاشت رنگهای بازتاب شده از سطح اجسام به سیستم های رنگی موجود در کامپیوتر و دستگاههای دیجیتال وجود داره.

reza.palang
پنج شنبه 27 اردیبهشت 1386, 08:42 صبح
این هم روش تبدیل چند سیستم رنگی به هم دیگه:
http://www.cs.rit.edu/~ncs/color/t_convert.html (http://www.cs.rit.edu/%7Encs/color/t_convert.html)

به هر حال سوال کننده باید بگه کدومش مشکلش رو حل میکنه (RGB (http://en.wikipedia.org/wiki/RGB) , HSV (http://en.wikipedia.org/wiki/HSV_color_space) , CIELAB (http://en.wikipedia.org/wiki/Lab_color_space) , HSL (http://en.wikipedia.org/wiki/HSL_color_space) یا ....)، چون این همه سیستم های رنگی بر اساس ضرورتی ایجاد شده اند و در شرایط خاصی بهترین نتیجه رو دارند و نه در همه شرایط.

تفاوت های کلیدی و مهمی بین سیستم های رنگی وجود داره که باید به اونها دقت بشه ، مثلا :
باز هم از اطلاعاتت ممنون.
اما سوال کننده ا زکجا بدونه که کدوم این سیستم ها مشلش رو حل میکنه؟؟؟ اگه میدونست که سوال نمیپرسید.



نکته بسیار مهم دیگه این که تاثیر رنگها توسط ابزارهای الکترونیکی را با تاثیر آنها در اشیای فیزیکی یکسان در نظر نگیرید ، در بین این دو حالت تبدیلات و قوانینی برای نگاشت رنگهای بازتاب شده از سطح اجسام به سیستم های رنگی موجود در کامپیوتر و دستگاههای دیجیتال وجود داره.
بله اینا با هم فرق زیادی داره. به همین دلیل CMYK برای چاپ درست شد. علاوه به این چیزایی که گفتید این رو هم اضافه میکنم که تمام رنگ های سیستم های الکتریکی(مثل RGB) قابل تبدیل به CMYK نیست.
البته کسی اینا رو با هم یکی در نظر نگرفت.
کسی اینا رو

Alireza_Salehi
پنج شنبه 27 اردیبهشت 1386, 12:51 عصر
اما سوال کننده ازکجا بدونه که کدوم این سیستم ها مشلش رو حل میکنه؟؟؟ اگه میدونست که سوال نمیپرسید.

تقریبا سیستم ها ی مهم رو اینجا گذاشتیم دیگه ، باید رو برنامش تست کنه ، لطف کنه نتیجه هر کدوم رو اعلام کنه بقیه هم یاد بگیرن برای کاربرد مد نظر ایشون کدوم بهتر جواب داده!

من هنوز دقیقا نگرفتم دقیقا برای چی به این جدا سازی نیاز دارند؟


البته کسی اینا رو با هم یکی در نظر نگرفت.

از اون مواردی که در مورد بازتاب نور و ... گفتید فکر کردم شاید به این حالت منجر بشه!

reza.palang
پنج شنبه 27 اردیبهشت 1386, 13:28 عصر
من هنوز دقیقا نگرفتم دقیقا برای چی به این جدا سازی نیاز دارند؟!
والا همینقدر از من جلو تری. من که هنوز نفهمیدم چی لازم دارن چه برسه به اینکه برای چی لازم دارن؟. اخه هر بار با این جمله برخورد میکنم:"منظورم رو درست نفهمیدی. اون که نبود . این یکی هست". خلاصه چندین مسئله طرح شد و بعد معلوم شد که این نبود.


از اون مواردی که در مورد بازتاب نور و ... گفتید فکر کردم شاید به این حالت منجر بشه!

منظور این بود که بعضی رنگ ها نور کمتری رو به چشم میتابونن. یعنی فقط H متغیر باشه (با مقادیر S و B ثابت)

مثلا
(255, 0, 0)قرمز
(0, 242, 255)زردمقادیر S و B در عر دو 100درصد هست. اما کنتراست خود رنگ ها متفاوت هست

PC2st
پنج شنبه 27 اردیبهشت 1386, 16:32 عصر
ای بابا... تازه دارم یه چیزهائی میفهمم! :)


من هنوز دقیقا نگرفتم دقیقا برای چی به این جدا سازی نیاز دارند؟
شاید برای تبدیل یک عکس با کیفیت بالا، به تعداد رنگهای کمتر و کیفیت پائینتر !؟

Alireza_Salehi
پنج شنبه 27 اردیبهشت 1386, 17:12 عصر
ای بابا... تازه دارم یه چیزهائی میفهمم! :)


شاید برای تبدیل یک عکس با کیفیت بالا، به تعداد رنگهای کمتر و کیفیت پائینتر !؟

برای این کار هیچ احتیاجی به جدا کردن رنگ ها نیست!

benyamin_pc
یک شنبه 30 اردیبهشت 1386, 19:52 عصر
با سلام خدمت دوستان عزیز
اول==>در حال حاضر تنها چیزی که مهم هست همونه که قبلا" گفتم یعنی دقیقا" اینکه برنامه بتونه تشخیص بده که وقتی رو یه رنگ خاص وقتی همون اهرم کادر آبی رو بالا و پایین می کنیم و RGB با یک نسبت خاص تغییر می کنه این RGB ها هنوز در محدوده همون رنگ هستند و فقط تیره و روشن شده
آقا رضا پلنگ ===> اینکه گفتین این عمل با تغییر رو یه نسبت خاص انجام میشه این بدیهیه و در موردش بحث شد و آقای پی سی دوست اون نسبت رو مطرح کردن اگه نسبت بهتری دارین لطفا" مطرح کنین ممنون میشیم
آقا رضا پلنگ===> منظورتون رو درست از خواب و بیدار نفهمیدم اما اگه منظورتون اینه که کسی چیزی می دونه ولی نمی خواد بگه که این خیلی بد
از همگی هم ممنون اما فقط ی چیزی!
لطفا" اگه تو این تاپیک در مورد پیزی بحث میشه فقط به صورت دستی باشه اینکه RGB به HSV باید تبدیل شه و V مقدار نور رو بر می گردونه این تبدیل RGB به HSV به صورت دستی چجوری هست؟

Alireza_Salehi
یک شنبه 30 اردیبهشت 1386, 19:57 عصر
با سلام خدمت دوستان عزیز
لطفا" اگه تو این تاپیک در مورد پیزی بحث میشه فقط به صورت دستی باشه اینکه RGB به HSV باید تبدیل شه و V مقدار نور رو بر می گردونه این تبدیل RGB به HSV به صورت دستی چجوری هست؟

عزیزم دستی و پایی نداره دیگه ، شما مثل این که این لینک هایی که بنده و دوستان گذاشتیم رو اصلا نگاه نکردید ، فرمول تبدیل RGB به HSV به صورت کاملا دستی به طور کاملا واضح در اون لینک ها موجوده!

reza.palang
یک شنبه 30 اردیبهشت 1386, 22:51 عصر
با سلام خدمت دوستان عزیز
اول==>در حال حاضر تنها چیزی که مهم هست همونه که قبلا" گفتم یعنی دقیقا" اینکه برنامه بتونه تشخیص بده که وقتی رو یه رنگ خاص وقتی همون اهرم کادر آبی رو بالا و پایین می کنیم و RGB با یک نسبت خاص تغییر می کنه این RGB ها هنوز در محدوده همون رنگ هستند و فقط تیره و روشن شده
دوست عزیز مشکل شما مدتهاست حل شده. با HSB ( یا همون HSV) حل میشه. فرمولای تبدیل RGB به HSB هم که توی پست های قبل لینکش بود. البته این سیستم توی .Net قابل دسترسی هست



آقا رضا پلنگ ===> اینکه گفتین این عمل با تغییر رو یه نسبت خاص انجام میشه این بدیهیه و در موردش بحث شد و آقای پی سی دوست اون نسبت رو مطرح کردن اگه نسبت بهتری دارین لطفا" مطرح کنین ممنون میشیم
عرضم به خدمتتون که نسبت دوستمون PC یه مشکل کوچیک داشت. (که گفتم). به نظر میاد اصلا چیزایی که اینجا گفته میشه رو تست نمیکنی. اگه تستشون کنی به نتایج جالبی میرسی. و اون نسبت توی RGB در محدوده خاصی کار میکنه. (HSB ترجیح داره)


آقا رضا پلنگ===> منظورتون رو درست از خواب و بیدار نفهمیدم اما اگه منظورتون اینه که کسی ......
نه منظورم این نبود.



از همگی هم ممنون اما فقط ی چیزی!
لطفا" اگه تو این تاپیک در مورد پیزی بحث میشه فقط به صورت دستی باشه اینکه RGB به HSV باید تبدیل شه و V مقدار نور رو بر می گردونه این تبدیل RGB به HSV به صورت دستی چجوری هست؟
خوبه بیل گیتس اینجوری فکر نمیکنه. وگر نه windows چی میشد.:متعجب::اشتباه:
(شوخی بود ناراحت نشو)

benyamin_pc
دوشنبه 31 اردیبهشت 1386, 14:17 عصر
از همگی عزیزان ممنون و این موضوع باید با HSV حل شه در واقع این همون نسبتی هست که باید پیدا می شد من سعی می کنم تا چند روز آینده دقیقا" این موضوع رو بررسی کنم

benyamin_pc
شنبه 05 خرداد 1386, 21:00 عصر
آقا زدی تو خال این همونی کلید حل معما بود اما الگوریتمی که توی یکی از لینکها بود برای برای تبدیل RGB به HSV انگار یه مشکلی داره
خودتون بررسیش کنین
چندجا مقدار منفی به H می ده و اشتباه می کنه

FF3366 یه نمونه از اشتباهاش

benyamin_pc
یک شنبه 06 خرداد 1386, 07:06 صبح
تو یه الگوریتم دیگه مشکل رو پیدا کردم باید اگه HUE منفی شد به 360 جمعش کنیم تا اون دایره رو کامل یه دور بچرخه و بر گرده سر جاش اما با علامت مثبت و مقدار مثبت اما یه مشکل دیگه هم این داشت که الان کد نمونش رو یادم نیست ولی اگه باز بش بر خوردم میذارم اینجا ولی به نظر نمی رسه این الگوریتم چندان کامل باشه اگه الگوریتم کامل تری کسی داره بذاره البته از الگوریتم هایی که تا حالا تو نت دیدم این کامل ترینشون بوده

benyamin_pc
سه شنبه 08 خرداد 1386, 10:48 صبح
cc9933
این الگوریتم این کد رو بهش H=400 می ده چند جا دیگم مشکل داره از دوستان اگه کسی الگوریتم بهتری داره لطف کنه بذاره ممنون می شم

Keramatifar
سه شنبه 08 خرداد 1386, 12:02 عصر
دوست عزیز
یه کامپوننت هست که اینکار رو انجام میده چرا خود آزاری میکنی؟:چشمک:

benyamin_pc
سه شنبه 08 خرداد 1386, 12:24 عصر
اگه قسمتهای قبلی بحث رو مطالعه می فرمودین می دیدین که می خوام این کار رو دستی انجام بدم و البته نه با دات نت البته اگه سورس اون کامپوننت رو دارین و بذارین الگوریتمش رو از تو همون در میارم و ممنون می شم

Keramatifar
سه شنبه 08 خرداد 1386, 12:45 عصر
چک می کنم اگه سورسش بود برات می ذارم