روش تبدیل تصاویر rgb به grayscale متلب
یکی از نرمافزارهای بسیار کاربردی برای پردازش تصویر و کار روی دادههای تصویری، نرمافزار متلب است. اگر با اینن نرمافزار کار کنید قطعا میبینید که توابع کاربردی زیادی در مباحث مختلف در آن موجود است. روش تبدیل تصاویر rgb به grayscale در نرمافزار متلب با کمک تابع rgb2gray انجام میشود ولی در این نوشته ما توابعی دستی برای یادگیری بیشتر و کار با نرمافزار متلب نوشته ایم تا این تبدیل رنگی در بحث پردازش تصویر کاملا برای شما قابل فهم شود. آموزشهای بیشتر و سورس کدهای مربوط به نرمافزار متلب را در این لینک مشاهده کنید.
روش تبدیل تصاویر rgb به grayscale متلب
اگر برای تبدیل تصاویر رنگی با فرمت RGB به فرمت Grayscale جستجوی سادهای کنید میفهمید که تابع rgb2gray دقیقا همین کار را بدون نیاز به کدهای بیشتر برای شما انجام میدهد. در این بخش برای فهم بیشتر بدیل تصاویر رنگی با فرمت RGB به فرمت Grayscale برای این کار به صورت دستی سه مدل تابع ساده نوشتهایم که مفهوم این تبدیل را کاملا فرا بگیرید.
تصویر grayscale
تصاویر خاکستری یا grayscale تصاویری هستند که طول دامنهی رنگی آنها بین عدد ۰ تا ۲۵۵ است. در این طیف رنگی مقدار ۰ یعنی سیاه مطلق و مقدار ۱ یعنی سفید مطلق. میانهی این دو مقدار را اصطلاحا به آنها graylevel یا سطوح خاکستری میگوییم.
روش اول تابع تبدیل تصاویر رنگی با فرمت RGB به فرمت Grayscale
در روش اول از فرمول زیر استفاده کردهایم:
gray color code = Red * 0.299 + Green * 0.587 + Blue * 0.144
نکته: فرمول بالا توسط کارشناسان مختلف بررسی و تایید شده است.
کد این تابع به شکل زیر است:
function grayImage = rgb2grayscale1(X) indexNum = size(X); grayImage = im2uint8(zeros(indexNum(1), indexNum(2))); temp = 0; for i = 1:indexNum(1) for j=1:indexNum(2) temp = int32(X(i, j, 1)) * .299 + int32(X(i, j, 2)) * .587 + int32(X(i, j, 3)) * .144; if(temp < 0) temp = 0; elseif(temp > 255) temp = 255; end grayImage(i,j) = int8(temp); end end end
نکته: کد بالا یک تابع نرمافزار متلب است که با نام rgb2grayscale1.m در کنار پروژهی شما قابل استفاده است.
روش دوم تابع تبدیل تصاویر رنگی با فرمت RGB به فرمت Grayscale
در روش دوم از فرمول زیر استفاده کردهایم:
gray color code = (Red + Green + Blue)/3
کد این تابع به شکل زیر است:
function grayImage = rgb2grayscale2(X) indexNum = size(X); grayImage = im2uint8(zeros(indexNum(1), indexNum(2))); temp = 0; for i = 1:indexNum(1) for j=1:indexNum(2) temp = int32(X(i, j, 1)) + int32(X(i, j, 2)) + int32(X(i, j, 3)); if(temp < 0) temp = 0; elseif(temp > 255) temp = 255; end grayImage(i,j) = int8(round(temp / 3)); end end end
نکته: کد بالا یک تابع نرمافزار متلب است که با نام rgb2grayscale2.m در کنار پروژهی شما قابل استفاده است.
روش سوم تابع تبدیل تصاویر رنگی با فرمت RGB به فرمت Grayscale
در روش سوم از فرمول زیر استفاده کردهایم:
gray color code = (Red + Green + Blue)*0.33
نکته: منظور از 0.33 عدد یک سوم کسری است. کد این تابع به شکل زیر است:
function grayImage = rgb2grayscale3(X) indexNum = size(X); grayImage = im2uint8(zeros(indexNum(1), indexNum(2))); temp = 0; for i = 1:indexNum(1) for j=1:indexNum(2) temp = int32(X(i, j, 1)) + int32(X(i, j, 2)) + int32(X(i, j, 3)); if(temp < 0) temp = 0; elseif(temp > 255) temp = 255; end grayImage(i,j) = int8(round(temp * .33)); end end end
نکته: کد بالا یک تابع نرمافزار متلب است که با نام rgb2grayscale3.m در کنار پروژهی شما قابل استفاده است.
اگر علاقهی زیادی به مطالعه در ارتباط با هوش مصنوعی و پردازش تصویر دارید لینکهای روبرو را استفاده کنید: (هوش مصنوعی – پردازش تصویر) اگر نیاز به یادگیری نرمافزار متلب را دارید این لینک را دنبال کنید. در صورتی که روشهای بهتری برای تمرین بالا در اختیار دارید برای ما ارسال کنید.
ارسال پاسخ