رفتن به مطلب

رفع مشکل تشخیص رنگ زرد در برنامه


ارسال های توصیه شده

با سلام

من دارم روی یک برنامه کار می کنم ،یک تصویرداریم که متنش ،به رنگ زرد هایلایت شده. و این تصویر رو به بلاکهایی با اندازه50*50 تقسیم کردیم.

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

احتمالا مشکل در تشخیص رنگ زرد بوده. رنگ زرد دقیقا 255 255 0 نیست. مثلا 250 250 10 هم زرد به نظر می رسه. باید شرطی که برای تشخیص دادن زرد بودن یک پیکسل استفاده میکنید به تناسب تغییر بدیم .کسی میدونه که چطور میشه این مشکل رو حل کرد؟

 

 

[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]function[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] T = LabelingWindow(RGB)[/size][/font][/size][/font]
[font=Courier New][size=4][font=Courier New][size=4] 
r = size(RGB,1);
c = size(RGB,2);
T = false;
[/size][/font][/size][/font][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22] 
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] a=1:r[/size][/font][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] b=1:c[/size][/font][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22]% dastur if check mikonad ke dar panjare pixel zard vojud darad ya[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22]% na. agar pixel e zardi peyda shavad yani panjare matni ast[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]if[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4](RGB(a,b,1)==RGB(a,b,2) && RGB(a,b,1)>RGB(a,b,3))[/size][/font][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22] 
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4]                T = true;
[/size][/font][/size][/font][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]return[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4];[/size][/font][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end
[/color][/size][/font][/color][/size][/font][/color][/size][/font]
لینک به دیدگاه
با سلام

من دارم روی یک برنامه کار می کنم ،یک تصویرداریم که متنش ،به رنگ زرد هایلایت شده. و این تصویر رو به بلاکهایی با اندازه50*50 تقسیم کردیم.

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

احتمالا مشکل در تشخیص رنگ زرد بوده. رنگ زرد دقیقا 255 255 0 نیست. مثلا 250 250 10 هم زرد به نظر می رسه. باید شرطی که برای تشخیص دادن زرد بودن یک پیکسل استفاده میکنید به تناسب تغییر بدیم .کسی میدونه که چطور میشه این مشکل رو حل کرد؟

 

 

[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]function[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] T = LabelingWindow(RGB)[/size][/font][/size][/font]
[font=Courier New][size=4][font=Courier New][size=4] 
r = size(RGB,1);
c = size(RGB,2);
T = false;
[/size][/font][/size][/font][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22] 
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] a=1:r[/size][/font][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]for[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4] b=1:c[/size][/font][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22]% dastur if check mikonad ke dar panjare pixel zard vojud darad ya[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22]% na. agar pixel e zardi peyda shavad yani panjare matni ast[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]if[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4](RGB(a,b,1)==RGB(a,b,2) && RGB(a,b,1)>RGB(a,b,3))[/size][/font][/size][/font]
[font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22][font=Courier New][size=4][color=#228b22] 
[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4]                T = true;
[/size][/font][/size][/font][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]return[/color][/size][/font][/color][/size][/font][/color][/size][/font][font=Courier New][size=4][font=Courier New][size=4];[/size][/font][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end[/color][/size][/font][/color][/size][/font][/color][/size][/font]
[font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff][font=Courier New][size=4][color=#0000ff]end
[/color][/size][/font][/color][/size][/font][/color][/size][/font]

 

سلام

اینجا اومدی برای رنگ زرد مولفه R و G پیکسل رو برابر فرض کردی، مولفه ی B رو هم گفتی از دو مولفه ی دیگه کوچیکتر باشه، این خط:

 

        if(RGB(a,b,1)==RGB(a,b,2) && RGB(a,b,1)>RGB(a,b,3))

 

ممکنه R و G با هم برابر نباشن، یا مثلا [0 50 50] هم توی شرطتون صدق می کنه، ولی خیلی تیره تر از رنگ زرد هست. می تونی واسه هر مولفه ای یه محدوده بذاری که این مشکل رو نداشته باشه، مثلا برای مولفه R و G مقدار بالاتر از 200 فرض کنی و برای مولفه ی B هم زیر 50 در نظر بگیری، حالا محدوده ها رو میشه تغییر داد، فرضی گفتم.

 

اما توی کد بالا، RGB تصویر رنگی شماست، a و b شماره ی سطر و ستون پیکسل رو مشخص می کنه، سومی (1و 2 و 3) همین مولفه های رنگی رو یعنی R و G و B.

 

RGB(a,b,1) : رنگ قرمز

RGB(a,b,2) : رنگ سبز

RGB(a,b,3) : رنگ آبی

 

خب حالا به نظر خودت چجوری باید این شرط رو تغییر بدی؟

لینک به دیدگاه
سلام

اینجا اومدی برای رنگ زرد مولفه R و G پیکسل رو برابر فرض کردی، مولفه ی B رو هم گفتی از دو مولفه ی دیگه کوچیکتر باشه، این خط:

 

        if(RGB(a,b,1)==RGB(a,b,2) && RGB(a,b,1)>RGB(a,b,3))

 

ممکنه R و G با هم برابر نباشن، یا مثلا [0 50 50] هم توی شرطتون صدق می کنه، ولی خیلی تیره تر از رنگ زرد هست. می تونی واسه هر مولفه ای یه محدوده بذاری که این مشکل رو نداشته باشه، مثلا برای مولفه R و G مقدار بالاتر از 200 فرض کنی و برای مولفه ی B هم زیر 50 در نظر بگیری، حالا محدوده ها رو میشه تغییر داد، فرضی گفتم.

 

اما توی کد بالا، RGB تصویر رنگی شماست، a و b شماره ی سطر و ستون پیکسل رو مشخص می کنه، سومی (1و 2 و 3) همین مولفه های رنگی رو یعنی R و G و B.

 

RGB(a,b,1) : رنگ قرمز

RGB(a,b,2) : رنگ سبز

RGB(a,b,3) : رنگ آبی

 

خب حالا به نظر خودت چجوری باید این شرط رو تغییر بدی؟

سلام. باتوجه به این توضیحاتی که دادی ،این کد نویسی درسته:

 if ((RGB(a,b,1)>200)==RGB(a,b,2)>200) &&( RGB(a,b,1)>(RGB(a,b,3)<50)))

لینک به دیدگاه
سلام. باتوجه به این توضیحاتی که دادی ،این کد نویسی درسته:

 if ((RGB(a,b,1)>200)==RGB(a,b,2)>200) &&( RGB(a,b,1)>(RGB(a,b,3)<50)))

 

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

لینک به دیدگاه
سلام. باتوجه به این توضیحاتی که دادی ،این کد نویسی درسته:

 if ((RGB(a,b,1)>200)==RGB(a,b,2)>200) &&( RGB(a,b,1)>(RGB(a,b,3)<50)))

من این کدها رو دادم به برنامه و اجراش کردم تمام بلاکها رو برام هایلایت کرد!!!!!!

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

منظورت اینجوریه؟

if ((RGB(a,b,1)>200) && RGB(a,b,2)>200 &&(RGB(a,b,3)<50)))

لینک به دیدگاه
منظورت اینجوریه؟
if ((RGB(a,b,1)>200) && RGB(a,b,2)>200 &&(RGB(a,b,3)<50)))

 

من این کدها رو اجرا کردم و تعداد بلاکهای نادرست خیلی کمتر شد. یعنی موفقیت آمیز بود

لینک به دیدگاه
من این کدها رو اجرا کردم و تعداد بلاکهای نادرست خیلی کمتر شد. یعنی موفقیت آمیز بود

فقط یه مشکلی که هست نمودارها و تصاویر رو یه قسمتهایی از اون ها رو هم هایلایت می کنه

لینک به دیدگاه
من این کدها رو اجرا کردم و تعداد بلاکهای نادرست خیلی کمتر شد. یعنی موفقیت آمیز بود

 

فقط یه مشکلی که هست نمودارها و تصاویر رو یه قسمتهایی از اون ها رو هم هایلایت می کنه

 

خب می خوای بازه رو یه خورده محدود تر کن، به جای 200 مثلا 220، 230 یا حتی بیشتر در نظر بگیر، برای 50 هم همینطور، یعنی مقدار کمتری بذار.

لینک به دیدگاه
خب می خوای بازه رو یه خورده محدود تر کن، به جای 200 مثلا 220، 230 یا حتی بیشتر در نظر بگیر، برای 50 هم همینطور، یعنی مقدار کمتری بذار.

سلام من بازه رو محدود تر کردم و لی بلاکهایی که متن داشتند یه تعدادشون رو هایلات نکرد بنظرو همون 200 200 50 مناسبتره.نظر شما چیه؟

لینک به دیدگاه
سلام من بازه رو محدود تر کردم و لی بلاکهایی که متن داشتند یه تعدادشون رو هایلات نکرد بنظرو همون 200 200 50 مناسبتره.نظر شما چیه؟

 

سلام

نمی دونم، خودت از روی نتایج بهتر می تونی تشخیص بدی،که کدوم حالت مناسب تر هست. می خوای یه خورده بیشتر مقدارشون رو کم و زیاد کن مطمئن بشی (کم کم هم تغییرشون بده دیگه).:a030:

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...