من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

روش تبدیل تصاویر rgb به grayscale متلب

روش تبدیل تصاویر rgb به grayscale متلب
روش تبدیل تصاویر rgb به grayscale متلب

روش تبدیل تصاویر 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 در کنار پروژه‌ی شما قابل استفاده است.

 

اگر علاقه‌ی زیادی به مطالعه در ارتباط با هوش مصنوعی و پردازش تصویر دارید لینک‌های روبرو را استفاده کنید: (هوش مصنوعیپردازش تصویر) اگر نیاز به یادگیری نرم‌افزار متلب را دارید این لینک را دنبال کنید. در صورتی که روش‌های بهتری برای تمرین بالا در اختیار دارید برای ما ارسال کنید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]