آموزش مقدماتی Matlab – بخش هشتم
آموزش مقدماتی متلب در چند بخش تهیه شده و می توانید در ویلاگ متلبی از آن بهره ببرید.
پردازش تصویر:
مشخصه ی یک تصویر دیجیتال:
Pixel picture cell
نقاط بسیار ریز مربعی شکل
Resolution یک تصویر : غلظت pixel هاست که هر چه بیشتر باشد resolution بیشتر است و واحد آن به صورت زیر می باشد:
Dot per inch (dpi)
نقطه ها در هر اینچ
تصویر آنالوگ: دوربین های عکاسی قدیمی که نگاتیو داشت.
تصاویر سیاه و سفید:
Pixel هایشان فقط دو حالت دارند یا صفر و یا یک که صفر نمایانگر پایین ترین سطح روشنایی یا همان رنگ مشکی است و یک بالاترین سطح روشنایی و معرف رنگ سفید است.
تصاویر سطوح خاکستری: در حالت عادی چشک انسان 256 تا سطح مختلف روشنایی را می تواند از هم تفکیک کند .
در طراحی دوربین ها هر منظره ای را به 256 تا سطح روشنایی تبدیل می کند.
هر pixel را در یک byte ذخیره می کند.
فراخوانی یک تصویر:
Y=imread(‘address\name.format’)
آدرس، اسم تصویر و پسوند آن را وارد می کنیم .
Imshow(y)
تصویر را می بینیم.
Imview اطلاعات هر pixel را نیز نشان می دهد به صورتی که هرگاه با موس بر روی تصویر برویم مشخصات می دهد.
Y1=im2bw(y) تصویر را به حالت صفر و یک یا سیاه و سفید می برد. که 0 تا 0.5 سیاه و 0.5 تا 1 سفید است.
تصاویر باز شده به وسیله ی imview با close all بسته نمی شوند و نیازی به نوشتن figure ندارند . خودش در ی figure جدید باز می شود.
Im2bw(y,0.3)
تصویر y را به باینری تبدیل می کند به صورتی که بالای 0.3 ها را سفید می کند.
تصاویر رنگی RGB red green blue :
سیستم های بصری انسان به کمک سه نوع حسگر رنگی موجود در شبکه از طیف نور مرئی نمونه برداری می کند. این حسگر ها بیشترین شدت پاسخ را در طول موج های 560 و 530 و 420 نانومتر دارند که به ترتیب به سلول های حساس به رنگ قرمز و سبز و آبی معروفند. پس در طراحی سیستم های تصویرگیر و نمایشگر لازم است سه نوع سنسور رنگی در سیستم قرار داده شود تا به رنگ های قرمز و سبز و آبی بیشترین حساسیت را داشته باشند.
هر کدام از این رنگ ها می توانند عددی بین 0 تا 255 را به خود اختصاص دهند . که 0 مشکی و 255 سفید و بینش رنگ مورد نظر است.
هر pixel از ترکیب 3 عدد برای قرمز و سبز و آبی به وجود می آید.
برای هر pixel 3 درایه نیاز داریم . 3 بایت یعنی 24 بیت.
Tif.jpg.png.bpm پسوند تصاویر هستند بسته به حالتی که تصویر روی حافظه ذخیره می شود.
Size(y) سایز ماتریس که حاصلضرب سطر و ستون آن میشود تعداد pixel ها.
تصاویر index (نمایه گذاری شده)
برای کاهش حافظه ی تصویر rgb را به index تعریف می کنند.
رنگ هر pixel یه یک ماتریس k*3 اشاره می کند . ستون اول مقادیر قرمز ستون بعدی مقادیر سبز و ستون بعدی مقادیر آبی را مشخص میکند.
Y1=rgb2gray(y) تصویر را به خاکستری تبدیل می کند.
Help imdemos کل تصاویری که متلب دارد را به ما نشان می دهد.
این تصویر نمایانگر تعدادی از اسامی تصاویری است که با استفاده از help imdemos نشان داده شده است:
کلاس های مختلف دیتا در متلب و فرمت ذخیره ی آن ها:
Range | توضیح | Data type |
2^7-1 تا -2^7 127تا128 – | 8بیتی integer عدد صحیح علامت دار | Int8 |
Int16 | ||
Int32 | ||
0 تا 2^8-1 0 تا 255 | عدد صحیح بدون علامت | Uint8 |
Uint16 | ||
Uint32 | ||
اعداد حقیقی با دقت ممیز شناور | double | |
اعداد منطقی | logical |
هر کدام از این فرمت ها را می توان به دیگری تبدیل کرد.
نمودار هیستوگرام یک تصویر:
imhist(y)
نمودار افقی شدت رنگ است و نمودار عمودی شدت نور.
یکنواخت کردن هیستوگرام(افزایش contrast)
Histeq
برای این که بتوانیم این کار را با تصویر رنگی بکنیم،باید اول هر کدام از سه بعدش را جدا بگیریم بعد eq کنیم و دوباره به هم بچسبانیمشان.
به عنوان مثال تصویر رنگی زیر (اگر عکس در current directory نباشد باید مسیر آن مشخص شود):
چرخاندن یک تصویر:
imtotate(y,t) که در اینجا t درجه ی چرخش است . اگر مثبت باشد پادساعتگرد و اگر منفی باشد به طور ساعتگرد چرخانده می شود.
Imcrop(y) تصویر را برش می دهد.
وقتی اینتر را بزنیم با موس میتوانیم انتخاب کنیم که کجای تصویر را برش بزنیم . همچنین می توانیم مختصات بدهیم.
Imwrite(y,’address\title.fmt’) تصویر را در هارد ذخیره می نماید.
برای یکنواخت کردن تصاویر رنگی:
Imadjust(y,[a1,b1],[a2,b2])
A1 حد پایین تصویر ورودی
B1 حد بالای تصویر ورودی
A2 حد پایین تصویر خروجی
B2 حد بالای تصویر خروجی
مثلا:
[0.1,0.7],[0.2,0.5]
مقادیر کمتر از 0.1 را می برد به 0.2
مقادیر بیشتر از 0.7 و خود 0.7 را به 0.5 نگاشت می دهد.
مقادیر بین 0.1 و 0.7 را بین 0.2 و 0.5 نگاشت می دهد.
افزودن نویز به تصاویر:
Y1=imnoise(y,’noise type’,noise quantity)
در پردازش تصویر نویز salt&pepper نویز معروفی است.
به طور تصادفی بعضی pixel ها را سیاه می کند و بعضی ها را سفید می کند.
مقدار نویز از 0 تا 1 تغییر می کند . اگر 1 باشد 100% است پس همه ی pixel ها خراب می شوند. مقدار پیش فرض 0.05 است یعنی 5% تصویر نویزی می شود.
فیلتر میانه برای حذف نویز salt&pepper
Y2=medfilt2(y1)
بالاترین سطح و پایین ترین سطح را حذف می کند.
طراحی فیلتر برای تصاویر:
F=fspecial(‘filter type’)
Imfilter(y,f)
پردازش صدا:
می خواهیم به کمک یک میکروفن صدای یک شخص را که یک سیگنال آنالوگ است ، به کامپیوتر ببریم که صدا به صورت موج پیوسته منتشر می شود.
فشرده سازی و تبدیل به فرمت های مختلف مثل wave که استاندارد است:
Dsp= digital signal processing
باید به بیت های رقمی یا دیجیتال تبدیلش کنیم تا به کامپیوتر برود.
ویژگی های صدای دیجیتال:
- نرخ نمونه برداری:
استاندارد 44100 بیت بر ثانیه حالت ایده آل صدای شخص را تولید می کند. در هر ثانیه 44100 بیت نمونه برداری می کند تا صدا را دیجیتال کند.
نرخ های نمونه برداری دیگری نیز هستند: 22050 و 11025 و 8192 bit/sec
- تعداد بیت در هر نمونه ( دقت نمونه ها)
- 1 کاناله بودن صدا ( مونو ) یا 2 کاناله بودن صدا ( استریو )
صدای دیجیتالی با 500000 تا نمونه که با نرخ 44100 بیت بر ثانیه نمونه برداری شده است به مدت 11.33 ثانیه شنیده می شود:
500000/44100=11.33
متلب فرمت wave را پخش می کند.
برای پخش صدا:
خواندن صدا: waveread
صدا در متلب بین -1 تا 1 است که اکر استریو باشد دو ستون دارد و اگر مونو باشد یک ستون دارد و از یک باند پخش می شود.
پخش صدا: waveplay(y,fs)
Y بردار صدا می باشد و fs فرکانس نمونه برداری است.
پیش فرض fs 11025 است.
اگر در command window ، length(y) را بزنیم طول صدا را به ما می دهد.
اگر به جای fs بزنیم 2*fs تند تر پخش می کند.
و بر عکس اگر fs/2 بزنیم ، کند تر پخش می کند.
اگر بخواهیم یک کانال را پخش کند :
X=y(:,1);
کانال اول را جدا می کند و از یک بلندگو بیرون می آید.
ایجاد موج صوتی:
گوش انسان قادر به شنیدن صدا با فرکانس بین 20 تا 20000 هرتز می باشد.
تصویر بالا ساخت موج 200 هرتز است که برای پخشآن موج را در عدد 5 ضرب کردیم تا صدا بلند تر به گوش ما برسد.
هر چه فرکانس را زیاد کنیم ، صدا نازک تر می شود و هر چه فرکانس را کم کنیم صدا بم تر می شود.
می توانیم از فرکانس های مختلف ترکیبی از نت ها را ایجاد کنیم تا به صورت چند نت پشت سر هم شنیده شود:
می خواهیم به وسیله ی میکروفن صدا را به کامپیوتر بدهیم:
Wavrecord(n,fs,m,’double’)
N تعداد نمونه هاست.
Fs فرکانس نمونه برداری است.
M تعداد کانال هاست که می توان 1 یا 2 باشد.
Double هم میتواند 8 بیتی یا 16 بیتی باشد.
Wavwrite(y,fs,’address\title.fmt’)
در علم تشخیص گفتار به کار می رود.
برنامه ای بنویسید که اثر انگشت را از کاربر دریافت کند ، اگر کج بود آن را صاف کند و بعد کادر اضافه ی دور آن را ببرد:
ابتدا برنامه ی زیر را نوشته و ذخیره می کنیم.
برای نمونه این برنامه اجرا شده و تصویر آن را در زیر میبینید:
و حالا برنامه ی زیر را می نویسیم تا ویرایش های لازم بر روی تصاویر اعمال شود.
مقدمه ای سیستم های کنترلی:
Tf: transfer function
Zpk مدل صفر و قطب و بهره
Zpk(zero,pole,gain)
این دو حالت را میتوان به هم تبدیل کرد.
Pzmap(h) نمایش صفر ها و قطب ها
مثال:
rlocus(h)
مکان هندسی ریشه های تابع انتقال حلقه باز:
Bode(h) نمودار بود:
Nyquist(h) نمودار نایکوئیست را نمایش می دهد:
Nichols(h) نمودار نیکولز را نمایش می دهد:
Series(h1,h2) دو تابع را سری می کند.
Parallel(h1,h2) موازی می کند.
Feedback(h1,h2) فیدبک منفی
Feedback(h1,h2,+1) فیدبک مثبت
Impulse(h) پاسخ ضربه را نمایش می دهد.
Step(h) پاسخ پله
Gensig پاسخ سیستم به ورودی دلخواه general signal
Lsim(h,u,t) که در آن h تابع انتقال است.
به صورت کمرنگ ورودی را نمایش می دهد و پر رنگ خروجی را نمایش می دهد.
تهیه کننده: خانم مولانا
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.