درس -- تعلم إضافة الضبابية للصور - بواسطة فلتر ال Blur - مع مثال توضيحي - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : درس -- تعلم إضافة الضبابية للصور - بواسطة فلتر ال Blur - مع مثال توضيحي (/showthread.php?tid=5015) |
درس -- تعلم إضافة الضبابية للصور - بواسطة فلتر ال Blur - مع مثال توضيحي - RaggiTech - 03-10-12 كاتب الموضوع : المبرمج الطموح vb6
<< بسم الله الرحمن الرحيم >> السلام عليكم إخواني هذا أول درس لي بالدوت نت أتمنى أن يكون مفهوما و واضحا أما بعد , كل من يعمل على ال PhotoShop يعرف فلتر ال Blur أو ما يعرف بالضبابية و من الفلاتر المهمة في مجال تصميم الصور و تعديلها اليوم بإذن الله سوف نتعلم سويا كيف يمكن عمل هذا الفلتر باستخدام Visual Basic . Net نبدأ باسم الله الرحمن الرحيم درسنا :
- إن فكرة الفلتر بسيطة جدا فهي تعتمد على أخذ المتوسط الحسابي لكل لون في كل Pixel مع ثمانٍ من مجاوراتها و إعادة قيمته لل Pixel مرة أخرى . لنستفهم أنا و إياكم عن كيفية تنفيذ الفلتر Filter : - نبدأ مشروع Windows Forms Application و نضع على الفورم الأداوت التالية باسمائها الافتراضية : 1 - ProgressBar للإستدلال على تقدم عملية الفلترة . 2 - Button للبدء بالفلترة . 3 - PictureBox تحوي على الصورة المراد تنفيذ الفلتر عليها . - بما أننا سوف نتعامل مع ال Pixels لذلك لابد من أن يدور ذهننا للدالتين GetPixel و SetPixel و هما أساس هذا الكود . - في الكود سنلاحظ جملة تكرار For لأخذ كل إحداثي في الصورة على المحورين X , Y و من ثم ننسبهما إلى إحداثيات الدالة GetPixel و إلحاقها بالوسيط R أو G أو B و أخذ نسبة كل من الألوان ( أحمر , أخضر , أزرق ) من كل Pixel و مع جمعها ( + ) مع نسبة اللون نفسه من ال Pixels المجاورة لهذه ال Pixel مقسمة على العدد الكلي ( 9 ) ( أعلم أن هذه الخطوة تدوخ لكن تابع الدرس لأن هذه الفكرة مشروحة في الكود بالتفصيل )
- من ثم ننسب القيم الثلاثة المعدلة إلى ثلاث متغيرات Red , Green , Blue و بعدها نستخدم الدالة SetPixel لإرجاع القيم الجديدة لنسب الألوان إلى تلك ال Pixel . - و من ثم تتكرر العملية لتشمل كل Pixels الصورة بلا استثناء . الآن سأعطيكم الكود مشروحاً سطرا بسطر لتثبيت الفكرة أكثر : كود : [SIZE=3]' هذا حدث الضغط على الزر ملاحظات : - سنلاحظ أن تنفيذ الكود بطيء ذلك بسبب حلقتي التكرار و العمليات الحسابية في كل منهما لكن لجعل العملية أسرع يمكننا أن نننقل السطر PictureBox1.Image = AHED إلى نهاية الكود قبل جملة End Sub و بذلك لن يشاهد المستخدم التغيير إلا بعد إنتهاء العملية لأن الصورة تبقى محفوظة في الذاكرة لحين الانتهاء من أداء الفلتر . - لقد قمت بإرفاق مثال للتوضيح أكثر . - الموضوع و المثال و الشرح من كتابتي بالكامل أتمنى أن يعجبكم . تحياتي للجميع . المبرمج الطموح vb6 |