اطلاعیه

Collapse
No announcement yet.

درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

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

    i=imread('d:/s.jpg'
    j=imread('d:/f.jpg'
    a=i;
    b=j;
    c=immultiply(a,b);
    imshow(c);
    imshow(a);
    imshow(b);

    #2
    پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

    سلام.
    مگه همین کدی که نوشتید کار نمی کنه ؟
    اینکه کدش درسته .البته در صورتی که سایز عکس ها یکی باشه. چون هر عکس در متلب بصورت یک ماتریس ذخیره میشه . برای ضرب ماتریسی هم باید سایزشون یکی باشه.
    تاپیک جامع سیستم مدیریت ساختمان BMS و خانه هوشمند Smart Home
    دانلود مجموعه آموزشی شرکت Altium ا (Altium Training)
    مقالات و فایل های آموزشی نرم افزار Labview
    حل مشکل درایور و راه اندازی FT232 های غیراورجینال

    دیدگاه


      #3
      پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

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

      دیدگاه


        #4
        پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

        درود
        وقتی تصویر رو می خونی، متلب تصویر رو به صورت 8 بیتی خونده (اکثر مواقع) و ذخیره کرده (uint8) و وقتی دو تا تصویر uint8 رو در هم ضرب می کنی، حاصلضرب پیکسل ها در رنج 16 بیت قرار می گیره. و چون نوع متغیر uint8 هست، خود متلب مقادیر بزرگتر از 255 رو 255 در نظر میگیره. بنابر این تصویر رو بیشتر سپید می بینی.
        برای رفع مشکل می تونی دو تا کار انجام بدی.
        اول مثل خود مثال متلب، متغیرت رو از نوع uint8 به uint16 تبدیل کنی:
        I = imread('moon.tif'
        I16 = uint16(I);
        J = immultiply(I16,I16);
        imshow(I), figure, imshow(J)

        راه دوم اینه که نوع متغیر ها رو به double تبدیل کنی. بعد عملیات رو انجام بدی. بعئ ببینی حداکثر مقداری که پیکسل می تونه با عملیات تو بگیره چنده. بعد موقع نمایش متغیرت رو بر این عدد تقسیم کنی و نمایش بدی.
        مـن هیچ ندانم که مرا آن که سرشت
        از اهل بهشت کرد یا دوزخ زشت
        جامی و بتی و بربطی بر لب کشت
        اين هر سه مرا نقد و تو را نسیه بهشت

        دیدگاه


          #5
          پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

          نوشته اصلی توسط marychi
          درود
          وقتی تصویر رو می خونی، متلب تصویر رو به صورت 8 بیتی خونده (اکثر مواقع) و ذخیره کرده (uint8) و وقتی دو تا تصویر uint8 رو در هم ضرب می کنی، حاصلضرب پیکسل ها در رنج 16 بیت قرار می گیره. و چون نوع متغیر uint8 هست، خود متلب مقادیر بزرگتر از 255 رو 255 در نظر میگیره. بنابر این تصویر رو بیشتر سپید می بینی.
          برای رفع مشکل می تونی دو تا کار انجام بدی.
          اول مثل خود مثال متلب، متغیرت رو از نوع uint8 به uint16 تبدیل کنی:
          I = imread('moon.tif'
          I16 = uint16(I);
          J = immultiply(I16,I16);
          imshow(I), figure, imshow(J)

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

          I = imread('a.jpg'
          I16 = uint16(I);
          J = imread('b.jpg'
          J16 = unit16(J);
          K = immultiply(I16,J16);
          imshow(I), figure, imshow(J), figure, imshow(K);

          حالا اگه کد زیر رو بنویسم اجرا میشه لطفا بگید مشکل از کجاست. بخاطر 16 بیتی؟

          I = imread('d:/a.jpg'
          J = imread('d:/b.jpg'
          K = immultiply(I,J);
          imshow(I), figure, imshow(J), figure, imshow(K);

          دیدگاه


            #6
            پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

            در کد اول به آدرس فراخوانی تصاویر دقت کنید.
            It's nice to be important but it's important to be nice!

            از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

            دیدگاه


              #7
              پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

              درود

              J16 = unit16(J);

              unit16 غلطه. درستش uint16 هست.
              مـن هیچ ندانم که مرا آن که سرشت
              از اهل بهشت کرد یا دوزخ زشت
              جامی و بتی و بربطی بر لب کشت
              اين هر سه مرا نقد و تو را نسیه بهشت

              دیدگاه


                #8
                پاسخ : درخواست کمک برای پروژه برنامه نویسی در بخش پردازش تصویر

                نوشته اصلی توسط marychi
                درود

                J16 = unit16(J);

                unit16 غلطه. درستش uint16 هست.
                سلام و درود فراوان بر شما
                مشکلم حل شد از کمکتون بسیار ممنونم. امیدوارم همیشه موفق باشید

                دیدگاه

                لطفا صبر کنید...
                X