فیلتر کردن رنگ در متلب
در این فیلم آموزشی از وبسایت الکترون ها می خواهیم با نحوه فیلتر کردن رنگ در متلب آشنا شویم . برای این منظور در ابتدا تصویر مورد نظر را به دایرکتوری متلب اضافه می کنیم. در اینجا ما از تصویر زیر استفاده کردیم :
تصویر بالا به دلیل اینکه طیف رنگی گسترده ای را در خود جای داده است برای این آموزش بسیار مناسب است .
سپس با دستور زیر تصویر را خوانده و آن را در متغیر pic ذخیره میکنیم :
1 |
pic = imread('rgb.png'); |
این کد در واقع تصویر را خوانده و آن را به یک ماتریس سه بعدی تبدیل میکند، بعد اول ماتریس ؛ تعداد پیکسل های ارتفاع تصویر است، بعد دوم تعداد پیکسل های طول تصویر است و بعد سوم ماتریس مشخصه RGB هر پیکسل از تصویر است . در واقع بعد سوم ماتریس خود متشکل از سه عدد است که می توانند بین ۰ تا ۲۵۵ باشند.
در گام بعدی برای پیمایش تمام پیکسل های موجود در عکس، از دو حلقه for با تعریف زیر استفاده می کنیم :
1 2 |
for y = 1:size(pic,1) for x = 1:size(pic,2) |
حلقه اول تمام عناصر در جهت y (بعد اول ماتریس) و for دوم تمام عناصر در جهت x را پیمایش میکند .
در گام بعدی از یک دستور if برای فیلتر کردن رنگ پیمایش شده استفاده میکنیم :
1 |
if pic(y,x,1)>100||pic(y,x,2)>100||pic(y,x,3)<100 |
کد بالا مشخص میکند که پیکسل در حال پیمایش، رنگ آبی هست یا خیر . اگر آبی نباشد خروجی if مقدار true است و مشخص می شود که پیکسلی که در آن قرار داریم آبی نیست. در خط بعدی پیکسلی که آبی نیست را با رنگ خاکستری جایگزین می کنیم . (برای اطلاعات بیشتر فیلم آموزشی را ببینید)
1 |
gsc= 0.3*pic(y,x,1)+0.3*pic(y,x,2)+0.3*pic(y,x,3); |
در کد زیر هر سه پارامتر R و G و B برابر خاکستری یا gsc قرار می گیرد :
1 |
pic(y,x,:)=[gsc gsc gsc]; |
در نهایت با دستور imshow می توانیم تصویر جدید را نمایش دهیم.
در نهایت تمام کدها به صورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 |
clear all pic = imread('rgb.png'); for y = 1:size(pic,1) for x = 1:size(pic,2) if pic(y,x,1)>100||pic(y,x,2)>100||pic(y,x,3)<100 gsc= 0.3*pic(y,x,1)+0.3*pic(y,x,2)+0.3*pic(y,x,3); pic(y,x,:)=[gsc gsc gsc]; end end end imshow(pic) |
در نهایت شکل خروجی به صورت زیر است :
برای اعمال این کد بر روی تصویر دیگر فقط کافیست متغیر pic را با تصویر دیگری مقدار دهی کنید .
در اینجا میتوانید فیلم کامل آموزش این کد را مشاهده نمایید :