NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3872 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 9 از 9

موضوع: پردازش تصویر

  1. #1
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض پردازش تصویر

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

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: پردازش تصویر

    پردازش تصویر با نرم افزار مطلب :
    با نرم افزار مطلب در بخش معرفی نرم افزار ها (http://ir-man.com/showthread.php?tid=11)اشنا شدید در این بخش میخواهیم به بررسی نحوه پردازش تصویر با این نرم افزار بپردازیم :
    در این نرم افزار اکثر عملیات ها برپایه ماتریس ها انجام میشه (ضرب٬ تقسیم٬ جمع٬...). مطلب یجورایی شبیه یه زبون برنامه نویسی هستش و ما در اون از متغیرها٬ عملگرها و توابع و... بسبک زبانهای برنامه نویسی جهت حل مثائل خودمون استفاده می کنیم. اصلا بیاید یه مثال عملی بزنیم:
    کد:
    >> I = 1:10
    
    I =
    
         1     2     3     4     5     6     7     8     9    10
    اجرا کردن دستور I = 1:10 باعث ایجاد یک متغیر به نام I و به شکل یک ماتریس یک بعدی با محتوای ۱ تا ۱۰ می شود (این اولبن و آخریم مثال سطح پایینم بود! توقع دارم اینارو خودتون با خوندن یک کتاب یاد بگیرید) حالا بریم سراغ یک مثال تخصصی:


    کد:
    RGB = imread('peppers.png'); ٪متغیر = imread('مسیر ونام فایل تصویر');
    imshow(RGB);
    تابع "imread" یکی از توابع جعبه ابزار پردازش تصویر می باشد که جهت لود کردن یک فایل توصویری در یک متغیر به سبکی که مشاهده می کنید استفاده می شود. می بینید که در کادر متغیرها (بطور پیشفرض کادر بالا سمت چپ میحیط مطلب) متغیر RGB با ابعاد <384x512x3 unit8> ایجاد شده است. یعنی یک ماتریس سه بعدی که بعد اول ۳۸۴ خانه و معرف تعداد پیکسلهای ارتفاع تصویر٬ بعد دوم ۵۱۲ پیکسل طول تصویر و بعد سوم ۳ خانه که چون تصویر از نوع رنگی (RGB) می باشد یک خانه حاوی مقدار RED و خانه های بعدی نگدارنده مقادیر GREEN و BLUE پیکسل مورد نظر می باشد. جهت درک قضیه به تصویر مقابل دقت کنید.
    unit8 نوع تصویر RGB در مطلب را مشخص می کند. باید بدانید سه نوع مکعب رنگ unit8, unit16 و Double برای تصاویر رنگی در مطلب در نظر گرفته شده است. برای مثال در کلاس unit8 هر بعد مکعب که بیانگر یکی از رنگهای قرمز٬ سبز و آبی می باشد دارای ۲۵۶ (۲۸) مقدار تعیین شده می باشد که در کل ۲۵۶*۲۵۶*۲۵۶= ۲۲۴ رنگ مختلف تولید می شود. برای کلاسهای دیگر هم بهمین روال می باشد با این تفاوت که تعداد رنگ آنها بیشتر می باشد.دستور بعدی (خط دوم)٬ دستور "imshow" جهت نمایش تصاویر موجود در متغیر ها با فرمت ذکر شده می باشد. بعد از فراخوانی این دستورات ابتدا اطلاعات موجود در تصویر 'peppers.png' (موجود در مسیر جاری مطلب) داخل متغیر RGB ریخته شده و با دستور imshow مرورگر تصاویر نرم افزار عکس مربوطه را نمایش می دهد.



    »افزایش کنتراست تصویر
    خوب حالا بیاید یکم کارای پردازشی روی تصاویر انجام بدیم. تصویر pout.tif رو در یک متغیر لود کنید و اون رو نمایش برای خودتون بدید (دقیقا مثل کد زیر). می بینید که این عکس کنتراست پایینی داره !

    کد:
    I = imread('pout.tif');
    imshow(I);
    برای مشاهده نحوه توزیع شدت رنگ در یک تصویر می توانید با صدا زدن دستور 'imhist' نمودار هیستوگرام آن را رسم کنید (شکل ۱) .
    کد:
    figure, imhist(I);


    می بینید که در شکل ۱ رنج شدت نازک می باشد و تمام پتانسیل ۰ تا ۲۵۵ را پوشش نمی دهد بدین معنی که بخشی از مقادیر بزرگ و بخشی از مقادیر کوچک را که باعث ایجاد کنتراست بالا می شوند را در خود ندارد.
    در این جعبه ابزار روشهای گوناگونی جهت افزایش کنتراست یک تصویر در نظر گرفته شده است که یکی از آنها استفاده از تابع histeq جهت پخش کردن مقادیر شدت در کل رنج پتانسیلی تصویر می باشد. با اجرای این دستورات به ترتیب زیر می بینید که نمودار هیستوگرام از نمونه شکل۱ به شکل۲ و تصویر از شکل۳ به شکل۴ تغییر می کند...
    کد:
    I2 = histeq(I);
    figure, imshow(I2);

    بهمین روش می توانید تصاویر دیگری را جهت تمرین وارد این محیط کرده و میزان کنتراست آنها را افزایش دهید.
    منبع

  4. #3
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: پردازش تصویر

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

    کد:
    1.  I = imread('nodules1.tif');
    2.  level = graythresh(I)
    3.  bw = im2bw(I,level);
    4.  bw = ~bw;
    5.  imshow(bw);
    خوب توضیحات رو با شماره خطوط پیش می برم. خط اول کد رو که جلسه پیش توضیح دادم برای خواندن یک تصویر از آدرس مورد نظر در یک متغیر هستش. نصویر مورد نظر ما در اینجا یک تصویر grayscale یا سیاه و سفید هستش. حتما قبل از اجرای دستور دوم یکبار (Imshow(I رو اجرا کنید تا این تصویر سیاه و سفید رو ببینید. خط دوم و سوم از دو تابع im2bw و graytresh به صورت پشت سرهم استفاده شده که نحوه کار هریک در این مثال به صورت زیر هستش:

    (BW = im2bw(I,level : همونطور که در مقاله قبل توضیح دادم تصاویر در مطلب انواع مختلف دارن از جمله رنگی یا RGB و سیاه سفید Grayscale و یا باینری و... توابع مختلفی جهت تبدیل این نوعها به هم تعبیه شده که از جمله اونها im2bw هست که جهت تبدیل انواع تصاویر به نوع باینری که تنها دارای نقاط سیاه و سفید هستش بکار میره. این تابع تصویر ورودی رو اول به نوع سیاه سفید تبدیل می کنه و در مرحله بعدی اون رو به یک تصویر باینری تبدیل می کنه. تصویر باینری خروجی BW به ازاء تمام پیکسل هایی که مقدار روشنایی آنها کمتر از مقدار level باشد مقدار ۰ (یا سیاه) و برای بقیه پیکسلها مقدار ۱ (یا سفید) اختیار خواهد کرد.

    (level = graythresh(I : همیشه برای بدست آوردن این حدآستانه level که در تابع بالایی استفاده می شود از تابع graythresh با ورودی تصویر مورد نظر استفاده می کنیم و بعد این level را در توابعی همچون im2bw استفاده نماییم.

    قبل از اجرای دستور خط چهارم حتما یکبار دستور (imshow(BW را جهت مشاهده تصویر باینری تولید شده اجرا کنید. مشاهده می کنید تمام نقاط به رنگ سیاه و بقیه تصویر سفید می باشد (تصویر باینری فقط دارای نقاط ۰ سیاه و ۱ سفید می باشد). حالا فرض کنید بخوایم این حالتو برعکس کنیم یعنی نقاط سفید و زمینه سیاه باشه باید از دستور خط ۴ استفاده کنیم. می بینید که علامت ~ در مطلب مثل NOT منطقی عمل کرده و تمام نقاط صفر رو یک و یک رو صفر کرده. با اجرا دستور خط ۵ یکبار دیگه تصویر تولید شدرو ببینید.


    یه مراحلی رو طی کردیم که خود این مراحل هم فقط جنبه آموزش داشتن وگرنه همون تصویر سیاه و سفید اول رو هم می تونستیم ذرات ریزش رو باهمین روشی که در زیر توضیح می دم٬ حذف کنیم. اما چون ما در بعضی مثل همینجا به اطلاعات اضافی تصویر احتیاجی نداریم و همچنین چون سرعت پردازشات روی تصاویر باینری بسیار بالاتر هستش٬ در صورت لزوم یه همچین مراحلی رو ابتداعا طی می کنیم و تصویر باینری ایجاد می کنیم. خوب حلا بریم سر اصل قضیه که حذف کردن ذرات ریز باشه:
    کد:
    1.  se = strel('disk',5);
    2.  bw2 = imopen(bw,se);
    3.  imshow(bw);
    4.  figure, imshow(bw2);
    (IM2 = imopen(IM,SE : اصل قضیه Morphological Opening همین تابع imopen هستش که دارای دو ورودی٬ یکی تصویر مورد نظر (IM) و دیگری یک المان ساختاری (SE) هستش که مشخص کننده خصوصیات اجزایی که باید از تصویر حذف بشن٬ از جمله شکل و بزرگی آنها هستش.

    (SE = strel(shape,parameters : این تابع تولید کننده همون المان ساختاری مصرف شده در تابع بالاس. این تابع بر اساس ورودی هایی که بهش داده میشه یک ماتریس دوبعدی از صفر و یک ها میسازه که نقاط ۱ در کنار یکدیگر یک جزء کوچک رو میسازن و تابع imopen با توجه به این ساختار اجزایی که کوچکتر از این جزء هستند رو از تصویر حذف می کند. پس بایستی دقت کنیم ساختار تولید شده در این دستور نه خیلی کوچک باشد که اجزاء ضاید را در بر نگیرد و نه خیلی بزرگ باشد که برخی از اشکال تصویر که قصد حذف شدن آنها را نداریم نیز از بین بروند!
    ورودی shape یک رشته است که یکی از چند حالت 'disk', 'ball, 'octagon,.. را که مشخص کننده شکل ساختار تولید شده است٫ می باشد. بر اساس رشته shape وارد شده پارامترهای متفاوتی را جهت مشخص کردن سایز آن بایستی در ورودیهای بعدی وارد کنید که جزئیات بیشتر را با جستجو کردن نام تابع 'strel' در راهنمای مطلب بیابید. اما برای نمونه
    (SE = strel('disk',R باعث ایجار یک ساختار دیسک شکل با شعاع R به صورتی که در شکل مشاهده می کنید می شود.

    خوب با صدا زدن دو دستور خط ۱ و ۲ المان ساختاری مورد نظر تولید شده و تمام اجزایی که کوچکتر از این ساختار باشند توسط دستور imopen حذف می شوند و خروجی در متغیر bw2 قرار می گیرد. کد خط چهارم همانطور که می دانید تصویر bw را نمایش می دهد و کد خط ۵ باعث ایجاد یک پنجره تصویر جدید و نمایش bw2 در آن می شود. پس همزمان می توانید تصویر اصلی و اصلاح شده آن را مشاهده نمایید. که خروجی چیزی شبیه شکل زیر خواهد شده.



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

  5. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: پردازش تصویر

    مجموعه دستورات مربوط به پردازش تصویر در مطلب :

  6. #5
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: پردازش تصویر

    نحوه ساخت ربات با پردازش تصویر در مطلی 7
    تهیه کننده :امین جوادی نسب
    تعداد صفحات :8

  7. #6
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: پردازش تصویر

    مروری بر پردازش تصویر
    نوسینده rink8
    تعداد صفحات : 9

  8. #7
    تازه وارد
    تاریخ عضویت
    Jun 2013
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط 1nafar نمایش پست ها
    مروری بر پردازش تصویر
    نوسینده rink8
    تعداد صفحات : 9
    سلام

    کسی می دونه چطوری داخل importdata متغیربدیم که error نده
    ؟؟؟
    اگه کسی بلده لطفا راهنمایی کنید

  9. #8
    عضو جدید
    تاریخ عضویت
    Jan 2013
    نوشته ها
    11
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام ساده ترین راهش هلپ متلب هستش اگه نمیتونید دستورروتوگوگل سرچ کنید کلیه ی فرمتهای مورد اسفادشوبراتون میاره

  10. #9
    عضو جدید
    تاریخ عضویت
    Jan 2013
    نوشته ها
    11
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    Gadid

    من یه جزوه ی کامل تواین زمینه دارم سعی میکنم هرچه سریعتر دراختیار دوستان قرار بدم

    asgharkarimi1362@yahoo.com

موضوعات مشابه

  1. پردازش تصویر
    توسط رهتازالکترونیک در انجمن پردازش تصویر
    پاسخ: 9
    آخرين نوشته: 21-05-2015, 14:39
  2. مشکل با خروجی تصویر vga
    توسط farzadsw در انجمن Cortex-a8-a9 arm9-11
    پاسخ: 12
    آخرين نوشته: 10-06-2013, 01:02
  3. دولت انتقال فیبرنوری به منازل را تصویب کرد
    توسط arsalan681 در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 02-02-2011, 13:41
  4. آیفون تصویری
    توسط morteza01 در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 05-01-2011, 18:29
  5. پردازش تصویر
    توسط yalda88 در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 17
    آخرين نوشته: 11-06-2010, 12:13

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •