تالار گفتمان مانشت
روند تشخیص شی مورد نظر در یک تصویر - نسخه‌ی قابل چاپ

روند تشخیص شی مورد نظر در یک تصویر - poldasht - 29 شهریور ۱۳۹۳ ۰۵:۲۰ ب.ظ

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


من میخوام یک شی خاص (مثلا یک فرد، ماشین، سکه و ...) را در یک تصویر و با استفاده از روش های پردازش تصویر تشخیص بدم.


لطفا روند این کار رو بگید، مثلا:
۱- قبل از شروع تصویر را Grayscale میکنیم.
۲- بخش بندی می کنیم که به چندین روش میشه اینکار رو کرد، مثل: Canny, Sobel, Binary, K-Means, FCM و ....
۳- تشخیص شی با توجه به خصوصیات آن (مطابقت خصوصیات شی در تصویر)



اونایی که عملا کار کرده اند و یا تجربه ای دارند، به سوالات پایین در صورت امکان پاسخ بدید:
۱- مراحلی که در بالا گفتم را در صورت امکان تصحیح کنید.
۲- در قسمت دو چندین روش را معرفی کردم. در قسمت ۳ یعنی برای مطابقت دادن مشخصات شی در تصویر چه روش های وجود دارد.
۳- روش های قسمت ۳ را کامل تر کنید.


مرسی.

RE: روند تشخیص شی مورد نظر در یک تصویر - ADELZX - 29 شهریور ۱۳۹۳ ۰۸:۰۶ ب.ظ

سلام.
مراحل کار درسته و تقریبا بطور کلی به همین صورت هستش.

برای قسمت دوم به نظر من بهترین و ساده ترین روش همون روش های بخش بندی sobel و canny امثالهم هستش.
برای این کارم دستور regionprops توی متلب در نظر گرفته شده که توی یه تصویر سطح خاکستری یا سیاه-سفید براحتی اشیاء رو تشخیص میده و خواص مختلفی از اونو در احتیارتون قرار میده (فک کنم ۱۱ خاصیت رو بهتون میده مث مختصات مکانی و ناحیه و ....).

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

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

روند تشخیص شی مورد نظر در یک تصویر - poldasht - 30 شهریور ۱۳۹۳ ۰۹:۲۷ ب.ظ

سلام،

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

RE: روند تشخیص شی مورد نظر در یک تصویر - poldasht - 31 شهریور ۱۳۹۳ ۰۸:۰۶ ب.ظ

(۲۹ شهریور ۱۳۹۳ ۰۸:۰۶ ب.ظ)ADELZX نوشته شده توسط:  برای قسمت سوم اگه راهنمایی بیشتر خواستی پروژه تشخیص رو دقیقتر بگو که بیشتر و جزعی تر بحث کنیم.

جناب ADELZX،

فرض کن بخواییم در تصویر پایین،‌ماشین ها رو شناسایی کنیم، شما چه ایده ای دارید؟ با چه روش هایی میتونیم این کارو انجام بدیم؟

[تصویر:  304476_nyc_street_20.jpg]

روند تشخیص شی مورد نظر در یک تصویر - ADELZX - 31 شهریور ۱۳۹۳ ۱۱:۰۰ ب.ظ

سلام دوباره.

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

اما ایده ای که به ذهن من میرسه:

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

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

RE: روند تشخیص شی مورد نظر در یک تصویر - poldasht - 06 مهر ۱۳۹۳ ۰۹:۵۲ ب.ظ

سلام مجدد،

یه سوال عملی، من میخوام تو متلب، تمام مستطیل ها رو با استفاده از مشخصات ناحیه ها (مختصات و طول و عرض و زاویه و ....) تشخیص بدم. میتونی لطفا کمکم کنی تا اینکارو انجام بدم؟

*** چون هدف اصلی من شناسایی اشیا هست به همین دلیل یه تصویر خیلی ساده انتخاب کردم.

[attachment=16885]

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

مرسی.