نمایش نتایج 1 تا 2 از 2

نام تاپیک: علت تفاوت زمانی زیاد توابع لبه یابی کتابخانه ای با توابع دست نویس !

  1. #1

    علت تفاوت زمانی زیاد توابع لبه یابی کتابخانه ای با توابع دست نویس !

    سلام .
    زمان اجرای فیلتر سوبل و کنی تو متلب 1 تا 3 ثانیه برای یک عکس ساده تو لپ تاپم درمیاد
    ولی همین عکس رو من میخوام همه پیکسلهاشو بخونم و عملیات ساده انجام بدم چندبرابر زمان میبره .

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

  2. #2

    نقل قول: علت تفاوت زمانی زیاد توابع لبه یابی کتابخانه ای با توابع دست نویس !

    نقل قول نوشته شده توسط sha8046 مشاهده تاپیک
    سلام .
    زمان اجرای فیلتر سوبل و کنی تو متلب 1 تا 3 ثانیه برای یک عکس ساده تو لپ تاپم درمیاد
    ولی همین عکس رو من میخوام همه پیکسلهاشو بخونم و عملیات ساده انجام بدم چندبرابر زمان میبره .

    مگه این الگوریتم های پیشرفته همه پیکسل ها رو چندین بار پردازش نمیکنن چرا زمانشون کمتر درمیاد ؟
    سلام
    فانکشن های خود متلب طوری نوشته شدن که در کمترین زمان ممکن اجرا بشن. اگه کد اصلی رو با دستور open یا edit باز کنین، متلب برای پیاده سازی این دو از imfilter استفاده کرده. وقتی یه ماسکی رو بخواین روی تصویر پیکسل به پیکسل حرکت بدین، استفاده از کانولوشن (دستورهایی مثل imfilter - conv2 - filter2) میتونه سرعت اجرای کد رو خیلی بالا ببره:
    clear;
    img = imread('cameraman.tif');
    Sobel = [1 2 1;0 0 0;-1 -2 -1];

    edge_x = conv2(double(img),Sobel','same');
    edge_y = conv2(double(img),Sobel,'same');
    Image_edge = sqrt(edge_x.^2 + edge_y.^2);
    Image_edge = Image_edge ./ max(Image_edge(:));

    figure;
    set(gcf,'Position',get(0,'ScreenSize'))
    subplot(221)
    imshow(img)
    title('Image','FontSize',14)
    subplot(222)
    imshow(Image_edge)
    title('Sobel Edge Ditector','FontSize',14)
    subplot(223)
    imshow(abs(edge_x),[])
    title('Sobel in Horizontal Direction','FontSize',14)
    subplot(224)
    imshow(abs(edge_y),[])
    title('Sobel in Vertical Direction','FontSize',14)


    توی imfilter از فایل mex برای افزایش سرعت استفاده شده، فایل های mex معمولا به زبان C یا ++C نوشته میشن، بعد هم به فرمتی در میان که متلب بتونه اجراشون کنه. توی ورژن های جدید متلب از CUDA برای بعضی از فانکشن ها استفاده کرده، ولی خوب خیلی از کارت گرافیک ها CUDA ندارن.
    خیلی وقت ها میشه حلقه رو حذف کرد. مقدار دهی اولیه متغیر ها قبل از حلقه هم میتونه خیلی به سرعت کمک کنه (یعنی سایز متغیر داخل حلقه تغییر نکنه).

تاپیک های مشابه

  1. پاسخ: 6
    آخرین پست: چهارشنبه 29 آذر 1391, 20:11 عصر
  2. حرفه ای: علت تفاوت نتیجه گوگل در کروم و فایرفاکس؟
    نوشته شده توسط moslem.hady در بخش توسعه وب (Web Development)
    پاسخ: 1
    آخرین پست: پنج شنبه 10 فروردین 1391, 20:39 عصر
  3. پاسخ: 3
    آخرین پست: چهارشنبه 08 تیر 1390, 13:34 عصر
  4. گفتگو: کتابخانه ها ، توابع <> قدرت زبان برنامه نویسی
    نوشته شده توسط Mahmood_M در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 7
    آخرین پست: شنبه 08 اسفند 1388, 11:11 صبح
  5. سوال: اجرای توابع( رویه ) های کتابخانه ای در اسمبلی
    نوشته شده توسط Football Land در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 0
    آخرین پست: یک شنبه 17 خرداد 1388, 15:21 عصر

قوانین ایجاد تاپیک در تالار

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