فصل سوم: تابع های تغییر نوع کلاس در متلب

مقدمه

آموزش تابع های تغییر نوع کلاس در متلب (Change Class Type) (فصل سوم) : در این مجموعه قصد داریم به آموزش فهرست وار و سریع «جعبه ابزار پردازش تصویر» در نرم افزار متلب (Matlab) بپردازیم. سعی ما بر این است تا در پروژه های رایگانی که در سایت قرار می دهیم با لینک هر دستور به صفحه آموزشی آن، بتوانیم خیلی سریع و آسان با کاربرد دستورات و توابع مورد استفاده آشنا شویم. در این مجموعه آموزشی فرض ما بر این است که دوستان آشنایی نسبی با نرم افزار متلب دارند و فعلا وارد این حوزه نمی شویم.

فصل ششم: شناسایی اشیاء در تصویر

فصل هفتم : شناسایی اشیاء در تصویر – بخش ۲

فصل هشتم : شناسایی اشیاء در تصویر – بخش ۳

« تغییر نوع کلاس (Change Class Type) »

تابع ()im2uint8

هدف:

تبدیل تصویر به اعداد صحیح بدون علامت ۸ بیتی.

نحوه استفاده:

۱٫تبدیل تصویر سیاه و سفید I به عدد صحیح بدون علامت ۸ بیتی

I2=im2uint8(I)
۲٫تصویر رنگ واقعی RGB را به عدد صحیح ۸ بیتی تبدیل می کند، در صورت لزوم اطلاعات را مجددا بازنشانی می کند.
RGB2=im2uint8(RGB)
۳٫تصویر باینری BW را به یک تصویر سیاه و سفید uint8 تبدیل می کند، عناصر ۱-lrnhvd را به ۲۵۵ تغییر می دهد.
I=im2uint8(BW)
۴٫تصویر نمایه شده X را به uint8 تبدیل می کند، در صورت لزوم اطلاعات را جبران می کند.
X2=im2uint8(X,'indexed')

مثال:

۱٫تبدیل آرایه uint16 به آرایه uint8. ابتدا یک آرایه از کلاس uint16 ایجاد می کند. سپس آرایه به کلاس uint8 تبدیل می کند.
I = reshape(uint16(linspace(0,65535,25)),[5 5])
I = 5x5 uint16 matrix
       ۰   ۱۳۶۵۳   ۲۷۳۰۶   ۴۰۹۵۹   ۵۴۶۱۳

    ۲۷۳۱   ۱۶۳۸۴   ۳۰۰۳۷   ۴۳۶۹۰   ۵۷۳۴۳

    ۵۴۶۱   ۱۹۱۱۴   ۳۲۷۶۸   ۴۶۴۲۱   ۶۰۰۷۴

    ۸۱۹۲   ۲۱۸۴۵   ۳۵۴۹۸   ۴۹۱۵۱   ۶۲۸۰۴

   ۱۰۹۲۳   ۲۴۵۷۶   ۳۸۲۲۹   ۵۱۸۸۲   ۶۵۵۳۵
I2 = im2uint8(I)
I2 = 5x5 uint8 matrix
     ۰    ۵۳   ۱۰۶   ۱۵۹   ۲۱۳

    ۱۱    ۶۴   ۱۱۷   ۱۷۰   ۲۲۳

    ۲۱    ۷۴   ۱۲۸   ۱۸۱   ۲۳۴

    ۳۲    ۸۵   ۱۳۸   ۱۹۱   ۲۴۴

    ۴۳    ۹۶   ۱۴۹   ۲۰۲   ۲۵۵
 

۲٫تبدیل آرایه uint16 به uint8 روی یک GPU. ابتدا آرایه کلاس uint16 را ایجاد می کند. سپس آرایه را به uint8 تبدیل می کند.
I1 = gpuArray(reshape(uint16(linspace(0,65535,25)),[5 5]))
I2 = im2uint8(I1);

تابع های تغییر نوع کلاس در متلب

تابع ()im2uint16

هدف:

تبدیل تصویر به اعداد صحیح بدون علامت ۱۶ بیتی.

نحوه استفاده:

۱٫تصویر شدت I را به uint16 تبدیل می کند، در صورت لزوم اطلاعات را مجددا بازنشانی می کند.

I2 = im2uint16(I)
 ۲٫تصویر رنگ واقعی RGB را به uint16 تبدیل می کند، در صورت لزوم اطلاعات را مجددا بازنشانی می کند.
RGB2 = im2uint16(RGB)
۳٫تصویر باینری BW را به شدت تصویر uint16 تبدیل می کند و عناصر ۱-مقداری را به ۶۵۵۳۵ تغییر می دهد.
I = im2uint16(BW)

۴٫تصویر نمایه شده X را به uint16 تبدیل می کند، در صورت لزوم اطلاعات را جبران می کند.

X2 = im2uint16(X,'indexed')

مثال:

تبدیل آرایه از double به uint16.یک آرایه کلاس double را ایجاد می کند و سپس تبدیل آرایه به کلاس uint16

I2 = im2uint16(I)
I2 = 5x4 uint16 matrix
       0   17246   34492   51738

    3449   20695   37941   55187

    6898   24144   41391   58637

   10348   27594   44840   62086

   13797   31043   48289   65535
I2 = im2uint16(I)
I2 = 5x4 uint16 matrix
       0   17246   34492   51738

    3449   20695   37941   55187

    6898   24144   41391   58637

   10348   27594   44840   62086

   13797   31043   48289   65535
۲٫ تبدیل آرایه از double به uint16 روی یک GPU. آرایه کلاس double را ایجاد می کند و سپس تبدیل آرایه به uint16.
I1 = gpuArray(reshape(linspace(0,1,20),[5 4]))
I2 = im2uint16(I1)

تابع های تغییر نوع کلاس در متلب

تابع ()im2double

هدف:

تبدیل تصویر به دقت مضاعف.

نحوه استفاده:

۱٫تصویر شدت I را به دقت مضاعف تبدیل می کند، در صورت لزوم اطلاعات را مجددا بازنشانی می کند.

I2 = im2double(I)

۲٫تصویر نمایه شده I را به دقت مضاعف می کند و در صورت لزوم اطلاعات را جبران می کند.

I2 = im2double(I,'indexed')

مثال:

۱٫تبدیل تصویر به دقت مضاعف

I = imread('peppers.png');
whos I
  Name        Size                Bytes  Class    Attributes
  I         384x512x3            589824  uint8  

I2 = im2double(I);
whos I2
  Name        Size                 Bytes  Class     Attributes
  I2        384x512x3            4718592  double 

 ۲٫تبدیل یک آرایه به کلاس double در GPU. این مثال به جعبه ابزار محاسبه موازی نیاز دارد.
I1 = gpuArray(reshape(uint8(linspace(1,255,25)),[5 5]));
I2 = im2double(I1);

پایان فصل سوم: تابع های تغییر نوع کلاس در متلب

محمد مهدی ابراهیمی
محمد مهدی ابراهیمی
بنده محمد مهدی ابراهیمی کارشناسی ارشد نرم افزار و علاقه مند به مباحث پردازش تصویر و بینایی ماشین هستم. برنامه نویسی را از سال 1383 و پردازش تصویر را از سال 1388 شروع کردم. هم اینک در زمینه سامانه های پلاک خوان، تردد شمار خودرو، کنترل کیفیت مکانیزه و ... فعالیت می کنم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *