در این مقاله با آموزش دو راه متفاوت برای وارد کردن عکس و تصویر به محیط مطلب در خدمت شما هستیم.

روش اول:

متلب می تواند فایل های گرافیکی با فرمت های JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD, ICO, CUR را به عنوان فایل گرافیکی بخواند. مثلا برای وارد کردن فایلی به نام cameraman.tif به فضای متلب کافیست از دستور imread استفاده کنیم:

توجه داشته باشید فایلی که دستور خواندنش را می دهید باید برای برنامه در دسترس باشد. یعنی یا باید در مسیر (Matlab (Path باشد، یا اینکه در پوشه ای (folder) قرار داشته باشد، که در حال حاضر برنامه به آن دسترسی دارد. برای اینکه بدانید Matlab برای پیدا کردن فایلی که دستورش را دادید کجا را جستجو خواهد کرد، این کارها را بکنید:

  • از دستور path برای اینکه بدانید کدام پوشه ها و پرونده ها جزء مسیر پیش فرض متلب است، استفاده کنید.
  • از دستور dir برای اینکه بدانید Current Directory چیست، استفاده کنید.

همچنین می توان برای خواندن یک تصویر از آدرس مستقیم محل ذخیره سازی آن استفاده کرد:

نکته:

اگر ; در آخر دستور قرار داده نشود، هنگام خواندن تصویر، محتوای ماتریس تصویر یعنی f را نیز نمایش خواهد داد.

با تابع size میتوان ابعاد تصویر خوانده شده، یعنی ماتریس تصویر را مشخص کرد:

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

دستور فوق تعداد سطرها (M) و ستون های(N) تصویر را مشخص میکند.

تا اینجا یک قایل تصویر را در محیط Matlab باز (وارد) کرده ایم. همان طور که میدانیم یک تصویر دیجیتال بر روی کامپیوتر در قالب یک ماتریس ذخیره می شود.

پس MyImage مثل همه متغییر های Matlab یک ماتریس است. برای اینکه بفهمیم فایل خوانده شده از چه فرمتی است (سیاه سفید، Gray Scale یا رنگی) بنویسیم:

اما اگر بخواهید بدانید ماتریس ذخیره شده MyImage از چه نوعی است؟ بنویسید: whos و لیست متغییر های مقیم شده در حافظه و نوع و اندازه آنها را ببینید.

چطور تصویر را ببینیم؟

حال میخواهیم تصویری را که در یک ماتریس ذخیره شده است را ببینیم، چگونه؟ بنویسیم:

با استفاده از دستور subplot میتوانیم دو تصویر را با هم ببینیم:

نحو دیگر این تابع به شکل زیر است:

که f تصویر ماتریس خوانده شده و G تعداد سطوح خاکستری است. مقدار پیش فرض آن ۲۵۶ است.

با استفاده از فرمت زیر:

پیکسل هایی که مقادیر آن ها کمتر یا مساوی low باشد سیاه و پیکسل هایی که مقادیر آن ها بزرگتر یا مساوی high باشند، سفید نشان داده میشوند.

با استفاده از فرمت:

مقدار low برابر مینیمم f و مقدار high برابر ماکسیمم f در نظر گرفته میشود. برای تصاویری که دارای محدوده دینامیکی کمی هستند، این روش مناسبتر است.

مثال:

میتوان دستور فوق را به صورت زیر نوشت چرا که \c:\matlab7\work دایرکتوری فعلی (Current Directory) محسوب شده و نیازی به دادن مسیر نیست:

نتیجه:

چگونه یک فایل تصویر را در متلب (Matlab) باز کنیم؟

تصویر نمایش داده شده را میتوان با استفاده از Export در منوی File، با فرمت دلخواه ذخیره کرد.

روش دوم:

در پنجره اصلی متلب، بر روی گزینه Open file کلیک کنید. در پنجره ای که باز می شود، گزینه Files of type برابر All MATLAB files قرار داده شده است، باید این گزینه را به All Files تغییر دهید تا بتوانید هر نوع فایلی را انتخاب کنید (مثلا عکسی با فرمت jpeg). سپس فایل خود را یافته و بر روی گزینه Open کلیک کنید. پنجره ای به شکل زیر باز می شود :

وارد کردن عکس های ویندوز به محیط متلب

در این مرحله، متلب می خواهد اطلاعات عکس شما را در متغیری ذخیره کند. اگر نام عکس شما یک نام مجاز برای متلب باشد، متلب همان نام را برای متغیر انتخاب می کند و اگر نام، غیر مجاز باشد، متلب آن را تغییر می دهد. مثلا اگر عکسی با نام ۱٫jpeg را انتخاب کرده باشید، متلب نام x1 را برای متغیر انتخاب می کند.

شما می توانید بر روی نام انتخاب شده، دو بار کلیک کنید و نامی دیگر را انتخاب نمایید. پس از انتخاب نام مورد نظر خود، بر روی گزینه Finish کلیک کنید تا پنجره بسته شود.

برای آن که عکس خود را در متلب مشاهده کنیم، میتوانیم از دستور زیر نیز استفاده کنیم (برای متغیر با نام x1) :

نتیجه :

نرم افزار متلب، پنجره ای را باز کرده و عکس مورد نظرمان را نمایش می دهد.

نوشتن یا ذخیره تصویر

یک ماتریس تصویر با فرمت زیر می تواند به عنوان یک تصویر با فرمت دلخواه ذخیره گردد:

فرمت های متداول برای نوشتن تصویر: TIFF, JPEG, BMP, PNG, PGM

مثال:

یا

نوشتن بر روی یک تصویر نمایش داده شده

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

مثال:

همچنین هر تصویر را میتوان با یک عنوان نشان داد که دستور زیر این کار را انجام می دهد:

بریدن قسمتی از تصویر

تابع Imcrop

با این تابع میتوان قسمتی از تصویر را به شکل مستطیل انتخاب کرده و در واقع یک تصویر دیگر به اندازه تصویر انتخابی ایجاد کنیم، که میتوان محدوده انتخابی را با ماوس جدا کرد، و یا این که مختصات محدوده انتخابی را در پارامترهای ورودی وارد کرد.

هنگامی که imcrop بدون پارامتر است با فشار دادن کلید shift (همزمان با چپ کلیک یا راست کلیک) هنگام انتخاب مستطیل مورد نظر مستطیل  به مربع تبدیل میشود:

دنبال کردن مسیری خاص در تصویر

تابع Improfile

این تابع در واقع طول مسیر انتخابی(مسیری که با ماوس انتخاب می کنید) مقادیر پیکسل های مسیر را به صورت بردار به ما نشان می دهد. یک نکته مهمی که وجود دارد این است که میتوان inter pollution بگیریم، یعنی یک پارامتر ورودی به این تابع بدهیم تا به همان اندازه، در مسیر انتخابی، نقاط را در بردار نشان دهد.

مثلا اگر (improfile(10 بدهیم، ۱۰ نقطه را در این مسیر انتخابی نشان می دهد، در واقع برای این کار از یک الگوریتم مسیریابی استفاده می کند.

قالب های تصویر

نوع داده ی عددی پیش فرض در متلب Double است، این نوع داده ۶۴ بیتی است و اعداد نماد علمی را نیز شامل می شود. متلب برای پشتیبانی از قالب های تصاویر ، شامل قالب های داده ی کاراکتری ۱۶ بیتی یا نوع عدد صحیح بدون علامت ۸ بیتی است.

نکته:

توابع image و imagesc ، میتوانند تصاویر ۸ یا ۱۶ بیتی را نمایش دهند بدون این که قالب آنها را به Double تبدیل کنند.

بازه ی مقادیر داده ای برای داده های ۸ بیتی، [۰ ۲۵۵] و بازه ی مقادیر داده ای برای داده های ۱۶ بیتی، [۰ ۶۵۵۳۵] می باشد.

برای تصاویر اندیس گذاری شده، تابع image ، مقدار ۰ را در اولین مقدار جعبه رنگ ۲۵۶ رنگی قرار می دهد و نیز مقدار ۲۵۵ را به عنوان آخرین مقدار در نظر می گیرد که به طور خودکار از نقطه شروع مناسبی استفاه می کند. از آنجایی که بازه ی معمولی داده های Double برای تصاویر اندیس گذاری شده :

است. بنابراین برای تبدیل داده های ۸ بیتی به Double و یا داده های ۱۶ بیتی به Double و یا برعکس باید مقادیر را به اندازه ی یک واحد اضافه کرد.

علاوه بر این عملگرهای ریاضی ، روی آرایه های ۸ بیتی تعریف نشده اند، بنابراین برای اجرای عملگر روی مقادیر صحیح بدون علامت میبایست، آنها را به قالب Double تبدیل کنید.

مثال:

در این مثال، داده ی ۸ بیتی در متغییر Xuint8 به Double تبدیل می شود و برعکس.

image_pdfدانلود فایل pdf این مقاله
کلیدواژه ها :

این خبر را به اشتراک بگذارید :