PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پردازش تصویر روی مارس بورد



farzadsw
04-05-2013, 11:54
همونطور که میدونید پردازش تصویر نیاز به این ۳ بخش داره: دوربین-بورد پردازنده- نرم افزار.
از نظر بورد پردازنده مارس بورد توان پردازشی نسبتا مناسبی داره (در حد beagleboard).
دوربین هم معمولا وبکم استفاده میشه.
اما مهمترین بخش نرم افزار هست. سیستم عامل بخشی از نرم افزاره که روی بقیه قسمتها هم تاثیر میزاره. سیستم عامل اندروید از یک طرف سیستم عامل دیفالت هست ومیشه برای پردازش تصویر ازش استفاده کرد(opencv جواب میده) ولی محدودیت زیاد داره. درایور خیلی وسایل جانبی رو نداره و تصویر رو نمیتونه به صورت realtime (در فریم ریت بالا) پردازش کنه.
بهترین سیستم عامل linux هست. خوشبختانه برای مارس بورد (کوبی) توزیع های مختلف لینوکس وجود داره. opencv هم که تو دو روش مستقیم و crosscompile قابل استفاده هست.
فقط یکی دوتا نکته کوچیک هست که برای راه اندازه دوربین باید بهش توجه کنید:

من هم Lubuntu و هم Linaro رو امتحان کردم. جفتشون درایور وبکم های uvc (مناسبترین نوع وبکم برای لینوکس!) رو ندارند. خوشبختانه سورس کرنل در دسترس هست و میشه ماژولهای مورد نیاز رو براش کامپایل کرد. البته نیازی به کامپایل نیست؛ قبلا این کار انجام شده ؛ کافیه دانلودش کنید (uvcvideo.ko) .
حالا کافیه این ماژول (uvcvideo.ko) رو با دستور زیر به کرنل اضافه کنید:
insmod uvcvideo.ko
حالا می تونید از وبکمهای uvc استفاده کنید. من وبکم microsoft vx800 رو تو محیط لینارو استفاده کردم.

farzadsw
04-05-2013, 12:08
ماژولی که من برای نسخه لینارو استفاده کردم رو ضمیمه کردم. ولی احتمالا برای لوبونتو هم قابل استفاده هست.

morteza_rk
04-05-2013, 12:22
سلام

ممنون فرزاد جان. پست واقعا مفیدید بود. تشکر تنها بی فایده بود. :wink:

Doloop
04-05-2013, 13:33
دستت درد نکنه مهندس :wink:

شما که دست به خریدت خوبه قیمت این وب کم چنده ؟؟؟

اگه مدل های بهتر از این هم هست معرفی کنید .. لطفا .:0013:

farzadsw
04-05-2013, 13:47
این رو حدود ۶۵ تومن خریدم. از نظر کیفیت وبکم خوبی هست، وبکم با کیفیت بالاتر (full HD) هم وجود داره ولی قیمتشون نجومیه! یک وبکم a4tech هم قبلا از یکی قرض گرفته بودم که اون هم کار می کرد. مدلش یادم نیست، فقط یادمه کروی بود!
بقیه وبکم های uvc هم باید کار بکنه. اگه روی جعبه وبکم نوشته باشه linux رو ساپورت میکنه، به احتمال ۹۹درصد uvc هست.

farzadsw
04-05-2013, 13:47
الان دارم opencv رو روی خود بورد کامپایل میکنم. ۱ گیگ سورس کده! فعلا ۴ ساعت گذشته و ۹۰ درصد رفته:mrgreen:
اگه مشکلی پیش نیاد تا چند ساعت آینده برنامه پردازش تصویر رو میتونم تست کنم.

beroz
04-05-2013, 15:03
الان دارم opencv رو روی خود بورد کامپایل میکنم. ۱ گیگ سورس کده! فعلا ۴ ساعت گذشته و ۹۰ درصد رفته:mrgreen:
اگه مشکلی پیش نیاد تا چند ساعت آینده برنامه پردازش تصویر رو میتونم تست کنم.

من داشتم با هزار بدبختی سعی میکردم OV7670 رو با مارس راه بندازم اصلا به فکرم نرسیده بود میتونم ی وبکم یو اس بی استفاده کنم
ممنون مهندس حتما رو بردم تستش میکنم :o

ali_h
04-05-2013, 15:12
سلام
مهندس، پردازنده مارس بورد، fpu داره؟

farzadsw
04-05-2013, 18:36
سلام
مهندس، پردازنده مارس بورد، fpu داره؟
بله به صورت سخت افزاری داره. به همین دلیل اگر قصد کراس کامپایل دارید، بهتره از نسخه gnueabihf استفاده کنید که hf آخرش برای همون fpu سخت افزاری هست.

farzadsw
04-05-2013, 19:07
من داشتم با هزار بدبختی سعی میکردم OV7670 رو با مارس راه بندازم اصلا به فکرم نرسیده بود میتونم ی وبکم یو اس بی استفاده کنم
ممنون مهندس حتما رو بردم تستش میکنم :o
چند سری مثال opencv رو با دوربین تست کردم. سرعت پردازش تعریفی نداره! :sa:
یعنی بسته به کاربرد شما داره ولی در کل برای خود من رضایت بخش نبود.
به عنوان مثال برنامه optical flow که نه خیلی سبک و نه خیلی سنگین هست رو اجرا کردم. در حالت رزولیشن 640در 480، فریم ریت حدود 7-8 فریم بود و تاخیر زیادی هم تو تصویر دیده میشه (حدود 1 ثانیه!). :unh:
رزولیشن رو تا 160 در 120 کم کردم، فریم ریت بالا رفت (حدود 25-30) ولی باز هم تاخیر مشهود بود (حدود 300-400 میلی ثانیه).cry::
خلاصه اینکه برای پردازشهای realtime با opencv چنگی به دل نمی زنه. ولی یکسری مواقع هست که تاخیر زیاد اهمیت نداره، برای اون جور کارها خوبه.

اما علت چیه!؟
در حین همین مثالهایی که تست می کردم، دیدم بعضی مواقع تنها تصویر نمایش داده می شد و پردازش خاصی رو انجام نمی داد ولی cpu حدود 70 درصد لود شده بود و مشکلات فریم ریت پایین هم وجود داشت!:baad:
اما نکته جالب این بود که با نرم افزار guvcview تصویر رو حتی تو حالت 640x480 با 30 فریم نمایش میداد. تو این حالت cpu فقط 15 درصد لود میشد!
با یکم بررسی بیشتر مشخص شد که وبکم من دو نوع خروجی YUV و RGB رو ساپورت میکنه، که اولی فشرده نشده و دومی فشرده شده هست. opencv هر تصویری که از دوربین میگیره، اول به RGB تبدیل میکنه و بعد استفاده میکنه :( ولی اون برنامه guvcview هردوی اینها رو ساپورت میکنه. وقتی فرمت تصویر رو در guvcview از YUV به RGB تغییر دادم دیدم که فریم ریت به شدت پایین اومد (حدود 15) و cpu هم حدود 60 درصد لود شد!:mrgreen:
البته تو حالت RGB هم باز guvcview از opencv سریعتر تصویر رو نمایش میده ولی مشکل اصلی همینه که opencv از فرمت فشرده نشده YUV نمیتونه مستقیم استفاده کنه و همین عمل باز کردن RGB بیشتر cpu رو میگیره.

با این حساب تنها راه پردازش realtime روی این پردازنده ها اینه که اولا تا حد امکان ابعاد یا فریم ریت رو کم کرد و اگر امکانش باشه از یک طریق دیگه (به جز توابع اصلی opencv) تصاویر رو از وبکم خوند (مثل کتابخونه V4l).

من سعی میکنم این مشکل فرمت RGB رو دور بزنم، اگر شما هم راه حلی پیدا کردید بگید. اینطوری سرعت پردازش حدود 2-3 برابر بیشتر میشه!:wink:

ali_h
05-05-2013, 10:22
مهندس مطمئنم که openCV 1.0 می تونست تصاویر YUV رو هم از دوربین بگیره. دقیقاً الان حضور ذهن ندارم بگم کدوم تابع بود ولی یه پارامتر به صورت string داشت که مشخص می کردیم تصویر رو با چه چیدمان بایت و با چه فرمتی از دوربین بخونه.
شما از چه ورژنی استفاده می کنی؟

farzadsw
05-05-2013, 12:59
من از ورژن 2.4.4 استفاده میکنم. تو این نسخه که فقط با RGB کار میکنه (البته بعدش میشه به YUV تبدیل کرد ولی دیگه فایده نداره). ترجیه میدم با نسخه های قدیمی تر کار نکنم چون تو این جدیدها توابع بهینه تر نوشته شدن و هم 1 روز روی کامپایلش وقت گذاشتم ! حافظه هم کم مونده و نمیتونم جفتشون رو با هم استفاده کنم.
این چند روز درگیر پروژه دانشگاه هستم، بعدش یکم سعی میکنم این کلاس videocapture خود opencv رو دور بزنم (با V4L میشه گویا) اگه اون هم جواب نداد مجبورم برم سراغ نسخه های قبلی

ali_h
05-05-2013, 13:22
منم 100 درصد موافقم که با نسخه های قدیمی کار نکنین. منتهی گفتم چونکه تو نسخه های قبلی هست به احتمال قوی توی نسخه های جدید هم هست.

farzadsw
05-05-2013, 16:57
خب بالاخره این مشکل هم حل شد!:o
با استفاده از کتابخونه V4L میشه تصویر با فرمت YUV رو مستقیم از وبکم خوند، اینطوری نیازی به به دیکود کردن تصویر فشرده (jpeg) تو حالت RGB نیست. از طرف دیگه با YUV خیلی سریعتر تصویر رو میشه به grayScale تبدیل کرد.
الان پیش نمایش تصویر با V4L مشابه guvcview پردازش میگره و تو رزولیشن 120*160 فقط 5-6 درصد از cpu مشغول میشه! قبلا با VideoCapture خود opencv همین کار حدود 60 درصد از cpu رو میگرفت! همش هم به خاطر دیکود کردن jpeg بوده.:mrgreen:
برنامه شار نوری رو اجرا کردم. با 3-4 تا نقطه، حدود 15 درصد cpu لود میشد و با 20 تا نقطه حدود 35 درصد و از اون به بعد دیگه تاخیر مشهود میشد.
تو تصویر زیر میزان cpu مصرف شده و (بخشی از) خروجی برنامه شار نوری رو میبیند:

You can see links before reply

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

خلاصه اینکه راه افتاد:0013:

dariush_ab
06-05-2013, 00:34
سلام آقا فرزاد.
خوشحالم که موفق شدید.
فکر کنم مهندس زارعی یک سری دوربین میخوان بیارن.
اگر لطف کنید یک آموزش گام به گام که برای این دوربین ها عملی باشه و دوستانی که قصد شروع از صفر را دارند بتونن کار کنن بگذارید تا به ویکی منتقل کنیم خیلی خوب میشه.
راستی من دو لینک خیلی خوب براتون سراغ دارم.حتما ببینید:
این لینوکس تقریبا مثل lubuntu خودمون هستش ولی واقعا روش کار کردن.
You can see links before reply
You can see links before reply

و این هم realtime:

You can see links before reply

silentshot
06-05-2013, 01:03
اقا فرزاد دوربین شما خروجی تصویرش yuvهستش؟
اگه دوربین خروجیش به صورت پیشفرض رو rgb هم باشه مشکلی ایجاد میشه؟

من الان درگیر دوربینم کرنل رو تصحیح کردم

farzadsw
06-05-2013, 01:48
این بورد PCduino بورد خیلی خوبی هست، شاید از نظر امکانات فرق چندانی با marsboard نداشته باشه ولی "پدر و مادر" دار هست. این خودش باعث میشه تعداد افراد زیادی روش کار کنند و خیلی بیشتر توسعه پیدا کنه. البته مثل خود ARDUINO نمیشه ولی فکر کنم در حد beagle board روش کار بشه.
به هر حال ما که مارس یورد رو داریم استفاده میکنیم و گلیم خودمون رو از آب میکشیم بیرون.

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

320×240 px and 10 frames per second
راه حل این قضیه YUV,RGB رو من با کلی جستجو پیدا کردم (تو فروم beagleboard) .
یا برای سادگی بیشتر به جای opencv از simplecv استفاده کردن که در واقع همون opencv هست ولی کندتر!
(اوایلش اینطوریه ولی بعد که تعداد اعضاشون زیاد بشه کارهای جالبی خواهند کرد که ما یاد بگیریم:mrgreen:)

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

farzadsw
06-05-2013, 01:53
اقا فرزاد دوربین شما خروجی تصویرش yuvهستش؟
اگه دوربین خروجیش به صورت پیشفرض رو rgb هم باشه مشکلی ایجاد میشه؟

من الان درگیر دوربینم کرنل رو تصحیح کردم

برای من هم YUV و هم RGB داره. پیشفرضش فکر کنم YUV باشه.
شما نرم افزار guvcview رو استفاده کنید مشخص میشه.
فکر نمیکنم مشکلی ایجاد بشه، تو V4L میتونید فرمت خروجی رو تعیین کنید.

dariush_ab
07-05-2013, 21:55
دقیقا چه دوربینی میخوان تهیه کنند؟
آخر هفته سعی میکنم مطالب رو یکم شسته رفته کنم.
سلام.
آقا فرزاد عزیز خیلی لطف می کنید.
راستش من هم دقیقا نمی دونم چه دوربینی قراره بیارن.باید صبر کنیم تا ok بشه.
موفق باشید.

farzadsw
17-05-2013, 22:05
بابت تاخیر من شرمنده هستم، امتحانات میان ترم و ترم شروع شده(6 ام خرداد امتحانات تموم میشه). در اولین فرصت یک آموزش کامل به همراه مثال پردازش تصویر+ارتباط سریال قرار میدم.

fazel459
17-05-2013, 23:12
سلام جناب فرزاد
من هم علاقه زیادی به پردازش تصویر با این برد دارم .ممنون میشم یک راهنمای جامع بگذارید.
برای این کار مارس بهتره یا کوبی؟
تشکر

farzadsw
17-05-2013, 23:54
هیچ تفاوتی بین مارس و کوبی برای این کار (پردازش تصویر و ارتباط سریال) وجود نداره.
mk808 حدود 3 برابر قوی تر هست ولی چون چیپستش فرق داره و کد بسته بوده؛ فعلا لینوکس رو رسما ساپورت نمیکنه (چیپ گرافیکی، ماژول وای فای/بلوتوٍث درایور ندره).
با همین مارس میشه خیلی کارها کرد، تو تابستون من روی mk808 هم کار خواهم کرد. (اگر یه نمایشگر ارزون با ورودی hdmi باشه کارها خیلی سریعتر جلو میره)

Doloop
18-05-2013, 20:14
اگر یه نمایشگر ارزون با ورودی hdmi باشه کارها خیلی سریعتر جلو میره

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

البته مثل اینکه مهندس زارعی داره پیگیری میکنه امیدوارم زودتر این قضیه حل بشه :0013: انشاا...

silentshot
19-05-2013, 01:20
دوست عزیز میشه یه برنامه تست واسه کتابخونه V4l بزاری ؟
من با simplecv کار کردم خیلی راحته کلی مثال و example هم براش هست فقط به زبان pythone
opencv هم run کردم چنگی به دل نمی زد
ایا کتابخونه دیگه ایی برای پردازش تصویر موجوده؟

beroz
19-05-2013, 02:18
متاسفانه اصلا نمی‌شه رو وبکم حساب کرد پردازش اولیه که برنامه روی خروجی وبکم انجام میده خیلی‌ سی‌ پی‌ یو میگیره
پس چرا تپلت‌هایی‌ که دقیقا از همین سی‌ پی‌ یو دارن استفاده می‌کنن مشکل هنگ کردن یا مصرف بالای سی‌ پی‌ یو ندارن؟
من فکر کنم ما باید دوربین‌هایی‌ مثل ov7670 رو راه بندازیم و از csi استفاده کنیم تا یک بخش زیادی از پردازشی که روی تصویر خروجی‌ وبکم انجام می‌شه حذف بشه
فکر کنم بی‌ دلیل نبوده ۲ تا ورودی دوربین روی این برد هست توی تپلت‌ها هم دقیقا از همین ۲ تا ورودی واسه گرفتم تصویر از دوربین استفاده می‌شه

farzadsw
19-05-2013, 13:42
دوست عزیز میشه یه برنامه تست واسه کتابخونه V4l بزاری ؟
من با simplecv کار کردم خیلی راحته کلی مثال و example هم براش هست فقط به زبان pythone
opencv هم run کردم چنگی به دل نمی زد
ایا کتابخونه دیگه ایی برای پردازش تصویر موجوده؟

فایل مثال v4l الان دم دستم نیست (داخل خود مارسه)، اگه عجله دارید opencv yuv رو تو فروم بیگل بورد جستجو کنید تا مثالش رو پیدا کنید.

SimpleCV همون OPENCV هست با یکسری کتابخونه اضافی که کمک میکنه با پایتون راحتتر کد بنویسید. من 1 سال پیش استفاده کردم (رو لپتاپ) کندتر از خود opencv بود و باگ هم زیاد داشت.
opencv مشکلش فقط تو دریافت تصویر از دوربین هست (کنده) ولی بقیه مواردش مشکلی نداره.
کتابخونه بازم هست (عمدتا قدیمی هستند و آپدیت نشدن) ولی مثل opencv نمیشه.

farzadsw
19-05-2013, 13:48
متاسفانه اصلا نمی‌شه رو وبکم حساب کرد پردازش اولیه که برنامه روی خروجی وبکم انجام میده خیلی‌ سی‌ پی‌ یو میگیره
پس چرا تپلت‌هایی‌ که دقیقا از همین سی‌ پی‌ یو دارن استفاده می‌کنن مشکل هنگ کردن یا مصرف بالای سی‌ پی‌ یو ندارن؟
من فکر کنم ما باید دوربین‌هایی‌ مثل ov7670 رو راه بندازیم و از csi استفاده کنیم تا یک بخش زیادی از پردازشی که روی تصویر خروجی‌ وبکم انجام می‌شه حذف بشه
فکر کنم بی‌ دلیل نبوده ۲ تا ورودی دوربین روی این برد هست توی تپلت‌ها هم دقیقا از همین ۲ تا ورودی واسه گرفتم تصویر از دوربین استفاده می‌شه
تبلتها با CSI مستقیم به دوربین وصل میشن و برای همین تاخیر کمتری داره (نسبت به usb). در مورد پردازش مورد نیاز کپچر هم احتمالا باید کمتر باشه ولی تا امتحان نکنیم معلوم نمیشه.
درایور راه اندازی csi رو لینوکس لینارو و لوبونتو داره، فقط باید سخت افزار رو درست متصل کرد، مثال استفاده از ov7670 هم که تو اینترنت هست.

beroz
19-05-2013, 14:26
تبلتها با csi مستقیم به دوربین وصل میشن و برای همین تاخیر کمتری داره (نسبت به usb). در مورد پردازش مورد نیاز کپچر هم احتمالا باید کمتر باشه ولی تا امتحان نکنیم معلوم نمیشه.
درایور راه اندازی csi رو لینوکس لینارو و لوبونتو داره، فقط باید سخت افزار رو درست متصل کرد، مثال استفاده از ov7670 هم که تو اینترنت هست.

وصل کردنش که خیلی‌ سر راسته مشکلی‌ نداره
مشکل همون بخش مثالش هست که هیچ مثالی تو اینترنت پیدا نمی‌شه همه مثل‌ها واسه avr و arm atmel lpc stm32 هست که به کار من نمیاد چون من نیاز دارم با استفاده از پایتون تصویر رو از دوربین دریافت کنم

silentshot
13-09-2013, 23:55
ادامه بحث و رو من اینجا انجام میدم
خروجی های رو که بدست میاریم هم همینجا می گم (بزودی تجربیات خودم در باره simplecv در قالب تایپیک می گم) دوستان هم دست بکار بشن هرکسی علاقه داره با ما همراه شه

الان دوربینی که من در اختیار دارم با guvcview امتحان کردم هم فرمت yuv هم rgb اگه بخوام با opencv کار کنم (بدون تبدیل از yuv به rgb ) این امکان هست که به دوربین دستوری بدم که فرمت rgb رو برام ارسال کنه؟؟؟

با تشکر

Hesam1984
14-09-2013, 01:33
بجز این Open source ها، ابزار تجاری دیگری برای کارهای پردازش تصویر هست
?

zamanyad
16-12-2013, 02:11
ممنون بابت تاپیک خوبتون
میشه مستندات کارهای که انجام دادین رو برای ما هم بگذارین ممنون میشیم

farzadsw
27-12-2013, 21:13
ممنون بابت تاپیک خوبتون
میشه مستندات کارهای که انجام دادین رو برای ما هم بگذارین ممنون میشیم

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

یه سوالی هم که من دارم اینه که از اون موقع تا الان هیچ کسی کاری با پردازش تصویر انجام نداده!؟ لااقل بیان اینجا نتیجه کارشون رو بگن که نشون بده تاپیک مفید هست! :|
مثلا این یک ویدئو هست که با پردازش تصویر روی mk808 سرعت کوادروتور رو اندازه گرفتم :
کنترل خودکار موقعیت کوادروتور (You can see links before reply)

zamanyad
27-12-2013, 23:06
اینجا یک فروم هست، و این یعنی باید مشکلات مطرح بشه و بعد در موردشون صحبت کنیم. من تقریبا تمام مراحلی که برای پردازش تصویر روی این بوردها رفتم رو اینجا نوشتم. کجاش رو سوال دارید؟
اگرم منظورتون از مستندات، فایل کد برنامه هست، متاسفانه نمی تونم فایل رو در اختیارتون بگذارم.

یه سوالی هم که من دارم اینه که از اون موقع تا الان هیچ کسی کاری با پردازش تصویر انجام نداده!؟ لااقل بیان اینجا نتیجه کارشون رو بگن که نشون بده تاپیک مفید هست! :|
مثلا این یک ویدئو هست که با پردازش تصویر روی mk808 سرعت کوادروتور رو اندازه گرفتم :
کنترل خودکار موقعیت کوادروتور (You can see links before reply)

ممنون بابت جوابتون
اقا فرزاد میدونم اینجا یک فروم هست و یک فروم ایرانی!
مشکلات مطرح میشه اما کسی جوابگو نیست اینقدر مشکلات برای ما تازه کار ها زیاد هست که نمیدونیم از کجا شروع کنیم!
شما همه قسمت ها رو نوشتین اما همیشه سوالاتر جدیدی پیش میاد

متاسفانه کسی جوابگو نیست یا اگر هم کار کردن کسی جواب نمیده

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