اطلاعیه

Collapse
No announcement yet.

رسم هیستوگرام

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

    رسم هیستوگرام

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

    #2
    پاسخ : رسم هیستوگرام

    سلام
    روش به دست آوردنش رو میگم
    خودت میتونی به دستش بیاری.
    اینطوری لذت یادگیریش برات بیشتر میشه
    + اینکه در این سایت هم بگردی دستوراتش هست
    دوستان قبلا زحمت کشیدن کدشو گذاشتن
    + توی اینترنت هم بگردی n+1 مثال گیر میاری!
    روش کار:
    فرض میکنیم تصویر شما از نوع gray scale ه. و یک تصویر m*n ه
    بنابراین هر پیکسل یک بایته و عددی بین 0 تا 255 داره.
    هیستوگرام چیه اصلا؟
    میاد توزیع این 0 تا 255 رو مشخص میکنه.
    یعنی میگه: چند تا پیکسل با مقدار 0 داری؟
    چند تا پیکسل با مقدار 1 داری؟
    چند تا پیکسل با مقدار 2 داری؟
    ...
    و در نهایت چند تا پیکسل با مقدار 255 داری؟
    آخرشم میاد یک نمودار رسم میکنه
    که مثلا محور افقی میشه 0 تا 255
    و محور عمودی میشه 0 تا یک عددی (مقداری که بیشترین دفعه شمرده شده)
    حالا برای برنامه نویسی ابتدا تصویر رو فراخوانی میکنی
    داده های تصویر (مقادیر پیکسل ها) رو بین 0 تا 255 میکنی
    256 تا متغیر تعریف میکنی (به صورت آرایه تعریف کن تا راحت تر بتونی کار کنی)
    تک تک پیکسل ها رو چک میکنی تا ببینی مقدارشون چقدره
    متناظر با مقداری که هر پیکسل داره
    به مقدار یکی از متغیرهای آرایه، در هر بار یکی اضافه میکنی
    مثلا اگه مقدار یک پیکسل 147 بود، آرایه ی متناظر با 147 یکی اضافه میشه
    اگه مقدار پیکسل بعدیش 139 بود، آرایه ی متناظر با 139 یکی اضافه میشه و ...

    :read:

    اول شما این کار رو انجام بده، بعد مراحل بعدی ...
    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

    دیدگاه


      #3
      پاسخ : رسم هیستوگرام

      خیلی ممنون برا وقتی که گذاشتین ولی من متلبم خوب نیست.بهرحال هیستوگرام رو کشیدم.خب مراحل بعد...

      دیدگاه


        #4
        پاسخ : رسم هیستوگرام

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

        دیدگاه


          #5
          پاسخ : رسم هیستوگرام

          سلام
          لینک زیر رو نگاه کنید:
          http://en.wikipedia.org/wiki/Histogram_equalization
          قسمت example، ماتریس و جدول اول رو ببینید.
          دقیقا منظورم رو متوجه میشید.
          بذارید یه مقدار ساده ترش کنم:
          اگه شما یک تصویر دارید که مقادیر پیکسل های اون تصویر
          بین 0 و 255 متغیر باشه (اعداد صحیح)
          در هیستوگرام، چیزی که رسم میکنیم اینه:
          تعداد پیکسل هایی با مقدار 0 در کل تصویر
          تعداد پیکسل هایی با مقدار 1 در کل تصویر
          تعداد پیکسل هایی با مقدار 2 در کل تصویر
          ...
          تعداد پیکسل هایی با مقدار 254 در کل تصویر
          تعداد پیکسل هایی با مقدار 255 در کل تصویر
          خب حالا میخوای براش برنامه بنویسیم!
          که چطوری اینا شمارش بشن؟
          باید چیکار کنیم؟ باید یک متغیر 256 تایی داشته باشیم
          (و یا 256 تا متغیر داشته باشیم)
          حالا بهترین کار برای اینکه بتونیم متغیرهایی داشته باشیم
          که با مقادیر پیکسل ها، همخوانی داشته باشن، استفاده از آرایه هاست
          مثلا اگه شما یک آرایه به نام hist[256] تعریف کنی،
          زمانی که بخوای به یکی از مولفه هاش دسترسی داشته باشی،
          مینویسی (مثلا) hist[23] . خب حالا فرض کن میخوایم از این آرایه برای شمارش تعداد پیکسل ها استفاده کنیم
          عبارت hist[23] متناظر میشه با پیکسلی با مقدار 22 .
          حالا فرض کن ما به تک تک پیکسل ها دسترسی داریم
          مثلا اسم متغیرش هم هست pic(m,n) که m , n رو خودمون با توجه به ابعاد تصویر
          یکی یکی اضافه میکنیم. برای شمارش پیکسل ها به این صورت عمل میکنیم:
          کد:
          hist(pic(m,n))++
          و در نهایت hist رو رسم میکنیم:
          محور افقی 1 تا 256 (یا 0 تا 255) و محور عمودی تعداد پیکسلهای شمارش شده.
          :read:
          1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
          2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
          3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

          دیدگاه


            #6
            پاسخ : رسم هیستوگرام

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

            دیدگاه


              #7
              پاسخ : رسم هیستوگرام

              سلام
              یه لینک خوب دیدم در همین سایت
              براتون میذارم:
              http://www.eca.ir/forum2/index.php?t...4623#msg294623
              آره، شما باید ابتدا با همون دستور یک عکس رو وارد کنید
              که تبدیل به یک ماتریس میشه
              اگه تصویر gray scale باشه، خروجی اون دستور معمولا یک ماتریس m*n میشه.
              بعد چک کنید ببینید مقادیر ماتریس چقدره؟
              مثلا برای یک تصویر gray scale با 8 بیت، مقدارهاش بین 0 تا 255 باید باشن
              (البته اگه بین 0 و 1 بود، با یک دستور ساده تبدیل میشه)
              1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
              2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
              3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

              دیدگاه


                #8
                پاسخ : رسم هیستوگرام

                .

                دیدگاه

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