كيف يقوم الماتلاب بمعالجة الصور كيف يعرض الماتلاب الوان البيكسل
كما نعلم تتكون الصورة من مصفوفة من الارقام كل رقم فى هذه المصفوفة يعبر عن لون البكسل فمثلا اذا كان الرقم يساوى 255 فان هذا البيكسل يكون لونه ابيض ومن الممكن من خلال الماتلاب من عرض ان مصفوفة فى هيئة صورة ويعتمد هذا على الامر المستخدم فمثلا يمكننا عرضها بالابيض والاسود فقط كما فى الصورة الاتيه
او من الممكن عرضها بمجموعة محدده من الالوان فعلى سبيل المثال الصورة الاتيه معروضه بتدرجات اللون الاخضر والان سنبدا فى معرفة انواع الصور اى بمعنى أخر طريقة عرض الماتلاب لالوان البيكسل المختلفة ويوجد بالماتلاب ثلاثة انواع اولا :: اللون الحقيقى وهى كما نراها فى أجهرة الكمبيوتر العادية والتى تكون متولده من الكاميرا او الاسكانر اما النوعين الاخرين فيسمى فى الماتلاب Indexed and scaled indexedويستخدم فى اظهار البيانات العلمية والهندسية بالوان يكون لها تدريج معين مثل صور التوزيعات الحرارية اما اذا كان لدينا فى نسخة الماتلاب Image Processing Toolboxفانه سيكون لدينا نوعان اخرين وهما Grayscaleوهو توزيعات اللون الرمادى ويبدا من الابيض الى الاسود والنوع الاخر هو Binaryوالان سنبدا فى اعطاء مثال على كل نوع[center]
اولا الصورة ذات الالوان الحقيقية Truecolor Images
وفى الصورة ذات الالوان الحقيقية يكون لكل بيكسل ثلاث قيم والتى تعبر عن قيم اللون الاحمر واللون الاخضر واللون الازرق وهى الالوان الاساسية لاى صورة والان سنقوم بعمل صورة تتكون من مجموعة من الالوان وهذه الصورة عبارة عن مصفوفة 4*4 لكل عنصر فيها يمثل بيكسل ولكل لون من الالوان الاساسية مصفوفة 2*2 والتى عدد عناصرها 4 بحيث يرمز كل عنصر الى مكان بيكسل معين فمثلا بالنسبة للون الاحمر قم بتنفيذ الامر الاتى
رمز:
>>red = [1 0; 0 0]
وهذا معناه ان البيكسل رقم واحد سيكون لونه أحمر كما يلى
وبالنسبة للون الاخضر
رمز:
>>green = [0 1; 0 0]
وبالنسبة للون الازرق
رمز:
>>blue = [0 0; 1 0]
ثم نقوم بتجميع الثلاثة الوان باستخدام الامر
Cat
والذى يستخدم فى دمج المصفوفات لعمل
Array
قم بتنفيذ الامر الاتى
رمز:
>>truecolor_image = cat(3, red, green, blue);
ثم لعرض ال
Array
على هيئة صورة بالالوان الحقيقة
استخدم الامر الاتى
رمز:
>>image(truecolor_image)
[center][color=#3366ff][size=21]ثانيا
Indexed images
وفى هذا النوع القيمة الموجود فى المصفوفة لا تحدد اللون مباشرة كما سبق ولكن تستخدم فى عملية بحث عن اللون المطابق فى خريطة الالوان المستخدمة
والان سنقوم بعمل مثال على هذا النوع
فمثلا يوجد فى الماتلاب ملف اسمه
Clown.mat
قم الان بتحميل هذا الملف عن طريق الامر الاتى
رمز:
>>load clown
وللتعرف على محتويات الملف بعد تحميله استخدم الامر الاتى
رمز:
>>whos
فيرجع لنا الماتلاب القيم الاتيه
رمز:
[color=#339966]Name Size Bytes Class
X 200x320 512000 double array
caption 2x1 4 char array
map 81x3 1944 double array
[color:b94e=#339966:b94e]Grand total is 64245 elements using 513948 bytes
حيث يحتوى المتغير X على بيانات الصورة وقيم البيكسل اما المتغيرmap فيحتوى على خريطة الالوان المستخدمة لعرض الصورة بناء على هذه الخريطة
والان لعرض الصورة كما فى الملف بالخريطة الاساسية
استخدم الامر الاتى
رمز:
>> image(X)
وسيكون شكلها كما يلى :
اما اذا استخدمنا خريطة الالوان الموجودة فى الملف فسيكون من خلال الامر الاتى
رمز:
>> colormap(map)
وسيكون شكلها كما يلى :
ويمكنك ايضا استخدام نوع اخر من خرائط الالوان الموجودة فى الماتلاب فمثلا قم بتنفيذ الامر الاتى :
رمز:
>> colormap(cool)
وسيكون شكلها كما يلى :
__________________
Eng Ahmed El Deep
Mechatronics Engineer
صور اللون الرمادى
وهذه الصور تحتوى على بيانات السطوعbrightness ويمكن اعتبارها مثل النوع
scaled indexed ولكن تستخدم خريطة الوان تدرجات اللون الرمادى
وكما عرفنا ان هذا النوع خاص بى Image Processing Toolbox ولذلك نجد لدينا الان الامرين الاتين imtool and imshow واللذان يستخدمان فى عرض هذا النوع من الصور مباشرة
والان سنقوم بعمل مثال بسيط عبارة عن دالة جيب Sinusoidal
قم بتنفيذ البرنامج الاتى فى سطر الماتلاب
رمز:
theta = linspace(0, 2*pi, 256);
رمز:
I = repmat((-cos(2*theta) + 1)/2, [256 1]);
h = imshow(I)
وستكون نتيجة التنفيذ كما يلى :
وتنفيذ الامر الاتى
رمز:
get(h, 'CDataMapping')
ans =
scaled
فنجد الصورة من النوع scaled كما ذكرنا سابقا
اما اعلى قيمة واقل قيمة فان ال Image Processing Toolbox يقوم بعرضها من صفر للون الاسود و واحد للون الابيض
قم بتنفيذ الامر الاتى للتعرف على الحدود
رمز:
get(gca, 'CLim')
ans =
0 1
وخريطة الألوان المستخدمة تكون دائما هى تدرجات اللون الرمادى مع
Image Processing Toolbox
ولمعرفة قيم هذه الخريطة قم بتنفيذ الامر الاتى :
رمز:
map = get(gcf, 'Colormap');
ونلاحظ هنا ان جميع القيم من صفر الى واحد
والنوع الاخير هو
Binary images
وهذا النوع من الصور يحتوى فقط على اللون الابيض واللون الاسود ولذلك سميت بالصورة الثنائية ويكون فى الغالب لون الكتابة هو اللون الابيض ولون الخلفية هو اللون الاسود وهذا النوع ايضا كما سبق خاص بى
Image Processing Toolbox
وللحصول على مثال على هذا النوع من الصور قم بتنفيذ الامر الاتى
رمز:
bw = imread('text.png');
islogical(bw)
ans =1
وهذا للتاكد من ان الصورة تحتوى على قيم تساوى صفر وواحد فقط
رمز:
h = imshow(bw);
وسيكون نتيجة تنفيذ الامر كما يلى :
وهذا النوع من الصور يستخدم غالبا فى عرض الصور التى تحتوى على الكتابة
انتهت المقدمة وشكرا لكم على متابعتكم
__________________
منقول من ملتقى المهندسين العرب