- 1. معالجة الصور باستخدام نافذة محرر MATLAB
- 2. معالجة الصور باستخدام MATLAB GUI
- إنشاء واجهة مستخدم رسومية MATLAB لمعالجة الصور
- كود MATLAB GUI لمعالجة الصور
- قم بتشغيل كود MATLAB GUI لمعالجة الصور
تخيل توجيه الكاميرا إلى شيء ما وتخبرك الكاميرا باسم هذا الكائن ، نعم ، تقوم Google Lens في الهواتف الذكية التي تعمل بنظام Android بنفس الشيء باستخدام معالجة الصور. يمنح هذا الكمبيوتر رؤية لاكتشاف الأشياء والتعرف عليها واتخاذ الإجراءات وفقًا لذلك. تحتوي معالجة الصور على الكثير من التطبيقات مثل اكتشاف الوجه والتعرف عليه وانطباع الإبهام والواقع المعزز و OCR ومسح الباركود وغيرها الكثير. هناك الكثير من البرامج المتاحة لمعالجة الصور ، من بينها MATLAB هو الأنسب للبدء بها.
يمكن لـ MATLAB إجراء العديد من عمليات معالجة الصور المتقدمة ، ولكن من أجل البدء في معالجة الصور في MATLAB ، سنشرح هنا بعض العمليات الأساسية مثل RGB إلى الرمادي ، وتدوير الصورة ، والتحويل الثنائي وما إلى ذلك. يمكنك أيضًا إنشاء برامج آلية لإزالة الضوضاء والصورة الوضوح والتصفية باستخدام الوظائف الموضحة في هذا البرنامج التعليمي.
قبل المضي قدمًا ، إذا كنت جديدًا على MATLAB ، يمكنك التحقق من دروس MATLAB السابقة الخاصة بنا للحصول على فهم أفضل:
- الشروع في العمل مع MATLAB: مقدمة سريعة
- واجهة اردوينو مع MATLAB - وميض LED
- التحكم في محرك التيار المستمر باستخدام MATLAB و Arduino
- التحكم في السائر باستخدام MATLAB و Arduino
- كيفية رسم رسم بياني لدرجة الحرارة في الوقت الفعلي باستخدام MATLAB
في MATLAB ، كما هو الحال دائمًا ، هناك طريقتان لإجراء أي خوارزمية لمعالجة الصور ، إحداهما عن طريق إدخال الأمر مباشرةً في نافذة المحرر / الأوامر والأخرى عن طريق إنشاء واجهة المستخدم الرسومية لنفسه. هنا ، سوف نعرض لك كلا الطريقتين لإجراء العمليات الأساسية لمعالجة الصور في MATLAB.
1. معالجة الصور باستخدام نافذة محرر MATLAB
الآن ، سنقوم بكتابة الكود لإجراء بعض العمليات الأساسية لمعالجة الصور في نافذة المحرر. للتعرف على جميع المصطلحات الأساسية المستخدمة في MATLAB ، اتبع الرابط. انسخ والصق الكود أدناه في نافذة المحرر ،
أ = imread ('F: \ مخطط الدائرة \ معالجة الصور باستخدام matlab \ camerman.jpg') ؛ حبكة فرعية (2،3،1) ؛ imshow (أ) ؛ ب = rgb2gray (أ) ؛ حبكة فرعية (2،3،2) ؛ imshow (ب) ؛ ج = im2bw (أ) ؛ حبكة فرعية (2،3،3) ؛ imshow (ج) ؛ د = imadjust (ب) ؛ حبكة فرعية (2،3،4) ؛ imshow (د) ؛ ه = أ ؛ ه = rgb2gray (هـ) ؛ حبكة فرعية (2،3،5) ؛ imhist (هـ) ؛ imfinfo ('F: \ Circular Digest \ Image Processing باستخدام matlab \ beard-man.jpg') = size (a) ٪ colormap ('spring')
في المتغير 'a' ، نقوم باستيراد الصورة باستخدام الأمر imread ('filename') ثم عمل مخطط من '2' row و '3' باستخدام مخطط فرعي (صف ، عمود ، موضع) وعرض الصورة المستوردة في الموضع ' 1 '. لإظهار الصورة نستخدم الأمر imshow ('filename') .
فيما يلي بعض الأوامر لإجراء بعض المعالجة الأساسية على الصورة التي تم تحميلها:
- في المتغير 'b' ، نقوم بتحويل صورة RGB إلى صورة كثافة تدرج الرمادي باستخدام الأمر rgb2gray ('filename') وعرضها في الرسم على الموضع '2'.
- في المتغير 'c' ، نقوم بتحويل الصورة إلى صورة ثنائية أو يمكنك أن تقول بصيغة '0' (أسود) و '1' (أبيض) باستخدام الأمر im2bw ('filename') وعرضها في الرسم على المركز "3".
- في المتغير 'd' ، نقوم بتعديل أو تعيين قيم كثافة الصورة ذات التدرج الرمادي باستخدام الأمر imadjust ('filename') وعرضه في الرسم على الموضع '4'.
- في المتغير 'e' ، نرسم الرسم البياني للصورة ذات التدرج الرمادي باستخدام الأمر imhist ('filename') وعرضه في الرسم على الموضع '5'. لتخطيط الرسم البياني ، عليك دائمًا تحويل الصورة إلى تدرج رمادي ، وبعد ذلك ستتمكن من رؤية الرسم البياني لملف الرسم هذا.
- يستخدم الأمر Imfinfo ("اسم الملف مع الموقع") لعرض معلومات حول الملف الرسومي.
- يتم استخدام الأمر = size ('filename') لعرض الحجم ومستويات الألوان لملف رسومي معين.
- يُستخدم Colormap ("الربيع") لتغيير نوع خريطة الألوان لملف الرسم. هنا ، في الكود الخاص بي ، قمت بتعيين هذا الأمر كتعليق ولكن يمكنك استخدامه عن طريق إزالة علامة النسبة المئوية. هناك العديد من أنواع الألوان في MATLAB مثل Jet و HSV و Hot و Cool والصيف والخريف والشتاء والرمادي والعظام والنحاس والوردي والخطوط والربيع.
مثل هذه ، هناك عدد من الأوامر في MATLAB والتي يمكن استخدامها لأداء مهام مختلفة ، يمكنك التحقق من وظائف معالجة الصور في MATLAB باتباع الرابط.
2. معالجة الصور باستخدام MATLAB GUI
إنشاء واجهة مستخدم رسومية MATLAB لمعالجة الصور
لإنشاء واجهة مستخدم رسومية (GUI) لمعالجة الصور ، قم بتشغيل واجهة المستخدم الرسومية عن طريق كتابة الأمر أدناه في نافذة الأوامر .
يرشد
ستفتح نافذة منبثقة ، ثم حدد واجهة مستخدم رسومية جديدة فارغة كما هو موضح في الصورة أدناه ،
الآن علينا أن نختار عدد الأزرار الانضغاطية (كل زر ضغط سيؤدي مهمة مختلفة) ومحور واحد لعرض الصورة.
لتغيير حجم زر الضغط أو المحاور أو تغيير شكله ، ما عليك سوى النقر عليه وستتمكن من سحب زوايا الزر. من خلال النقر المزدوج على أي من هذه ، ستتمكن من تغيير اللون والسلسلة والعلامة والخيارات الأخرى لهذا الزر المعين. بعد التخصيص سيبدو هكذا
يمكنك تخصيص الأزرار حسب اختيارك. الآن عند حفظ هذا ، يتم إنشاء رمز في نافذة محرر MATLAB. قم بتحرير الكود الذي تم إنشاؤه لتعيين المهمة لأزرار دفع مختلفة. أدناه قمنا بتحرير كود MATLAB.
كود MATLAB GUI لمعالجة الصور
يتم تقديم كود MATLAB الكامل لمعالجة الصور باستخدام MATLAB GUI ، في نهاية هذا المشروع. علاوة على ذلك ، نقوم بتضمين ملف GUI (.fig) وملف الكود (.m) هنا للتنزيل ، والذي يمكنك من خلاله تخصيص الأزرار أو حجم المحاور وفقًا لمتطلباتك. لقد قمنا بتحرير الكود الذي تم إنشاؤه كما هو موضح أدناه.
في وظيفة "uploadimage" ، انسخ والصق الكود أدناه لإدراج الملف من جهاز الكمبيوتر. هنا ، يتم استخدام الأمر uigetfile ("نوع امتداد الصورة") لاستيراد الصورة في MATLAB GUI. اقرأ هذا الملف باستخدام الأمر imread () ثم اعرضه باستخدام الأمر imshow () على المحاور 1 باستخدام المحاور ( handles.axes1 ) . الآن ، باستخدام الأمر setappdata () ، قم بتخزين المتغير في واجهة المستخدم الرسومية بحيث يمكن الوصول إلى المتغير من جزء واحد من واجهة المستخدم الرسومية إلى الجزء الآخر من واجهة المستخدم الرسومية.
a = uigetfile ('. jpg') a = imread (a) ؛ المحاور (handles.axes1) ؛ imshow (أ) ؛ setappdata (0، "a"، a)
الآن ، في كل وظيفة سترى الأمر getappdata () الذي يستخدم لاسترداد البيانات المخزنة باستخدام setappdata () في واجهة المستخدم الرسومية.
سنشرح هنا ثماني وظائف شائعة الاستخدام في معالجة الصور
S. لا. |
أمر |
اسم الزر |
المهمة المراد أداؤها |
1. |
uigetfile () |
تحميل الصور |
انقر لاستيراد الصورة من القرص |
2. |
rgb2gray () |
RGB إلى الرمادي |
انقر لتحويل صورة RGB إلى تدرج الرمادي |
3. |
im2bw () |
تحويل إلى صورة ثنائية |
انقر لتحويل الصورة إلى ثنائي |
4. |
- |
إعادة تعيين |
انقر لإعادة الصورة على أنها أصلية |
5. |
imhist () |
الرسم البياني |
انقر لرؤية الرسم البياني للصورة |
6. |
imcomplement () |
الصورة التكميلية |
انقر للتحقق من الصورة التكميلية |
7. |
حافة (اسم الملف ، طريقة) |
كشف الحد |
انقر لاكتشاف الحواف في الصورة |
8. |
صورة (اسم الملف ، الزاوية) |
استدارة في اتجاه عقارب الساعة |
انقر لتدوير الصورة في اتجاه عقارب الساعة |
9. |
صورة (اسم الملف ، الزاوية) |
تدوير عكس اتجاه عقارب الساعة |
انقر لتدوير الصورة في عكس اتجاه عقارب الساعة |
1. تحويل صورة RGB إلى تدرج الرمادي
في وظيفة "rgb2gray" ، انسخ والصق الكود أدناه لتحويل صورة RGB إلى تدرج رمادي باستخدام الأمر rgb2gray () .
a = getappdata (0، 'a') ؛ agray = rgb2gray (أ) ؛ المحاور (handles.axes1) ؛ imshow (agray) ؛
2. تحويل إلى صورة ثنائية
في وظيفة 'im2bw' ، انسخ والصق الكود أدناه لتحويل الصورة إلى صورة ثنائية أو يمكنك أن تقول بصيغة '0' (أسود) و '1' (أبيض) باستخدام الأمر im2bw () .
a = getappdata (0، 'a') ؛ abw = im2bw (أ) ؛ المحاور (handles.axes1) ؛ imshow (abw) ؛
3. إعادة التعيين إلى الصورة الأصلية
في وظيفة "إعادة الضبط" ، انسخ والصق الكود أدناه لإعادة الصورة المحررة إلى الصورة الأصلية.
a = getappdata (0، 'a') ؛ المحاور (handles.axes1) ؛ imshow (أ) ؛
4. رسم بياني لصورة الرسم البياني
في وظيفة "المدرج التكراري" ، انسخ والصق الكود أدناه لرسم الرسم البياني للصورة ذات التدرج الرمادي باستخدام imhist للأوامر ("اسم الملف") وعرضه على المحاور 1 . لتخطيط الرسم البياني ، عليك دائمًا تحويل الصورة إلى تدرج رمادي ، وبعد ذلك ستتمكن من رؤية الرسم البياني لملف الرسم هذا.
a = getappdata (0، 'a') ؛ ahist = أ ؛ ahist = rgb2gray (ahist) ؛ المحاور (handles.axes1) ؛ imhist (ahist) ؛
5. تحويل إلى صورة مكملة
في وظيفة "الصور التكميلية" ، انسخ والصق الكود أدناه لرؤية تكملة ملف الرسم المدرج باستخدام الأمر imcomplement () .
a = getappdata (0، 'a') ؛ أكومب = أ ؛ acomp = imcomplement (acomp) ؛ المحاور (handles.axes1) ؛ imshow (أكومب) ؛
6. كشف الحواف باستخدام طريقة الحكمة
في "حافة" وظيفة، ونسخ ولصق رمز أدناه لكشف والعثور على حواف في صورة رمادية باستخدام قيادة حافة ('اسم الملف'، 'طريقة') . بدلاً من الطريقة ، يمكنك الاختيار من بين هؤلاء الثلاثة ، Canny و Prewitt و montage . نحن نستخدم طريقة Canny لاكتشاف الحواف. كما لا يمكنك اكتشاف الحافة مباشرة من الصورة الأصلية ، عليك أولاً تحويلها إلى تدرج رمادي ثم يمكنك اكتشاف الحواف.
a = getappdata (0، 'a') ؛ حافة = أ ؛ aedge = rgb2gray (aedge) ؛ aedge = محاور حافة (aedge ، ' Canny ') ' (handles.axes1) ؛ imshow (أيدج) ؛
7. تدوير الصورة في اتجاه عقارب الساعة
في وظيفة "اتجاه عقارب الساعة" ، انسخ والصق الكود أدناه لتدوير الصورة في اتجاه عقارب الساعة باستخدام الأمر imrotate (اسم الملف ، "الزاوية")
a = getappdata (0، 'a') ؛ aclock = أ ؛ aclock = imrotate (قفل ، 270) ؛ المحاور (handles.axes1) ؛ imshow (aclock) ؛
8. تدوير الصورة عكس اتجاه عقارب الساعة
في وظيفة "عكس اتجاه عقارب الساعة" ، انسخ والصق الكود أدناه لتدوير الصورة في عكس اتجاه عقارب الساعة باستخدام الأمر imrotate (اسم الملف ، "الزاوية")
a = getappdata (0، 'a') ؛ aclock = أ ؛ aclock = imrotate (قفل ، 90) ؛ المحاور (handles.axes1) ؛ imshow (aclock) ؛
قم بتشغيل كود MATLAB GUI لمعالجة الصور
الآن ، انقر فوق الزر "RUN" لتشغيل الكود المحرر في ملف m
قد يستغرق MATLAB بضع ثوانٍ للرد ، لا تنقر على أي أزرار واجهة المستخدم الرسومية حتى تظهر MATLAB رسالة مشغول في الزاوية اليسرى السفلية كما هو موضح أدناه ،
عندما يصبح كل شيء جاهزًا ، قم باستيراد الصورة من جهاز الكمبيوتر بالنقر فوق الزر "تحميل الصورة". الآن ، ستتمكن من تحويل الصورة أو تدويرها بالنقر فوق أي زر وفقًا لذلك. سيوضح لك الجدول أدناه المهمة التي نقوم بها عند النقر فوق أي زر معين:
ستظهر النتيجة عند النقر فوق كل زر أدناه ،
يتم توضيح العمل الكامل لكل زر في الفيديو أدناه.
يمكنك حتى القيام بمستوى متقدم من معالجة الصور باستخدام Image Processing Toolbox الذي يمكنك شراؤه من موقع MATHWORKS الرسمي ، وبعض عمليات المستوى المتقدم مذكورة أدناه:
- العمليات الهندسية
- عمليات الكتلة
- الترشيح الخطي وتصميم المرشح
- يتحول
- تحليل الصور وتحسينها
- عمليات الصورة الثنائية