پاسخ : Frequently Asked Questions -- مـبـاحـث و سـوالات مـتـداول
سلام ..................
تفاوت بین MATLAB با سایر نرم افزارهای مشابه ..
خب .. خدمتتون عرض کنم که توی متن سوال قید کردید که آیا برای پردازش تصویر جز نرم افزار متلب، نرم افزار دیگه ای هم وجود داره یا خیر.. جواب این سوال شما مثبته به این معنا که برای پردازش تصویر نرم افزاری های دیگه ای هم وجود داره که میتونه برای تحلیل و سیمولیشن خیلی مفید باشه .. ممکنه اینطور استنباط بشه که این نرم افزارها صرفا برای امر پردازش تصویر اختصاص داده شد؛ اما این برداشت زیاد دقیق نیست و اصل موضوع به این نکته میپردازه که به عنوان Application جانبی در پردازش تصویر کار برد دارن .. دوتا نرم افزاری که مد نظرم هست رو خدمتتون عرض میکنم و تا حدی که میدونم از متلب در مقابل اونها دفاع میکنم ..
یکی از این نرم افزارها که حتما اسمش رو هم زیاد شنیدید؛ نرم افزار Labview هست .. این نرم افزار از اون دسته نرم افزار هایی هست که صرفا برای پردازش تصویر پیش بینی نشده و به عنوان یک Task جانبی، امکان پردازش تصویر رو فراهم میکنه .. کاربرد اصلی این نرم افزار در زمینه ی الکترونیکه و به عنوان یک رقیب برای Proteus ایفای نقش میکنه .. به عنوان مثال اگه شما بخواید با رفتار یک LCD گرافیکی آشنا بشید به سادگی میتونید توی هر دوی اینها قطعه ی مورد نظرتون رو (با هر چیپ درایوری که توسط library نرم افزارها ساپورت میشه..) Load کنید و با دستورات و برنامه هایی که براش مینویسید (توسط یه کنترلر مثل میکرو..) صحت اجرای برنامه رو به دقت ببینید ..
میبینیم که در زمینه ی الکترونیک این نرم افزار میتونه خیلی کاربردی باشه امــا برخی امکاناتی که در Proteus هست، در Labview نیست و بر عکس .. اینجا قصد نداریم روی برجستگی های ذاتی نرم افزارها در محدوده ی الکترونیک صحبت کنیم پس از کنار این موضوع به آرامی میگذریم .. امکان مضاعفی که در Labview فراهم هست؛ محیط سینتکس برای کد نویسی اون هست؛ به این معنا که میتونید خطوط برنامه نویسیتون رو در قالب کدهای الگوریتمی پیاده سازی کنید .. درست مثل حالتی که برای نرم افزار H-Spice وجود داره منتهی اینجا سینتکس ها به صورت بلوکی اجرا و پیاده سازی میشن .. مثلا اگه بخوایم یه نمودار سینوسی رسم کنیم به راحتی میتونیم با استفاده از چند Option خاص و صرفا انتخاب برخی feature ها نمودار رو رسم کنیم .. در اینجا آرایه تعریف میشه امــا با انتخاب گزینه ای خاص .. متغییر داریم؛ کلاستر داریم، گراف بار داریم امــا با انتخاب گزینه هایی خاص ..
در متلب هم وضعیت به این ترتیبه امــا آزادی عمل در پیاده سازی کدها بیشتر از Labview هست .. اگه بخوایم به طور عام مقایسه ی کلی داشته باشیم میتونیم محیط سیمولینک رو با محیط معمولی متلب قیاس کنیم .. اونجا برای نوشتن For باید یه بلوک به نام For فراخوانی کنیم و با دنبال هم قرار دادن یک سری بلوک های دیگه، الگوریتم مورد نظرمون رو پیاده سازی کنیم امــا اگه بخوایم در محیط عادی متلب کار کنیم؛ به سهولت کدها رو با ساختار سینتکسی وابسته مینویسیم و پیاده سازی میکنیم .. از طرفی، توابعی که در متلب به عنوان ضمائم Toolbox ها لحاظ شدن بسیار فراتر از اونچیزی هستن که بخوایم تصور کنیم .. مخصوصا ورژن های جدید متلب که توابع جدیدتری رو پیش بینی کرده خیلی میتونه در رقابت با سایر نرم افزار ها پیروز باشه .. نکته ی دیگه ای که در این توابع وجود داره اینه که از نظر دقت اجرا به یک حالت استانداردی رسیده به این معنا که هر کجا و در هر Source Code ای که از دستور imread (به عنوان مثال..) استفاده میشه؛ این اطمینان رو به کاربر میده که این تصویر به خوبی خونده شده و به صورت معادل دیجیتال شده و اگه بخوایم؛ با فراخوانی سریع متغییر ذخیره شده؛ میتونیم ماتریس اون رو ببینیم و این حالت استاندارد خیلی جاها به کمک برنامه ها و پیاده سازی ها میاد تا جاییکه روند نوشتن کدهارو در برخی مراحل خیلی ساده میکنه ..
برای مثال فرض کنید شما یک سری دیتا دارید و میخواید اونهارو به یک سری Cluster تقسیم بندی کنید با این شرط که نسبت Cluster ها به هم از Discriminative Power حداکثر برخوردار باشه .. اگه بخوایم کدنویسی رو از ابتدا انجام بدیم؛ باید یه الگوریتم Clustering بنویسیم که Accuracy بالایی داشته باشه و بتونه اون شرطی که گفتیم رو برآورده کنه .. خب نوشتن یک همچین کدی اون هم وسط یک پروژه بسیار وقت گیره و شاید در انتها اون منظوری که ما از Clustering انتظار داشتیم رو برآورده نکنه .. امــا دستوری توی خود متلب هست (توی تولباکس Statistics..) که این کار رو برای ما انجام میده اون هم با متدی که قبلا صحتش اثبات شده (متد Seber و Spath..) و دیگه ما نگران این نکته نیستیم که آیا دقت Clustering به درد ما میخوره یا نه .. اون تابع هم Kmeans هست که برای خودش جریانات جالبی داره ..
نرم افزار دومی که اتفاقا خیلی هم استفاده میشه نرم افزار Open-CV هست .. این نرم افزار هم محیطی جالب داره که میتونه تا حد زیادی با متلب رقابت کنه .. من خودم هیچ وقت با اون کار نکردم (البته به طور مداوم..) امــا برخی Tutorial هاش رو که میدیدم واقعا برام جالب بودن .. توی یکی از تاپیک ها در این مورد صحبت کردیم (البته من فقط استفاده میکردم..) جناب بهین فراز تاپیکش رو زده بودن .. لینکش رو در انتهای مطالب براتون میذارم تا بتونید با فضای اون نرم افزار هم ارتباط بر قرار کنید ..
کلا این نرم افزار از قابلیت بالاتری نسبت به Labview برخورداره و تا اونجاییکه من میخوندم؛ برخی مواقع هم به خاطر سرعت پردازش از متلب پیشی میگیره .. امــا زیاد مهم نیست! متلب امتحانش رو پس داده .. به هر حال این نرم افزار هم نرم افزار خوبیه و محیط برنامه نویسیش مثل C هست (تا اونجاییکه میدونم..) و کار کردن باهاش خیلی راحت تر از سایر نرم افزارهاست .. انتهای این پست دوتا لینک براتون میذارم که دو نرم افزاری که در بالا تعریف کردم رو کمی باز کرده .. امیدوارم اونها بتونه بهتون کمک کنه تا در انتخاب نرم افزار به مشکل نخورید .. در مورد زبانهای برنامه نویسی که فرمودید هم باید بگم که اتفاقا برخی الگوریتم های پردازشی با C# نوشته میشن و برخی هم با C++ و برخی هم حتی با بیسیک .. امــا دلیل اینکه از متلب در پیاده سازی الگوریتم های پردازشی استفاده میشه؛ توابع پشتیبانی شده و محیط گرافیکی برای تحلیل وقایعیه که در ضمن اجرا با اونها برخورد میکنیم و این مهمترین نکته ایه که بهش پرداخته شده و میشه .. موفق باشید ..
http://www.eca.ir/forum2/index.php?topic=23320.0
http://www.eca.ir/forum2/index.php?topic=22413.0
نوشته اصلی توسط ellisa
سلام ..................
تفاوت بین MATLAB با سایر نرم افزارهای مشابه ..
خب .. خدمتتون عرض کنم که توی متن سوال قید کردید که آیا برای پردازش تصویر جز نرم افزار متلب، نرم افزار دیگه ای هم وجود داره یا خیر.. جواب این سوال شما مثبته به این معنا که برای پردازش تصویر نرم افزاری های دیگه ای هم وجود داره که میتونه برای تحلیل و سیمولیشن خیلی مفید باشه .. ممکنه اینطور استنباط بشه که این نرم افزارها صرفا برای امر پردازش تصویر اختصاص داده شد؛ اما این برداشت زیاد دقیق نیست و اصل موضوع به این نکته میپردازه که به عنوان Application جانبی در پردازش تصویر کار برد دارن .. دوتا نرم افزاری که مد نظرم هست رو خدمتتون عرض میکنم و تا حدی که میدونم از متلب در مقابل اونها دفاع میکنم ..
یکی از این نرم افزارها که حتما اسمش رو هم زیاد شنیدید؛ نرم افزار Labview هست .. این نرم افزار از اون دسته نرم افزار هایی هست که صرفا برای پردازش تصویر پیش بینی نشده و به عنوان یک Task جانبی، امکان پردازش تصویر رو فراهم میکنه .. کاربرد اصلی این نرم افزار در زمینه ی الکترونیکه و به عنوان یک رقیب برای Proteus ایفای نقش میکنه .. به عنوان مثال اگه شما بخواید با رفتار یک LCD گرافیکی آشنا بشید به سادگی میتونید توی هر دوی اینها قطعه ی مورد نظرتون رو (با هر چیپ درایوری که توسط library نرم افزارها ساپورت میشه..) Load کنید و با دستورات و برنامه هایی که براش مینویسید (توسط یه کنترلر مثل میکرو..) صحت اجرای برنامه رو به دقت ببینید ..
میبینیم که در زمینه ی الکترونیک این نرم افزار میتونه خیلی کاربردی باشه امــا برخی امکاناتی که در Proteus هست، در Labview نیست و بر عکس .. اینجا قصد نداریم روی برجستگی های ذاتی نرم افزارها در محدوده ی الکترونیک صحبت کنیم پس از کنار این موضوع به آرامی میگذریم .. امکان مضاعفی که در Labview فراهم هست؛ محیط سینتکس برای کد نویسی اون هست؛ به این معنا که میتونید خطوط برنامه نویسیتون رو در قالب کدهای الگوریتمی پیاده سازی کنید .. درست مثل حالتی که برای نرم افزار H-Spice وجود داره منتهی اینجا سینتکس ها به صورت بلوکی اجرا و پیاده سازی میشن .. مثلا اگه بخوایم یه نمودار سینوسی رسم کنیم به راحتی میتونیم با استفاده از چند Option خاص و صرفا انتخاب برخی feature ها نمودار رو رسم کنیم .. در اینجا آرایه تعریف میشه امــا با انتخاب گزینه ای خاص .. متغییر داریم؛ کلاستر داریم، گراف بار داریم امــا با انتخاب گزینه هایی خاص ..
در متلب هم وضعیت به این ترتیبه امــا آزادی عمل در پیاده سازی کدها بیشتر از Labview هست .. اگه بخوایم به طور عام مقایسه ی کلی داشته باشیم میتونیم محیط سیمولینک رو با محیط معمولی متلب قیاس کنیم .. اونجا برای نوشتن For باید یه بلوک به نام For فراخوانی کنیم و با دنبال هم قرار دادن یک سری بلوک های دیگه، الگوریتم مورد نظرمون رو پیاده سازی کنیم امــا اگه بخوایم در محیط عادی متلب کار کنیم؛ به سهولت کدها رو با ساختار سینتکسی وابسته مینویسیم و پیاده سازی میکنیم .. از طرفی، توابعی که در متلب به عنوان ضمائم Toolbox ها لحاظ شدن بسیار فراتر از اونچیزی هستن که بخوایم تصور کنیم .. مخصوصا ورژن های جدید متلب که توابع جدیدتری رو پیش بینی کرده خیلی میتونه در رقابت با سایر نرم افزار ها پیروز باشه .. نکته ی دیگه ای که در این توابع وجود داره اینه که از نظر دقت اجرا به یک حالت استانداردی رسیده به این معنا که هر کجا و در هر Source Code ای که از دستور imread (به عنوان مثال..) استفاده میشه؛ این اطمینان رو به کاربر میده که این تصویر به خوبی خونده شده و به صورت معادل دیجیتال شده و اگه بخوایم؛ با فراخوانی سریع متغییر ذخیره شده؛ میتونیم ماتریس اون رو ببینیم و این حالت استاندارد خیلی جاها به کمک برنامه ها و پیاده سازی ها میاد تا جاییکه روند نوشتن کدهارو در برخی مراحل خیلی ساده میکنه ..
برای مثال فرض کنید شما یک سری دیتا دارید و میخواید اونهارو به یک سری Cluster تقسیم بندی کنید با این شرط که نسبت Cluster ها به هم از Discriminative Power حداکثر برخوردار باشه .. اگه بخوایم کدنویسی رو از ابتدا انجام بدیم؛ باید یه الگوریتم Clustering بنویسیم که Accuracy بالایی داشته باشه و بتونه اون شرطی که گفتیم رو برآورده کنه .. خب نوشتن یک همچین کدی اون هم وسط یک پروژه بسیار وقت گیره و شاید در انتها اون منظوری که ما از Clustering انتظار داشتیم رو برآورده نکنه .. امــا دستوری توی خود متلب هست (توی تولباکس Statistics..) که این کار رو برای ما انجام میده اون هم با متدی که قبلا صحتش اثبات شده (متد Seber و Spath..) و دیگه ما نگران این نکته نیستیم که آیا دقت Clustering به درد ما میخوره یا نه .. اون تابع هم Kmeans هست که برای خودش جریانات جالبی داره ..
نرم افزار دومی که اتفاقا خیلی هم استفاده میشه نرم افزار Open-CV هست .. این نرم افزار هم محیطی جالب داره که میتونه تا حد زیادی با متلب رقابت کنه .. من خودم هیچ وقت با اون کار نکردم (البته به طور مداوم..) امــا برخی Tutorial هاش رو که میدیدم واقعا برام جالب بودن .. توی یکی از تاپیک ها در این مورد صحبت کردیم (البته من فقط استفاده میکردم..) جناب بهین فراز تاپیکش رو زده بودن .. لینکش رو در انتهای مطالب براتون میذارم تا بتونید با فضای اون نرم افزار هم ارتباط بر قرار کنید ..
کلا این نرم افزار از قابلیت بالاتری نسبت به Labview برخورداره و تا اونجاییکه من میخوندم؛ برخی مواقع هم به خاطر سرعت پردازش از متلب پیشی میگیره .. امــا زیاد مهم نیست! متلب امتحانش رو پس داده .. به هر حال این نرم افزار هم نرم افزار خوبیه و محیط برنامه نویسیش مثل C هست (تا اونجاییکه میدونم..) و کار کردن باهاش خیلی راحت تر از سایر نرم افزارهاست .. انتهای این پست دوتا لینک براتون میذارم که دو نرم افزاری که در بالا تعریف کردم رو کمی باز کرده .. امیدوارم اونها بتونه بهتون کمک کنه تا در انتخاب نرم افزار به مشکل نخورید .. در مورد زبانهای برنامه نویسی که فرمودید هم باید بگم که اتفاقا برخی الگوریتم های پردازشی با C# نوشته میشن و برخی هم با C++ و برخی هم حتی با بیسیک .. امــا دلیل اینکه از متلب در پیاده سازی الگوریتم های پردازشی استفاده میشه؛ توابع پشتیبانی شده و محیط گرافیکی برای تحلیل وقایعیه که در ضمن اجرا با اونها برخورد میکنیم و این مهمترین نکته ایه که بهش پرداخته شده و میشه .. موفق باشید ..
http://www.eca.ir/forum2/index.php?topic=23320.0
http://www.eca.ir/forum2/index.php?topic=22413.0
دیدگاه