# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > پردازش تصویر (Image Processing) >  بدست آوردن مساحت تابلو های سردر مغازه های شهری بواسطه پردازش تصویر

## sari-1369

با سلام خدمت اساتید .  

من توی یک پروژه نیاز دارم که از تابلو های  تبلیغاتی سطح شهر یا تابلوی سردر مغازه ها عکسی گرفته بشه و نرم افزار  بتونه مساحت اون رو محاسبه کنه . و حالا میخواستم دوستانی که اطلاعاتی  دارند راهنمایی کنن که ؛

1. در کل به چه روش هایی میشه این کار رو انجام داد ؟
2. آیا در روش هایی که عنوان میشه به غیر از دوربین به سخت افزار دیگه ای هم نیازه که کار سریعتر و دقیقتر انجام بشه ؟
3. آیا باید محدودیت هایی هم برای کاربر تصویر گیرنده تعریف بشه و اینکه راهی برای رفع این محدودیت ها هست ؟

و ...

پیشاپیش از راهنماییتون ممنونم .  :لبخند:

----------


## sari-1369

:(   اساتید پیشنهادی ندارن ؟

----------


## مصطفی ساتکی

شما به یک دوربین استریو نیاز دارید که با اون بتونید عمق و پرسپکتیو را محاسبه نماید و به این ترتیب مساحت تابلوها به راحتی قابل محاسبه می باشد

----------


## sari-1369

ممنون بابت راهنماییتون .

من هیچ اطلاعاتی در مورد اینها ندارم و کلی هم توی نت سرچ کردم اما به نتیجه مناسبی نرسیدم  :ناراحت:  اگر ممکنه بیشتر راهنمایی کنید یا یه منبع مناسب بهم معرفی کنید .

راسی ، دوربین های استریو منظور همین دوربین های 3دی که 2 تا لنز دارن هست یا دوربین های نقشه کشی  ؟

----------


## soroushp

اول موضوع جالبی داری کار می کنی ؛
من احتمال می دم باید یک مقدار رو تشخیص الگو کار کنی ، وقتی الگو آموزش دید مثل شبکه های عصبی از اون به بعد خودش می تونه  تشخیص بده، فقط مسئله ی اصلی اینجاست که شما چطور می خوای طول و عرض تابلو رو تعیین کنی مگر اینکه اون تابع که می نویسی خروجیه به صورت غیر قطعی یا احتمال نزدیک به واقعیت باشه، 
موفق باشی

----------


## sari-1369

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

----------


## sari-1369

الان یه مقاله ای پیدا کردم ، نمیدونم به دردم میخوره یا نه .

*ارائه روشي جديد براي فاصله يابي با دوربين با استفاده از درونيابي لاگرانژ* 

* خلاصه مقاله:*

 						 						در اين مقاله ضمن بررسي روشهاي مختلف محاسبه فاصله ، روشي براي  اندازه گيري فاصله شيء از دوربين ( عمق صحنه ) توسط يك دوربين ارائه مي  شود. روش پيشنهادي بر اساس فرمول درونيابي لاگرانژ است. براي پيدا كردن  پارامترهاي تابع درونياب ، يك مجموعه خطوط با فاصله مشخص از دوربين مورد  استفاده قرار مي گيرند و سپس فاصله تصوير هر خط در عكس برداشته شده از لبه  پائين تصوير ( به عنوان نقطه مرجع ) محاسبه مي شود. نتايج بدست آمده براي  روش پيشنهادي گوياي دقت بالا و حجم عمليات كم نسبت به روشهاي مورد بحث است


http://www.civilica.com/Paper-ICMVIP...VIP02_062.html

----------


## soroushp

آره با tan میشه همچین کاری رو کرد ، فقط مقاله ای که لینکش رو گذاشتی دانلود نداره ، باید چه کرد؟

----------


## مصطفی ساتکی

شما با یک دوربین نمی تونید به هیچ وجه همچین کاری رو انجام بدید عمق رو با 2 دوربین محاسبه می کنند و با یک دوربین تنها راهش اینه که فاصله مرکز object تا دوربین رو مشخص کنید که این هم اندازه های با یک تقریبی بدست میاد.
اگر هم دوربینش رو تهیه کردید می تونید از kinect sdk استفاده کنید

----------


## sari-1369

> آره با tan میشه همچین کاری رو کرد ، فقط مقاله ای که لینکش رو گذاشتی دانلود نداره ، باید چه کرد؟


این هم متن مقاله ، البته کمی بهم ریختست .

----------


## sari-1369

> شما با یک دوربین نمی تونید به هیچ وجه همچین کاری رو انجام بدید عمق رو با 2 دوربین محاسبه می کنند و با یک دوربین تنها راهش اینه که فاصله مرکز object تا دوربین رو مشخص کنید که این هم اندازه های با یک تقریبی بدست میاد.
> اگر هم دوربینش رو تهیه کردید می تونید از kinect sdk استفاده کنید


خب پس با این حساب فقط باید روی پردازش با دو دوربین کار کرد. حالا سوال من اینه که از تصویری که با دوربین های دولنزی ( 3D ) گرفتیم ، چطوری باید عمق رو استخراج کنیم ؟ 

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

----------


## aryasoft2872

با کینکت مسلما میشه چون من دیدم بعضی جاها اندازه اشیائ رو میگه...(دارم که میگم :دی)

----------


## sari-1369

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

----------


## مصطفی ساتکی

شما برای انجام چنین کاری بایستی 2 دوربین از یک برند و یک مدل داشته باشید معمولاً در اکثر مواقع دارای تصویر یکسانی هستند سعی کنید دوربینی انتخاب کنید که اعوجاج کمتری داشته باشید و گرنه مجبورید این اعوجاج رو برطرف کنید که در پایان در این باره توضیحاتی می دم.
شما هدفتون به این صورته که در فاصله n متری از دوربین خطوطی دیده میشه که میخاید متراژ این خطوط رو داشته باشید.
به عملیاتی که در machine vision از 2 دوربین استفاده میشه Stereoscopy گفته میشه که شما بایستی در ابتدا بتونید فاصله شی مورد نظر از دوربین  D رو بدست بیارید برای اینکار بایستی مراحل زیر رو طی کنید
1- دو دوربین فوق رو برروی یک شاسی به فاصله B (فاصله مرکز 2 لنز از یکدیگر) محکم فیت کنید توجه داشته باشید که مرکز 2 لنز به صورت افقی بایستی تراز باشد.
2- تصاویر 2 دوربین بایستی به صورت همزمان شات شود.
زاویه دید دوربین برابر با phi است که برای هر 2 دوربین یکسان می باشد.
نقطه مورد نظر شما که مایلید فاصله اون رو محاسبه کنید زاویه رو با راستای لنز تشکیل می دهد که به آنها phiL و phiR گفته می شود.
راستای نقطه مورد نظر بردار مابین لنز چپ و راست را در نقطه قطع می کند که فاصله مرکز لنز چپ تا این نقطه BL و فاصله لنز راست تا این نقطه BR گفته می شود.
حال B= BL + BR
BL = D * tan(phiL)
BR = D * tan(phiR)
B= D* tan(phiL) + D * tan(phiR)
D = B/(tan(phiL) + tan(phiR))
به این ترتیب فاصله نقطه مورد نظر از دوربین بدست آمد.
حالا یک خط کش یک متری تهیه کنید و در فاصله 1 متری از دوبین قرار گرفته و طول خط کش به پیکسل بدست آورید همین کار رو برای فاصله 2 متری تکرار کنید مسلماً اندازه کوچکتری بدست آوردید.
scale = dis2m / dis1m

حالا فاصله 2 نقطه را به پیکسل R بدست آورید تا با استفاده از رابطه زیر اندازه واقعی به متر را بدست آورید.

A=R/(dis2m/D)

دوربین های وب کم یا دوربین موبایل به استفاده از لنز های ارزان قیمت و محدودیت فاصله کانونی تصاویرشون دارای اعوجاج از نوع radial هستند که به صورت بشکه ای و بالشتکی ظاهر میشه 
یک مشکل دیگر که دارن زمان اسمبل کردن لنز روی imager  مربوط به CCD رخ می ده که به موازات هم قرار نمی گیرند که در این موارد از نوع tangential می باشد
که با بسط تیلر پارامترهای مدل اعوجاج در هر 2 حالت رو بدست میارن و بوسیله optimization این میزان خطا رو به کمک یک chessboard بدست میارن

----------


## sari-1369

ممنون از پاسختون  :لبخند: 

میرم که ببینم چه میکنم . :دی

--------------------------------------------------

راستی به نظر شما ، این دوربین ها ، با فرض اینکه بشه از هر لنز اونها یک تصویر مجزا دریافت کرد میتونه به ما کمک کنه ؟

----------


## مصطفی ساتکی

آره این دوربین هم خوبه با این دوربین ها می تونید offline کار کنید

----------


## maktoom

سلام
چیزی درمورد کینکت(Kinect) می دونید؟ فکر می کنم چیزی که شما لازم دارید همین کینکت باشه.
کینکت یه کنسول بازیه. دارای دو تا دوربین و یه سنسور مادون قرمز.
یکی از دوربین ها برای تشخیص رنگ و اون یکی برای عمق تصویره. یه پنل صوتی هم داره که اون رو فرمان پذیر از طریق صوت کرده.
ماکروسافت مدتیه که SDK های مربوط به اونرو بصورت رایگان گذاشته و از ملت دعوت کرده تا بیان این کنسول رو میشه گفت هک کنن.
در نمایشگاه اخیر CES هم که ماکروسافت کینکت مختص ویندوز 7 رو معرفی کرد که باهاش میشه با ویندوز کار کرد.
کافیه کینکتتون رو با کابل یو اس بیه مخصوصش به سیستمتون وصل کنید و با SDK ها و توابع صوتی ماکروسافت و برنامه نویسی اونو برای کار خودتون بومی سازی کنید.

موفق باشید

----------


## mosyhey

با سلام.

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

همان طور که گفته شد بایستی از به دست آوردن فاصله تابلو تا دوربین کار را آغاز کرد (هرچند که این کار، پردازش تصویر نیست). شاید بتوان با فرمول عدسی ها کاری کرد:




خودم با این روش و فرمول چند آزمایش کردم و نتیجه نگرفتم، اما در دوربین های پیشرفته تر، پارامتر فاصله که توسط خود دوربین اندازه گرفته می شود در اطلاعات exif عکس روبروی داده Distance و یا focusDistance نوشته می شود که می توان این اندازه را یکراست از عکس استخراج کرد. مثلاً اطلاعات exif این عکس و این عکس را ببینید. به نظر می آید اگر فوکوس درست انجام شود، در فاصله های کمتر از بینهایت اپتیکی این اندازه ها دقیق باشد. 

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

از نظر تئوری بهترین عکس کم خطا عکسی است که از امتداد خط عمود بر مرکز تابلو از آن گرفته شده باشد و تابلو در مرکز عکس باشد و نقطه فوکوس و مسافت سنج دوربین هم بر مرکز تابلو بیفتد. شاید بهتر باشد در دوربین های پیشرفته از فوکوس نقطه ای و مرکزی استفاده شود. همچنین دوربین باید دقیق بر تابلو فوکوس باشد. احتمالاً هرچه دیافراگم باز تر باشد بهتر است چون فوکوس دقیق تر انجام می شود.

----------


## مصطفی ساتکی

> یکی از دوربین ها برای تشخیص رنگ و اون یکی برای عمق تصویره. یه پنل صوتی هم داره که اون رو فرمان پذیر از طریق صوت کرده.


 هر دو دوربین یکسان و رنگ و عمق بوسیله هر 2 دوربین محاسبه میشه.




> احتمالاً هرچه دیافراگم باز تر باشد بهتر است چون فوکوس دقیق تر انجام می شود.


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

----------

