PDA

View Full Version : تشخیص نوع تغییر تصویر از بین انواع تغییرات تعریف شده



hamed jalili
جمعه 08 مهر 1390, 11:47 صبح
سلام دوستان

فرض کنیم که یک دایره داریم و یک خط کوچک روی این دایره ، این شکل رو 90 درجه به راست می چرخانیم (هم دایره و هم خط روی آن ) ، در این صورت چه طور میشه از روی دو شکل تشخیص داد که این تغییر چه بوده است

با فرض اینکه یک مجموعه از تغییرات را به طور پیش فرض داریم .

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

مصطفی ساتکی
یک شنبه 10 مهر 1390, 08:40 صبح
سلام
در روش پردازش بایستی از hough خطی استفاده کنید که خط مورد نظر رو بدست بیارید چون دایره نسبت به چرخش invariant و نمی تونه در این زمینه بهتون کمک کنه با داشتن خط در تصویر دوم می تونید میزان چرخش رو هم داشته باشید.

از روش دیگر که باز هم جز روش های پردازش تصویر و به پیچیدگی روش بالایی نیست اول اینکه 2 تصویر به یک سایز واحد ببریم سپس تصویر دوم را در 360 درجه دوران در 360 دفعه و هر بار میزان شباهتهای پیکسل به هم رو محاسبه کنیم زاویه ای که در آن بیشترین شباهت وجود داشته باشد همون جواب موردنظر ماست(قابل ذکر که قبل از انجام این عمل 2 تصویر رو smooth کنیم)
برای اطلاعات بیشتر می تونید این پست (http://www.7khatcode.com/395/%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%86%D9%88%D8%B9-%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1) را مطالعه کنید.

hamed jalili
یک شنبه 10 مهر 1390, 09:35 صبح
روش دوم برای کاری که من می خواهم انجام بدم بسیار مناسب تره . خودم هم قبلا به این موضوع فکر کرده بودم .
ولی یه مشکلی که من با این روش دارم اینه که ، اگه مجموعه تغییرات من زیاد بشه اون وقت این روش به محاسبات زیادی نیاز داره .
مثلا اگر 90 درجه خط رو بچرخونیم ، و دایره رو 12 واحد در محور x جابه جا کنیم و 20 واحد در محور Y دایره را کوچکتر کنیم در این صورت مجموعه تغییرات شامل دوران ، حرکت و تغییر شکل است ، می توان از جستجوی درختی استفاده و جواب رو پیدا کرد ولی در این صورت یک درخت بسیار بزرگی رو باید پیمایش کرد .
میشه از ژنتیک الگوریتم یا تپه نوردی هم استفاده کرد و همه چی رو به شانس واگذار کرد که باز هم به احتمال زیاد با مقایسه های بسیار زیادی روبه رو میشیم .

مصطفی ساتکی
یک شنبه 10 مهر 1390, 10:21 صبح
ضرب در حوزه فرکانس معادل با convolve در حوزه مکانه که به سرعت می تونید این کار رو انجام بدید و نیازی به عملیات اضافی دیگری ندارید

hamed jalili
یک شنبه 10 مهر 1390, 11:28 صبح
میشه لطفا کمی بیشتر توضیح بدین ؟

مصطفی ساتکی
دوشنبه 11 مهر 1390, 13:26 عصر
همنطور که قبلاً خدمتون عرض کردم شما 2 تصویر رو به یک اندازه resize کنید و سپس ازتصویر اول یکبار طیف فوریه بدست بیارید سپس برای تصویر مقصد برای هر زاویه طیف فوریه بدست بیارید سپس این 2 طیف رو در هم به صورت مختلط ضرب کنید در هر جواب بدست آمده maximum رو بدست آورید بزرگترین ماکزیمم برای هر زاویه ای باشه همون جوابه

hamed jalili
دوشنبه 11 مهر 1390, 13:36 عصر
Delphi_CAT عزیز ،
ممنون از راهنماییتون .

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

شاید ( به احتمال بسیار زیاد ) در این زمینه کار خاصی انجام نشده باشه ، ولی ممنون میشم اگه راه حلی به نظرتون برسه منو راهنمایی کنید .

مصطفی ساتکی
سه شنبه 01 آذر 1390, 20:20 عصر
یه مبحث Forgery هست که به تازگی تو DIP در این زمینه مقاله می دن همون مبحث تشخیص تصاویر جعلی.
که با توجه به خصوصیات آماری تصاویر و فرکانس و بررسی منابع و نویز لنز و غیره اینکارو انجام می دن.
در ضمن همیشه می فرماید بدون ریاضیات این دنیا همش ریاضی و آمار و چیزی غیر از اینا نیست
برای اطلاعات بیشتر به این لینک (http://www.7khatcode.com/236/%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%AC%D8%B9%D9%84%DB%8C-%D8%A8%D9%88%D8%AF%D9%86-%D8%AF%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1?show=236#q236)مر جعه کنید.

hamed jalili
سه شنبه 01 آذر 1390, 21:32 عصر
در مورد Forgery من تحقیق کردم ولی متاسفانه به منبع به درد بخوری نرسیدم ، اگه شما در این مورد منبعی داریم ممنون میشم راهنماییم کنید .



در ضمن همیشه می فرماید بدون ریاضیات این دنیا همش ریاضی و آمار و چیزی غیر از اینا نیست

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


از شما و همه دوستان واقعا ممنون میشم اگر در این زمینه نظراتتون رو بفرمایبد .

مصطفی ساتکی
چهارشنبه 02 آذر 1390, 13:30 عصر
بهتون پیشنهاد میدم این (http://stackoverflow.com/questions/1876336/in-what-areas-of-programming-is-a-knowledge-of-mathematics-helpful) پست رو در StackOverflow نگاه کنید

hamed jalili
چهارشنبه 02 آذر 1390, 20:48 عصر
بسیاری از مباحثی که مطرح کردند بر خلاف تحقیقات من ه ، ولی بعضی از افراد ایده های خوبی داشتند .