نمایش دادن انواع عکس ها در متلب
در این مقاله، با موارد زیر آشنا خواهید شد:
- نمایش دادن عکس های ایندکس شده
- نمایش دادن عکس های سیاه و سفید
- نمایش دادن عکس های باینری
- نمایش دادن عکس های رنگی
نمایش دادن عکس های ایندکس شده در متلب
برای نمایش دادن یک عکس ایندکس شده، با استفاده از دستور imshow یا imtool، کافیست ماتریس عکس و نقشه ی رنگ آن را مشخص کنید. در این آموزش از متغیر X برای مشخص کردن یک عکس ایندکس شده و از متغیر map برای مشخص کردن نقشه ی رنگ استفاده می شود. بنابراین می توانیم از یکی از دستورات زیر استفاده کنیم:
مثال (نمایش دادن انواع عکس ها در متلب)
imshow(X,map)
یا
imtool(X,map)
برای هر پیکسل که در ماتریس X قرار دارد، این توابع رنگ ذخیره شده در سطر متناظر از نقشه ی رنگ را نمایش می دهند. در صورتی که ماتریس عکس مورد نظر از نوع double باشد، مقدار 1 به اولین سطر در نقشه ی رنگ اشاره می کند و مقدار 2 به دومین سطر اشاره می کند و همین طور الی آخر. اما اگر ماتریس عکس مورد نظر از نوع uint8 یا uint16 باشد، مقدار 0 به اولین سطر از نقشه ی رنگ اشاره می کند، و مقدار 1 به دومین سطر اشاره می کند و همین طور الی آخر.
در صورتی که نقشه ی رنگ ما حاوی رنگ های بیشتری نسبت به عکس باشد، توابع imshow و imtool این رنگ های اضافی در نقشه ی رنگ را نادیده می گیرند. اما اگر نقشه ی رنگ ما حاوی رنگ های کمتری نسبت به آنچه عکس ما نیاز دارد، باشد، این توابع پیکسل هایی از عکس که از ظرفیت نقشه ی رنگ بیشتر باشند را با آخرین رنگ در نقشه ی رنگ تنظیم می کنند. بعنوان مثال، اگر یک عکس از نوع uint8 داشته باشیم که 256 رنگ دارد، و شما بخواهید آن را با استفاده از یک نقشه ی رنگ که حاوی 16 رنگ است، نمایش دهید، تمام پیکسل ها با مقدار 15 یا بیشتر، با استفاده از آخرین رنگ در نقشه ی رنگ نمایش داده می شوند.
نمایش دادن عکس های سیاه و سفید در متلب
برای نمایش دادن یک عکس سیاه و سفید می توانید از توابع imshow یا imtool استفاده کنید و ماتریس عکس مورد نظر را بعنوان آرگومان به آنها بدهید. در این آموزش ها از متغیر I برای مشخص کردن یک عکس سیاه و سفید استفاده می کنیم.
مثال (نمایش دادن انواع عکس ها در متلب)
imshow(I)
یا
imtool(I)
نرم افزار متلب یک عکس سیاه و سفید را بعنوان یک ماتریس منحصر بفرد ذخیره می کند به طوری که هر درایه از این ماتریس به یک پیکسل از یک عکس تعلق دارد. در صورتی که I از نوع double باشد، یک پیکسل با مقدار 0.0 بصورت مشکی نمایش داده می شود و یک پیکسل با مقدار 1.0 بصورت سفید نمایش داده می شود، و پیکسل ها با مقداری بین این دو، بصورت رنگ های خاکستری نمایش داده می شوند. در صورتی که I از نوع uint8 باشد، آنگاه یک پیکسل با مقدار 255 بصورت سفید نمایش داده می شود. واگر I از نوع uint16 باشد، آنگاه یک پیکسل با مقدار 65535 بصورت سفید نمایش داده می شود.
عکس های سیاه و سفید مشابه با عکس های ایندکس شده هستند، زیرا هریک از آنها از یک نقشه ی رنگ 3×m بصورت RGB استفاده می کنند. اما ما معمولا برای مشخص کردن عکس های سیاه و سفید از یک نقشه ی رنگ استفاده نمی کنیم.
متلب عکس های سیاه و سفید را با استفاده از یک نقشه ی رنگ سیاه و سفید سیستمی نمایش می دهد به طوری که R=G=B.
نمایش دادن عکس های سیاه و سفید با محدوده ی غیرمتعارف
برخی مواقع، داده های عکسی که می خواهید بصورت یک عکس سیاه و سفید نمایش دهید، ممکن است دارای محدوده ی نمایشی باشند که بیرون از محدوده ی متعارف جعبه ابزار باشد. بعنوان مثال ممکن است داده های عکس شما خارج از محدوده ی های نمایش زیر باشند:
- محدوده ی \([0,1]\) برای ماتریس ها از نوع single یا double
- محدوده ی \([0,255]\) برای ماتریس ها از نوع uint8
- محدوده ی \([0,65535]\) برای ماتریس ها از نوع uint16
- محدوده ی \([-32767,32768]\) برای ماتریس ها از نوع int16
بعنوان مثال، اگر شما یک عکس سیاه و سفید را مورد فیلتر قرار دهید، ممکن است برخی از داده های خروجی در خارج از محدوده ی داده های اصلی قرار گیرند.
برای نمایش دادن داده ها با محدوده ی غیرمتعارف به صورت یک عکس، می توانید مستقیما محدوده ی نمایش را مشخص کنید. مثلا می توانید برای تابع های imshow و imtool از سینتکس زیر استفاده کنید:
مثال (نمایش دادن انواع عکس ها در متلب)
imshow(I,'DisplayRange',[low high])
یا
imtool(I,'DisplayRange',[low high])
اگر شما از یک ماتریس خالی (مثل []) برای محدوده ی داده ها استفاده کنید، این توابع به طور اتوماتیک مقیاس دهی خواهند شد و مقادیر مینیمم و ماکسیمم تنظیم خواهند شد.
در مثال بعدی، با ایجاد یک محدوده ی داده ی غیرمتعارف، یک عکس سیاه و سفید را فیلتر می کنیم. در مثال زیر، برای نمایش یک عکس از تابع imtool استفاده می کنیم و مقیاس دهی اتوماتیک را مورد استفاده قرار می دهیم. اگر شما این مثال را اجرا کنید، مشاهده خواهید کرد که محدوده ی نمایش در گوشه ی پایین و سمت راست از ابزار عکس قرار دارد.
مثال (نمایش دادن انواع عکس ها در متلب)
I = imread('testpat1.png');
J = filter2([1 2;-1 -2],I);
imtool(J,'DisplayRange',[]);
نمایش دادن عکس های باینری
عکس های باینری، در نرم افزار متلب از نوع logical هستند. عکس های باینری تنها حاوی 0 و 1 هستند. پیکسل ها با مقدار 0، به رنگ مشکی نمایش داده می شوند و پیکسل ها با مقدار 1، به رنگ سفید نمایش داده می شوند.
نکته: برای اینکه جعبه ابزار متلب، یک عکس را بصورت باینری شناسایی کند، این عکس باید از نوع logical باشد. بنابراین عکس های سیاه و سفیدی که حاوی 0 و 1 باشند، را نمی توان باینری در نظر گرفت.
برای اینکه بتوانید یک عکس باینری را با استفاده از توابع imshow یا imtool نمایش دهید، تنها کافیست نام عکس مورد نظر را بعنوان آرگومان به این توابع بدهید. بعنوان مثال کد زیر، ابتدا یک عکس باینری را می خواند و سپس آن را نمایش می دهد. در این کتاب برای مشخص کردن عکس های باینری، از متغیر BW استفاده می شود.
مثال (نمایش دادن انواع عکس ها در متلب)
BW = imread('circles.png');
imshow(BW)
یا
imtool(BW)
تغییر دادن رنگ نمایش عکس های باینری
ممکن است شما دوست داشته باشید که هنگام نمایش دادن عکس های باینری، آنها را معکوس کنید به طوری که 0 ها به رنگ سفید و 1 ها به رنگ سیاه نمایش داده شوند. برای انجام این کار می توانید از عملگر نفی(~) در متلب استفاده کنید. بعنوان مثال داریم:
مثال (نمایش دادن انواع عکس ها در متلب)
imshow(~BW)
یا
imtool(~BW)
شما می توانید یک عکس باینری را با استفاده از یک نقشه ی رنگ نمایش دهید. بعنوان مثال، دستور زیر از یک نقشه ی رنگ دو سطری استفاده می کند به طوری که 0 ها به رنگ قرمز هستند و 1ها به رنگ آبی نمایش داده می شوند:
مثال (نمایش دادن انواع عکس ها در متلب)
imshow(BW,[1 0 0; 0 0 1])
یا
imtool(BW,[1 0 0; 0 0 1])
نمایش دادن عکس های رنگی
عکس های رنگی که به آنها عکس های RGB هم گفته می شود، مستقیما مقادیر رنگ ها را تعیین می کنند و این کار را از طریق نقشه ی رنگ انجام نمی دهند. یک عکس رنگی درواقع یک ماتریس \(m\times n\times 3\) است. در عکس های رنگی هر پیکسل به صورت \((r,c)\) در نظر بگیریم، رنگ آن به صورت \((r,c,1:3)\) مشخص می شود.
برای نمایش دادن یک عکس رنگی با استفاده از توابع imshow یا imtool، کافیست ماتریس عکس را بعنوان یک آرگومان به این توابع بدهید. بعنوان مثال کد زیر یک عکس رنگی را می خواند و سپس آن را نمایش می دهد. در این کتاب از متغیر RGB برای مشخص کردن یک عکس رنگی استفاده می شود.
مثال (نمایش دادن انواع عکس ها در متلب)
RGB = imread(`peppers.png');
imshow(RGB)
یا
imtool(RGB)
نکته: اگر یک عکس رنگی را نمایش دادید اما دیدید که به صورت سیاه و سفید نمایش می یابد، بررسی کنید که آیا این عکس، یک عکس ایندکس شده است یا نه. در عکس های ایندکس شده، باید یک نقشه ی رنگ را برای عکس مشخص کنید.
- نوشته شده توسط احسان عباسی
- بازدید: 11744