PDA

View Full Version : تشخیص بیشترین رنگ به کار رفته در یک عکس



Mani_rf
چهارشنبه 29 مهر 1388, 18:49 عصر
با سلام خدمت همه استادان سایت.

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


http://barnamenevis.org/forum/attachment.php?attachmentid=38741&stc=1&d=1105760345

در هر یک از این چهار عکس رنگی بیشتر از سایر رنگ ها به چشم می خورد. آیا راهی سراغ دارید که بتوان رنگ قالب یک عکس را تشخیص داد و آن را به صورت یک رنگ ، عدد RGB و یا عدد Hex باز گرداند؟

pirmard
یک شنبه 03 آبان 1388, 14:55 عصر
طیف غالب مدنظره ؟ یا فقط رنگ غالب ؟

f.nabavi
یک شنبه 03 آبان 1388, 16:47 عصر
سلام.
من یه برنامه دارم که مخصوص ربات تعقیب خطه و یه رنگ خاص رو تو یه تصویر تشخیص میده. به دردت میخوره؟ مثلا رنگهای قرمز هر عکسی رو تشخیص میده. یا هر rgb دیگه که بهش بگی. ولی باید rgb رو بدی فکر کنم بشه یه کم تغییرش داد. البته من از اینترنت دانلود کردم. رایگان بود. اگر برنامه های ربات های تعقیب خط رو سرچ کنی از این مدل برنامه ها زیاد پیدا میکنی.

nokhodsiah2001
دوشنبه 04 آبان 1388, 10:41 صبح
سلام
دوست عزیز (http://barnamenevis.org/forum/member.php?u=62187) f.nabavi (http://barnamenevis.org/forum/member.php?u=62187) اگر امکان داره نمونه کد رو بذار تاببینیم چه کارایی میشه باهاش کرد (http://barnamenevis.org/forum/member.php?u=62187)

با سپاس

alimanam
دوشنبه 04 آبان 1388, 10:46 صبح
با سلام

یک روش اینه که بیای رنگ تک تک Pixel های تصویر رو دربیاری و هر کدوم رو در یک آرایه بریزی حالا با مقایسه تعداد رکوردهای هر آرایه میتونی رنگ قالب هر تصویر رو بدست بیاری ولی یه مشکلی که این روش داره اینه که سرعت برنامه در تصویرهای سنگین ( سایز بزرگ ) خیلی پایین میاد . روش های دیگه رو من اطلاع ندارم . لینک پایین تقریباً بیشتر گفته های بالا رو واست انجام داده . یا علی
http://barnamenevis.org/forum/showthread.php?t=185793

Mani_rf
دوشنبه 04 آبان 1388, 22:46 عصر
طیف غالب مدنظره ؟ یا فقط رنگ غالب ؟

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

pirmard
پنج شنبه 07 آبان 1388, 12:35 عصر
خوب اگر طیف قالب باشد بهتر است اما ، رنگ هم می تواند خوب باشد.

واسه رنگ تشخیص دادن که کار خاصی زیاد لازم نیست (در صورتی که دنبال روش خیلی بهینه ای نباشید )
یه آرایه 3 بعدی ه صورت 256*256*256 باید در نظر بگیرین و پیکس به پیکس برین جلو

dim maxcolorvalue=0
dim maxcolorR
dim maxcolorG
dim maxcolorB
dim colorpix(255*255*255)
شرروع حلقه
پیکسل جاری رو در نظر بگیر
مقدار red رو در r قرار بده
مقدار green رو در g قرار بده
مقدار blue رو در b قرار بده
colorpix(r,g,b)=colorpic(r,g,b)+1
اگر مقدار colorpix(r,g,b) از maxcolorvalue بیشتر است {
مقدار ر colorpix(r,g,b) را در maxcolorvalue قرار بده
مقدار r را در maxcolorR و b رو درmaxcolorB و g رو maxcolorG در قرار بده
}
اگه پیکسها به پایان رسید از حلقه خارج شو
وگرنه برو به پیکسل بعدی و ابتدای حلقه


و در انتها شما آرایه ای دارین که فروانی کل رنگها رو در تصویر به شما میده و سه متغیر دارین که میزان پرکاربردترین رنگ رو در خودش نگداری می کنه.


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