Digital Image Processing Using Mathlab


(simira) #1

[RIGHT]قدرة برنامج الماثلاب لمعالجة الصور الرقمية هي تشمل مجموعة دوال لمعالجة مصفوفات متعددة الابعاد لاي صور ذات مصفوفات عددية ببعدين التي تعتبر حالات خاصة

The Image Processing Toolbox IPT

هو مجموعة دوال التي تعطي لماثلاب بيئة حوسبة رقمية

هذه الدوال والتعابير للغة ماثلاب جعلت عدة عمليات في معالجة الصور سهلة لكتابتها بشكل مضغوط واسلوب واضح

الصورة تعرف كدالة بمتغيرين

f (x,y)

والتغيرات هي تمثل احداثيات مستوي والسعة للدالة لاي زوج من الاحداثيات هي تمثل الشدة للصورة في تلك النقطة

Gray level

هو مصطلح يستعمل غالبا للاشارة الى الشدة لصور احادية اللون اي رصاصية بالابيص والاسود

Color images

هو يتشكل بواسطة تركيب لصور منفردة ببعدين

مثلا في الوان النظام

RGB

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

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

الصورة هي مستمرة على طول الاحداثيات للمستوي وكذلك السعة

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

تحويل قيم الاحداثيات الى شكل رقمي يسمى

Sampling

وتحويل قيم السعة الى شكل رقمي يسمى

Quantization

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

A digital image[/right]


(simira) #2

النتيجة للاحاثيات الرقمية والسعة الرقمية هي مصفوفة لاعداد حقيقية تملك عدد من الصفوفM والاعمدةN لذلك حجم الصورة هو N×M

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

ونقطة الاصل للصورة هي (y, x)=(0,0).

مدى x هو من 0 الى 1˗M

ومدى y من 0 الى 1-N

بزيادة اعداد صحيحة

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

اولا بدلا من استعمال ( y, x) يستعمل (c,r) لتمثيل السطر والعمود

ثانيا نقطة الاصل في نظام الاحداثيات هي (1,1) ومدى الاسطر من 1 الى M ومدى الاعمدة من 1 الى N بزيادة اعداد صحيحة


(simira) #3

[RIGHT]

وكل عنصر في هذه المصفوفة يدعى

Pixel

وقليلا ما يستخدم صندوق الادوات احداثيات توافقية اخرى تسمى

Spatial coordinates

التي تستخدم x ليمثل الاعمدة وتستخدم y ليمثل الاسطر

وهذا هو معكوس الاستعمال للمتغيرات وقليل استعماله في الكتب [/right]


(simira) #4

ارجوا ان يضيف رسم من يستطيع لانني لا اعرف كيف ارسم في هذه الصفحة


#5

جزاك الله خيرا ولاضافة الرسومات يمكنك استخدام مركز رفع الصور
http://www.almohandes.org/vb/uploader.html
ومن ثم استخدام اللينك الذى يظهر بعد الرفع لادراج الصور فى المشاركة


(simira) #6

Writing Image

الصورة الرقمية تكتب على الدسك باستخدام الدالة imwrite

ولضغط الصورة يستخدم

quality',q'

q تاخذ اعداد صحيحة من 0 الى 100
العدد الاقل هو الاسوء نتيجة للظغط
وضروري ظغط الصورة الرقمية لتقليل وقت الخزن والارسال لكن الى مستوى معقول والا سوف تشوه الصورة

لتحصيل معلومات عن الصورة نستخدم

[RIGHT][RIGHT]

   imfinfo  bubbles25.jpg  <<

[/right]
[/right]

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

الاكثر صيغة عامة للصور من نوع JPEG هو

 imwrite(f,´filename.jpg´,´quality´,q    

[SIZE=4][COLOR=#000000]

[RIGHT][RIGHT]بينما الصيغة للصورة الرقمية من نوع tif

      imwrite g,´filename.tif´,´compression´,´parameter´,resolution´,([   colores roweres   ]

حيث parameter تعني اما لا يوجد ظغط none
او يوجد من نوع backbits
او ccitt
والمصفوفة 2*1
عددين التي تعطي نتيجة الاعمدة ونتيجة السطر في كل بيكسل للوحدة
للحصول على معلومات عن صورة من نوع tif[/right]
[/right]
[/color][/size]

[SIZE=4]imfinfo  cameraman.tif

[/size]

ولحساب نسبة الظغط

bytes=256*256*8
bytes=524288
ratio=524288/65126
ratio=8.0504

هذه هي نسبة الظغط مع ابقاء الصورة تحتوي على المعالم الاصلية

الدالة imfinfo هي دالة ثنائية ممكن ان نستخدمها باسلوبين اما ان نكتبها مباشرة وبعدها اسم الفايل او نكتبها بعد متغير مثل t لخزن المعلومات في المتغير t ونستطيع ان نستخدمها بعد ذلك

   ( ´t=imfinfo(´cameraman.tif 





(simira) #7

[RIGHT] Image Types

هنالك اربع انواع من الصور الرقمية

Intensity image

Binary image

Indexed image

RGB image

اغلب عمليات الشغل للصور الاحادية اللون تكون فيها الصور من النوع

Binary imageاو Intensity image

1. Indexed Images

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

خارطة الالوان تمثل مجموعة قيم تمثل الوان الصورة

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

خارطة الالوان هي

m-by-n matrix

double للصنف

كل سطر في خارطة الالوان يحدد قيم الاحمر والاخظر والازرق للون منفرد

Color=[R G B]

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

مثلا بيكسل معين يحتوي على الرقم 5

يعني ذلك في خارطة الالوان

0.2904 0.0642 0.0671

العلاقة بين المصفوفة وخارطة الالوان تعتمد فيما اذا كانت للصنف

Double او unit8

اذا مصفوفة الصورة هي للصنف

double

الرقم واحد يمثل السطر الاول في خارطة الالوان والرقم اثنان يمثل السطر الثاني وهكذا

اما اذا كانت الصورة الرقمية للصنف

Unit8

يمثل الرقم صفر السطر الاول في خارطة الالوان والرقم واحد يمثل السطر الثاني في خارطة الالوان وهكذا

2. Intensity Images

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

Double المصفوقة ممكن ان تكون للصنف double

[0 1]وفي هذه الحالة تحتوي على القيم في المدى

unit 8 على الصنف

[0,255]وفي هذه الحالة تكون القيم في المدى

العناصر في هذا النوع من المصفوفة تمثل مختلف الشدات او المستويات الرصاصية

حيث ان الشدة 0 تمثل الاسود

والشدة 1 او 255 تمثل الابيض او الشدة الكاملة

3. Binary Images

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

off and on

وتخزن كمصفوفة ببعدين للعناصر

0’s and 1’s

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

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

ومن الممكن ان نخزنها كمصفوفة للصنف

Double or unit8

هذا الصنف يفضل لانة ياخذ اقل ذاكرة unit8

4. RGB Image

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

يمثل الشدات الاحمر والخضر والازرق التي تصنع اللون

ولا تشبه الصورة المفهرسة من حيث ان قيم الشدة هي تخزن مباشرة في مصفوفة الصور وليس في خارطة الالوان

وتكون المصفوفة للترتيب

m-by-n-by-3

للبيكسلات في الصورة m و ى n هي تمثل الاسطر والاعمدة m وn

والعدد 3 يمثل المستويات الثلاثة لقيم الشدات الاحمر والاخضر والازرق وهي التي تكون اللون للبيكسل

كمثال على ذلك افرض ان البيكسل مخزون في الترتيب

FONT=Times New Roman [/font]

FONT=Times New Roman = 0.3451[/font]

FONT=Times New Roman=0.4574[/font]

FONT=Times New Roman=0.5432[/font]

اللون للبيكسل هو

0.3451 0.4574 0.5432

هذه الصورة الرقمية اذا كانت للصنف

Double

فهي تحتوي للقيم

[0,1]

او للصنف

Unit8

فهي تحتوي على القيم في المدى

[0,255]

والمثال السابق هو للصنف الاول [/right]


(simira) #8

Converting between data class and image types

[RIGHT]الصورة الرقمية الثنائية تملك معنى محدد جدا في الماثلاب

هو مصفوفة منطقية للاصفار والواحدات

اما الترتيب للاصفار والواحدات الذي هو قيمه لمصفوفة بيانيات لا يعتبر صورة رقمية ثنائية في الماثلاب

و يحول الى صورة ثنائية باستعمال الدالة [/right]

logical

B=logical (A

[RIGHT]واذا كانت تحتوي على عناصر اخرى نستعمل هذه الدالة لتحويل كل الكميات الغير صفرية الى الواحد وكل الاصفار الى اصفار منطقية

لمعرفة فيما اذا كانت المصفوفة هي منطقية ام لا نستعمل الدالة

islogical(C [/right]

[RIGHT]اذا كانت المصفوفة منطقية يكون الجواب رقم واحد

واذا كانت غير منطقية يكون الجواب هو الرقم صفر [/right]

[RIGHT]تعرف الصورة كصنف ونوع

Data_class image_type image

Unit8 intensity image [/right]

اي ان الصورة الرقمية هي للصنف

Unit8

وللنوع

intensity image

[RIGHT]ولكن هنالك صور هي ممكن ان تستعمل لاي صنف وهنالك صور مثل الصور الثنائية هي تستعمل فقط للصنف

logical [/right]

للتحويل بين اصناف الصور نستعمل هذه الصيغة

B=data_class_name(A

B=double(A

D=unit8 (C

[RIGHT]واذا المصفوفة للصنف

Double[/right]

[RIGHT]وتملك مدى من القيم خارج

[0,255][/right]

[RIGHT]وتحول للصنف

Unit8[/right]

[RIGHT]برنامج الماثلاب يحول كل القيم الى الصفر التي اقل من الصفر

وكل القيم التي اكبر من 255 الى 255[/right]

[RIGHT]وباقي الاعداد تحول الى ارقام صحيحة بترك اجزائها الكسرية

وكذلك التحويل الى صنف [/right]

logical

[RIGHT]بتحويل كل الارقام المدخلة التي قيمتها صفر الى صفر

وكل قمية مدخلة ليست صفر الى القيمة واحد [/right]

f= -0.5 0.5
0.75 1.5

g=im2unit8(f

g= 0 128
191 255

[RIGHT]نلاحظ ان البرنامج حول كل القيم التي اصغر من الصفر الى صفر

وحول كل القيم التي اكبر من الواحد الى 255[/right]

[RIGHT]ولتحويل مصفوفة عشوائية الى مصفوفة للصنف

Double [0,1 [/right]

g=mat2gray(A, [Amin, Amax

[RIGHT]وفي هذه الحالة كل القيم التي اصغر من

Amin[/right]

[RIGHT]تحول الى صفر ويمثل اللون الاسود

وكل القيم التي اكبر من

Amax

يحول الى واحد الذي يمثل اللون الابيض [/right]

g=mat2gray(A

[RIGHT]هنا يجمع كل القيم التي هي خقيقة الاقل والاكبر اي

Minimum and maximum[/right]

ويكون الناتج لنفس الصنف للمدخل

واذا افترضنا هذه المصفوفة

h=unit8([25 50; 128 200]

g=im2double(h

g= 0.0980 0.1961

0.4706 0.7843

[RIGHT]ونرى هنا ان كل قمية هي ناتج قسمة الرقم على 255

اما اذا كانت للصنف

Unit16

فتقسم القيم على 65535[/right]

[RIGHT]واذا اردنا ان نحول الصورة الى

Binary

من صورة

Intensity[/right]

g=im2bw(f, T

[RIGHT]وتحول كل القيم التي اصغر من

T

الى الصفر

وتحول كل البيكسلات الاخرى الى القيم واحد[/right]

[RIGHT]القيم المحددة للقيمة الحرجة

T [ 0, 1 [/right]

[RIGHT]بدون الاخذ بنظر الاعتبار الصنف المدخل

والصورة المخرجة هي صورة للنوع

Logical

واذا لم نكتب القيمة الحرجة يختار البرنامج القيمة

0.5[/right]

[RIGHT]فاذا كانت الصورة المدخلة هي للصنف

Unit8

تقسم كل القيم على 255 وفيما بعد تطبق القيمة الحرجة

واذا كانت الصورة المدخلة هي للصنف

Unit16

تقسم القيم على 65535

وفيما بعد تطبق القيمة الحرجة [/right]


(simira) #9

Double الصورة الاتية

F =[1 2;3 4

F= 1 2

4 3

[RIGHT]نحولها الى ثنائية مع قيمة حرجة

T=0.6[/right]

اقل قيمة هي صفر واعلى قيمة هي واحد وباقي القيم هي بين هذه القيمتين

G=mat2gray(f

[RIGHT]G= 0 0.3333


1.0000 0.6667[/right]

Gb=im2bw(g, 0.6

[RIGHT]Gb=0 0

1 1

[/right]

ومن الممكن ان نحصل على نفس النتيجة بواسطة كتابة الصيغة

gb= f > 2

[RIGHT]gb=0 0

1 1 [/right]

Gbv= islogical(gb

Gbv= 1


(simira) #10

[RIGHT]والان لتحويل هذه الصورة الرقمية الى مصفوفة عددية ليست منطقية من صنف

Double[/right]

Gbd=im2double (gb

Gbd = 0 0

1 1

[RIGHT]اما اذا كانت للصنف

Unit8[/right]

Gbd=0 0

0.0039 0.0039

[RIGHT]وعندما نريد ان نحول الصورة الى صنف

Double

مع الحفاظ على القيم 0 و 1

نكتب فقط [/right]

Gbd= double (gb

[RIGHT]Gbd= 0 0

1 1 [/right]

[RIGHT]ومن الممكن ان نحصل الى نفس النتيجة باستعمال الصيغة

Gbd = im2double ( im2bw (mat2gray (f) , 0.6 ) [/right]

Gbd = double (f > 2


(simira) #11

[RIGHT]Color image processing

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

RGB

هي مصفوفة 3xNxM لالوان البكسلات

من الممكن ان تكون الصورة باي صنف من اصناف الصور التي ذكرتها سابقا

واذا كان كل عنصر صورة هو للصنف 8 بت يكون عمق البت للصورة

24 bits

ان عدد البتات لعناصر الصورة هو متساوي لذلك العدد الالوان الممكنة هو

2^(b ^3)

b تمثل

العدد للبتات في كل عنصر للصور

وفي هذه الحالة عدد الالوان الممكنة هو

16,777,216

في برنامج ماثلاب تكتب بالصيغة الاتية

rgb_image = cat(3, fR, fG, fB

cat = concatenate

اذا جميع العناصر متماثلة تكون الصورة الرقمية في المستوى الرصاصي

(1, 1, 1

ولتمثيل العناصر الثلاثة يستخدم ماثلاب الصيغ الاتية

fR = rgb_image ( :, :, 1

fG = rgb_image ( :, :, 2

fB = rgb_image ( :, :, 3

فضاء الالوان يعرض يكون على شكل مكعب

القمم الثلاثة الرئيسية هي الاحمر والازرق والاصفر

والقمم الثانوية هي باقي الوان الضوء الارجواني والسماوي والاصفر

وتكتب الصيغة لعرض مكعب الالوان بالشكل

rgbcube (vx, vy, vz

RGBCUBE يعرض

مكعب للمحاور التي ذكرت سابقا

اما

RGBCUBE (VX, VY, VZ

يعرض مكعب الالوان من النقاط للمحاور التي تذكر

اما اذا لم تذكر قيمة المحاور

VX, VY, VZ

يستخدم ماثلاب قيم افتراضية

(10, 10, 4

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

ومثال على ذلك

Blue_Magenta_White_Cyan

(0, 0, 10 [/right]

[RIGHT]Red_Yellow_White_Magenta

(10, 0, 0

وهكذا باقي الوجوه الستة لمكعب الالوان [/right]

[RIGHT]

الصورة الرقمية من نوع [/right]

Indexed image


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

خارطة الالوان هي مصفوفة 3xM صنفها

Double


يحوي ارقام كسرية في المدى

[ 0,1 ]


طول M يساوي عدد الالوان الموجودة في الصورة

كل سطر يحوي الثلاثة الوان الرئيسية الاحمر والاخضر والازرق


لون البيكسل في خارطة الالوان يحدد بواسطة استخدام قيمة العدد المقابل في مصفوفة الصورة


اذا كانت مصفوفة الصورة للصنف

Unit8 or unit16

كل العناصر التي قيمتها صفر في مصفوفة الاعداد للصورة

تشير الى السطر الاول في خارطة الالوان

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


وهنالك صيغتان لعرض خارطة الالوان بواسطة ماثلاب


imshow (x, map

Or

image (x)

colormap (map)


خارطة الالوان تخزن مع الصورة المفهرسة وتحمل بشكل تلقائي مع الصورة عندما تحمل الصورة باستخدام

imread


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


(Y, newmap]= imapprox (x, map, n ]


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


(simira) #12

الصورة الرقمية المدخلة ممكن ان تكون لاي صنف من الاصناف التي ذكرت سابقا

Double

Unit16

Unit 8


ولكن الصورة الرقمية الناتجة تكون للصنف


Unit 8

اذا كانت n اقل او مساوية الى 256

اما اذا كانت n اكثر من 256 تكون الصورة الناتجة للصنف

Double


عندما عدد الاسطر في خارطة الالوان هو اقل من عدد الاعداد في مصفوفة الصورة

تعاد نفس الالوان في الخارطة مرة اخرى

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

1, 64 , 128 and 256


واذا حددنا خارطة الالوان


[ 0 0 0 ; 1 1 1 ]


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


imshow ( x , map


سوف تظهر صورة تحوي حزمة سوداء متبعة بثلاثة حزم بيض

الى ان طول الخارطة يصبح 65

بعد ذلك سوف تظهر حزمة سوداء متبعة بحزمة رصاصية وحزمتان بيض


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

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


map (k, : ) = [ r(k) g(k) b(k)


ويذلك الخارطة سوف تمليء بواسطة سطر من الالوان الاحمر والاخضر والازرق للسطر الذي رقمه k

ومن الممكن ان نغير اللون الاساسي

Background color

الى اللون الاخضر باستخدام الاسلوب التالي


whitebg ( ’ g ’

whitebg ( ’ green ’

whitebg ( [ 0 1 0



القيم للالوان الاساسية في خارطة الالوان تكون بالشكل التالي


Black k [ 0 0 0


Blue b [ 0 0 1

Yellow y [1 1 0

وهكذا بالنسبة لقيم الالوان ورموزها

وهنالك قيم كسرية

Gray [ .5 .5 .5


Dark red [ .5 0 0


Aquamarine [ .49 1 .83


برنامج ماثلاب يوفر العديد من خرائط الالوان مثلا


Colormap (map_name

Colormap(copper

imshow(x, copper


وهذه خارطة الالوان متوفرة من الغامق الى المضيء لنفس اللون

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


gray (16

سوف يتولد لون رصاصي مع 16 ظلال له