مساء الخير
تمييز الاحرف الانكليزية بأستخدام خورازمية الانتشار العكسي ( الخلفي ) في لغة Matlab
الكثير من الطلاب والهواة يرغبون في تعلم كيف يمكن للحاسوب تميز الاشكال او تمييز الاحرف ويّمكن الحاسوب من الرؤية , والكثير من طلاب مشاريع التخرج في الكليات المختصة في الحاسوب والهندسة يجهلون كيفية عمل ذلك , لذلك احببت ان اضع هذا الموضوع بين ايديكم لكي تعم الفائدة للجميع .
قبل ان نبدأ في شرح الكود المصدري عليك ان تعرف اساسيات عن الطريقة التي تمكن الحاسوب من الرؤية ( Vision )
الـ ( Vision ) وهو فرع مهماً جداً من فروع علم الذكاء الاصطناعي و ان تمكين الحاسوب من الرؤية عن طريق الكاميرات او الصور تتم من بأستخدام الشبكات العصبية الاصطناعية (artificial neural network) , ويرمز لها اختصاراً ANN . ويمكن تعريفها بأنها نموذج تفكير مبني على التفكير البشري , اذ يحتوي مخ الانسان على مجموعة كثيفة من الخلايا العصبية التي تسمى العصبونات nerurons ويتكون مخ الانسان من حوالي 10 بليون عصبون و 60 ترليون تشابك عصبي بين بعضها البعض , ويتكون كل عصبون من جسم الخلية soma وعدد من الالياف تسمى الشجيرات dendrites .
من تقنيات هذه الطريقة , كاميرات المراقبة الذكية التي تقرأ ارقام السيارات وتحسب المخالفات المرورية مثل السرعة اجتياز السرعة المسموح به وعدم ارتداء حزام الامان اثناء القيادة والكاميرات الذكية التي تتعرف على الاشخاص والمطلوبين
نكتفي بهذا القدر من المقدمة النظرية ونبدأ في كتابة السورس كود :
بيئة العمل : matlab 2008 , 2013, 2016 ( الكود يعمل بصورة صحيحة مع اي اصدار ماتلاب خاص بك )
يجب ان تكون على معرفة بسيطة بأوامر لغة ماتلاب .
1- افتح لغة ماتلاب الموجودة في جهازك
2- انشئ سكربت جديد script
واكتب فيه الكود التالي :
كود PHP:
I = imread('aaa.bmp'); % فتح صورة من جهازك
imshow(I) % عرض الصورة
Igray = rgb2gray(I); % تحويل الصورة من نمط RGB الى الـ Gray الرمادي
imshow(Igray) % عرض الصورة
Ibw = im2bw(Igray,graythresh(Igray)); % تحويل الصورة من نمط RGB الى النمط الثنائي
imshow(Ibw) % عرض الصورة
Iedge = edge(uint8(Ibw)); % كشف وتحديد حدود كل حرف وتميزها عن الاحرف الاخرى
imshow(Iedge) % عرض الصورة
se = strel('square',2); % تمديد الصورة بحسب الخط المكتوب
Iedge2 = imdilate(Iedge, se); % =
imshow(Iedge2); % عرض الصورة
Ifill= imfill(Iedge2,'holes'); % % بعد ان قمت بتميز الحروف قم بملئ كل حرف
imshow(Ifill) % عرض الصورة
[Ilabel, num] = bwlabel(Ifill); %
disp(num); Iprops = regionprops(Ilabel);
Ibox = [Iprops.BoundingBox]; % العثور على كافة الكائنات على الصورة، والعثور على خصائص كل كائن
Ibox = reshape(Ibox,[4 50]); %
imshow(I)%
hold on;%
for cnt = 1:50 %
rectangle('position',Ibox(:,cnt),'edgecolor','r');
end
%
الصورة قبل تطبيق الكود عليها :
الصورة بعد التطبيق :
لتحميل السكربت والصورة المطلوب تميزها انقر هنا MATLAB.zip
بالايام المقبلة سوف اقوم بالتعديل على الكود او اقوم بتوسيع العمل بأستخدام لغة اخرى
اتمنى ان ينال الموضوع اعجابكم و اي استفسار انا موجود