كيف يعرض الماتلاب ألوان البيكسل ـ تعرف على أساسيات معالجة الصور الرقمية


#1

كيف يعرض الماتلاب الوان البيكسل

كما نعلم تتكون الصورة من مصفوفة من الارقام كل رقم فى هذه المصفوفة يعبر عن لون البكسل
فمثلا اذا كان الرقم يساوى 255 فان هذا البيكسل يكون لونه ابيض.

ومن الممكن من خلال الماتلاب من عرض ان مصفوفة فى هيئة صورة ويعتمد هذا على الامر المستخدم
فمثلا يمكننا عرضها بالابيض والاسود فقط كما فى الصورة الاتيه

او من الممكن عرضها بمجموعة محدده من الالوان
فعلى سبيل المثال الصورة الاتيه معروضه بتدرجات اللون الاخضر

والان سنبدا فى معرفة انواع الصور
اى بمعنى أخر طريقة عرض الماتلاب لالوان البيكسل المختلفة
ويوجد بالماتلاب ثلاثة انواع

اولا :: اللون الحقيقى
وهى كما نراها فى أجهرة الكمبيوتر العادية والتى تكون متولده من الكاميرا او الاسكانر
اما النوعين الاخرين فيسمى فى الماتلاب

ويستخدم فى اظهار البيانات العلمية والهندسية بالوان يكون لها تدريج معين مثل صور التوزيعات الحرارية
اما اذا كان لدينا فى نسخة الماتلاب

فانه سيكون لدينا نوعان اخرين وهما

وهو توزيعات اللون الرمادى ويبدا من الابيض الى الاسود
والنوع الاخر هو
Indexed and scaled indexed Image Processing Toolbox Grayscale Binary

اولا الصورة ذات الالوان الحقيقية

Truecolor Images

وفى الصورة ذات الالوان الحقيقية يكون لكل بيكسل ثلاث قيم والتى تعبر عن قيم اللون الاحمر واللون الاخضر واللون الازرق وهى الالوان الاساسية لاى صورة والان سنقوم بعمل صورة تتكون من مجموعة من الالوان وهذه الصورة عبارة عن مصفوفة 44 لكل عنصر فيها يمثل بيكسل ولكل لون من الالوان الاساسية مصفوفة 22 والتى عدد عناصرها 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)

ثانيا: Indexed images

وفى هذا النوع القيمة الموجود فى المصفوفة لا تحدد اللون مباشرة كما سبق ولكن تستخدم فى عملية بحث عن اللون المطابق فى خريطة الالوان المستخدمة

والان سنقوم بعمل مثال على هذا النوع فمثلا يوجد فى الماتلاب ملف اسمه Clown.mat قم الان بتحميل هذا الملف عن طريق الامر الاتى

>>load clown

وللتعرف على محتويات الملف بعد تحميله استخدم الامر الاتى

>>wh

فيرجع لنا الماتلاب القيم الاتيه

Name          Size                    Bytes    Class

X             200x320                 512000   double array

caption       2x1                     4        char array

map           81x3                   1944      double array

Grand total is 64245 elements using 513948 bytes

حيث يحتوى المتغير X على بيانات الصورة وقيم البيكسل اما المتغير map فيحتوى على خريطة الالوان المستخدمة لعرض الصورة بناء على هذه الخريطة والان لعرض الصورة كما فى الملف بالخريطة الاساسية

استخدم الامر الاتى

>>image(X)

وسيكون شكلها كما يلى :

اما اذا استخدمنا خريطة الالوان الموجودة فى الملف فسيكون من خلال الامر الاتى

>> colormap(map)

وسيكون شكلها كما يلى :

ويمكنك ايضا استخدام نوع اخر من خرائط الالوان الموجودة فى الماتلاب فمثلا قم بتنفيذ الامر الاتى :

>> colormap(cool)

وسيكون شكلها كما يلى :

والان ننتقل الى النوع الثالث من الصور وهو

وهو مثل النوع السابق حيث يستخدم قيمة المصفوفة فى البحث داخل خريطة الالوان ويمتاز هذا النوع عن السابق انه يتم اختيار اللون بصورة خطية مما يتيح دقة أكثر للصورة ويكون ذلك عن طريق استخدام الامر الاتى

والان سنقوم بعمل مثال بسيط على هذا النوع وتطبيقه على مصفوفة المربعات السحرية
اولا قم بتنفيذ الامر الاتى :

Scaled indexed images Imagesc

>> a=magic(5)

هذا الامر يقوم بعمل مصفوفة المربعات السحرية 5 * 5
كما يلى :

a =

  17    24     1     8    15
  23     5     7    14    16
   4     6    13    20    22
  10    12    19    21     3
  11    18    25     2     9

والان سنقوم بعرض هذه المصفوفة على هيئه صورة وباستخدام خريطة ألوان اللون الرمادى كما يلى :

>> image(a)
>> colormap(gray)

وستظهر لنا الصورة كما يلى :

ونلاحظ عدم وجود اللون الابيض وذلك لان قيمة المصفوفة a تتراوح من 1 الى 25 ولذلك تستخدم هذه الصورة اول 25 عنصر من عناصر خريطة تدرجات اللون الرمادى والتى تكون اغلبها قريبة من اللون الاسو

اما عند استخدام الامر الاتى :

>> imagesc(a)

فسيكون شكل الصورة كما يلى :

وتفسير ظهور اللون الابيض فى الصورة هو ان هذا الامر (imagesc(a يقوم بتخصيص اعلى عنصر فى مصفوفة الصورة الى اعلى عنصر فى خريطة الالوان واقل عنصر فى مصفوفة الصورة الى اقل عنصر فى خريطة ويقوم بايجاد العناصر الواقعة بينهم بصورة خطية

ويجب علينا ملاحظة ان الصور فى الماتلاب تكون على صورة Objects وتكون لها خصائص معينة ومن هذه الخصائص CDataMapping والتى تحدد نوع الصورة ال indexed او فمثلا قم بتنفيذ هذا الامر Direct Scaled

>> b=image(a)
>> get(b,'CDataMapping')

وسيكون نتيجة التنفيذ كما ياتى

ans =
      Direct

ولكن اذا استخدمنا الامر الاتى :

>> b=imagesc(a)
>> get(b,'CDataMapping')

فستكون نتيجة التنفيذ كما ياتى

ans =
    Scaled

وفى حالة الصورة Scaled فانه توجد خاصية تسمى CLim والتي تتحكم فى أعلى قيمة واقل قيمة للألوان فى خريطة الألوان والتي تكون مثل أعلى واقل قيمة فى المصفوفة فمثلا قم بتنفيذ الأمر الاتى

>> get(gca, 'CLim')

والناتج

ans =
         1    25

ويمكننا اعادة تخصيص هذه القيم مرة أخرى عن طريق الامر الاتى

>> imagesc(a, [10 15])

وهذا الأمر يقوم بتخصيص القيمة 10 الى اقل قيمة فى خريطة الألوان وهى الاسود ويقوم بتخصيص القيمة 15 إلى أعلى قيمة فى خريطة الألوان وهى اللون الابيض
وتكون نتيجة تنفيذه كما يلى :

وهذا النوع مهم جدا فى التعامل مع البيانات الهندسية وذلك لان الصور لا تكون فى الغالب صورا من الانواع العادية انما تكون بيانات ناتجه من قياسات فيزيائية

Grayscale images

صور اللون الرمادى

وهذه الصور تحتوى على بيانات السطوع brightness ويمكن اعتبارها مثل النوع وكما عرفنا ان هذا النوع خاص بى Image Processing Toolbox ولذلك نجد لدينا الان الامرين الاتين imtool and imshow واللذان يستخدمان فى عرض هذا النوع من الصور مباشرة والان سنقوم بعمل مثال بسيط عبارة عن دالة جيب Sinusoidal

قم بتنفيذ البرنامج الاتى فى سطر الماتلاب scaled indexed ولكن تستخدم خريطة الوان تدرجات اللون الرمادى

 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)

وسيكون نتيجة تنفيذ الامر كما يلى :

وهذا النوع من الصور يستخدم غالبا فى عرض الصور التى تحتوى على الكتابة


(mokhtar) #7

جهد رائع وجبار


#8

نرجو ان يكون الدرس حقق فائدة لك ؟


(atif53) #9

جازاك الله خبيرا


(رحال حول العالم) #10

ما شاء الله و لا قوة الا بالله
زادك الله من فضله يا هندسة


(mos33) #11

الله يكرمك على هذا المجهود


(emrankurdi) #12

اريد معرفة كيفية تصليع الكير اوتوماتيك الكهربائية لسيارانت اوبل 1991 اي معرفة الكود للكير مع جزير الشكر .


(maamv) #13

موضوع مهم
أبحث عن كتاب بالعربى عن هذا الموضوع


(maamv) #14

مشكورررررررررررررررررررررر


(qosmio) #15

جزاك الله خيرا


(khaled001133) #16

الف شكر على المجهود الرائع


(هناء محمد) #17

لااعرف كيف اشكرك
مجهود رائع
جزاك الله خيرا


(rhoma) #18

مشكور جزاك الله خير


(max02) #19

thanx a lot sir…


(أمير أبومعمر) #20

السلام عليكم ورحمة الله وبركاته
أخوتي الأعزاء
أنا أعمل مساعد تدريس في كلية الهندسة قسم الهنسة الألكترونية (قسم التحكم)
أرجو منك المساعدة بمدي بالمعلومات التي تخص fuzzy logic controller أو neural networkأو neuro fuzzy وذلك لانني أعمل بحث ماجستير في هذه التخصصات
وشكراً


(silik) #21

شكرا على المجهود الرائع وبالتوفيق دائما باذن الله


(white heart) #22

جزاك الله خيرا


(كتكوته) #23

شكرراااااااا


(~*ود*~) #24

شكرا جزيلا
الله يعطيك العافية


(أحمد 123) #25

جزاك الله خيرا