الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

.::تكوين ورشة : مكتبة لمعالجة الصوت و الصورة::.

بدأه ColdZero في 27 فبراير 2010 · 12 رد · 2,322 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في هذا المشروع ستتم مناقشة و تطوير مكتبة للتعامل مع الصوت و الصورة بإستخدام C#.

مبدئيا، للتعامل مع الصور سوف نستخدم Pointers و ذلك لسرعة التعامل معها.

ستكون المكتبة منضمة مع استعمال XML Documentation

ستحتوي المكتبة على :

*فلاتر لمعالجة الصور و تنقيتها و إستخراج بعض البيانات منها

*بعض الكلاسات للرياضيات و ذلك لضرورتها في التعامل مع الصور

لمن يهمه الموضوع و يريد المشاركة في المشروع

او لإضافة أفكار او خوارزميات الرجاء الرد في هذا الموضوع أو الإتصال على بريدي haithem.tlili@gmail.com

...

#2

أظن أن الأمر يتطلب دراسة للimage processing و هذا لا أظنه أمر سهل أو يتوفر فى أى شخص

بالنسبة للصوت ما هو المطلوب, طبعا الحال كذلك بالنسبة للصوت أيضا

يا ترى ما الهدف من مكتبة كهذه ؟

مع أى نوعية من الصور تريد أن تتعامل ؟

هل سوف تتعامل مع معيار معين ؟

يوجد مكتبات جاهزة و مجانية كثيرة على ما أظن

هل يا ترى سوف تنوى أن تضيف جديد ؟

أرجو أن تعطى فكرة أكبر عن المشروع حتى تضح الصورة أكثر للكل

بالتوفيق

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#3

شرح المشروع ( بناء على طلب الأخ محمد ) :

الهدف : إنشاء مكتبة بإستخدام .NET لتسهيل التعامل مع الصوت و الصورة.

من خلال تجربتي المحترمة لاحظت و جود العديد من النقائص في جميع المكتبات الأخرى(هي في الواقع ليست كثيرة) و من هنا اتت الفكرة.

بالنسبة للصور فسيتم التعامل مع 90% من انواع الصور الرقمية:

*تنقية الصور : فلاتر و تقنيات أخرى.

*تحويل الصور : Changing Image Formats - Compression/Decompression

*إستخراج بعض المعلومات من الصور.

*تنقية الصوت.

*Channel Audio Mixing

و طبعا أرحب بكل أفكار جديدة من الأعضاء للتطوير

البداية إن شاء الله ستكون يوم 1مارس.

فمرحبا بكل من يريد الإنضمام.

...

#4

مشروع مغر حقاً

لكن عزيزى ColdZero

هل وضعت خطة للعمل والمهام الخاصة بالمشروع وتفصيلها ؟

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

إذا كان هناك خطة فأنا معك :)

وبالنسبة لأن الموضوع سيتطلب دراسة Image Processing

اعتقد ان هذا امر طبيعي

لأن جزء من المشروع عبارة عن Image Processing

واعتقد ان المصادر متوفرة وبوفرة على الإنترنت

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#5

شكر خاص للأخ Python

خطة المشروع :

1) معالجة الصورة :

*الفلاتر : سيتم تطبيق الفلاتر على الصورة كاملة او على جزء منها.

*إستخدام بعض التقنيات مثل BLOB COUNTING و Template Matching لإستخراج بعض المعلومات من الصور.

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

*Image Format : Compression - Decompression

2) معالجة الصوت :

*Channel Separation

*إنشاء ملفات WAV

*قراءة الDATA من MP3 Files

...

تم تعديل هذه المشاركة بواسطة ColdZero في 1 مارس 2010 في 15:06

#6

معالجة الصورة

الفلاتر

I) تمهيد :

الصورة الرقمية هي كل صورة تخزن، تنشأ او تعالج في شكل ثنائي أي 0 و 1.

1) تركيبة الصورة الرقمية في الذاكرة :

Aa473780.c85c6a40-f0a8-48a3-b465-39ceada66339%28en-us,VS.85%29.gif

pScanLine0: عنوان البيكسل 0 في الصورة الرقمية

Image: البايتات(الممثلة للألوان) المكونة للصورة

Padding: يحتوي على بيانات إضافية تمثل كيفية تخزين الصورة لكن لا تؤثر عند عرض الصورة

ImageWidth:عرض الصورة

Stride:حجم الخط (line size)

2) للوصول إلى بيانات الصورة الرقمية نستخدم في الدوت نت الكائن BitmapData

Bitmap Image = new Bitmap();
BitmapData = Image.LockBits(new Rectangle(0, 0, Image.Width, Image.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRGB);

: PixelFormat (3

هي عدد البايتات المكونة للبكسل :

Format8bppIndexed : 8 بيتات لتمثيل اللون اي أن ال تحتوي على 256 لون(صور رمادية)

Format16bppGrayScale : 16 بيت يمثلون 65 536 لون رمادي

Format16bppArgb1555 : 16 بيت، 5 للون الأحمر، 5 للأخضر، 5 للأزرق و 1 لألفا وهو عامل الشفافية في الصورة

Format24bppRgb : 24 بيت، 8 للون الأحمر، 8 للأخضر، 8 للأزرق

Format32bppArgb : 32 بيت، 8 للون الأحمر، 8 للأخضر، 8 للأزرق و 8 لألفا

Format32bppRgb : 32 بيت، 8 للون الأحمر، 8 للأخضر، 8 للأزرق و 8 غير مستعملة

Format48bppRgb : 48 بيت، 16 للون الأحمر، 16 للأخضر، 16 للأزرق

Format64bppArgb : 48 بيت، 16 للون الأحمر، 16 للأخضر، 16 للأزرق و 16 لألفا

...

1
#7

كلاس ضرورية :

لتطبيق الفلاتر على جزء من الصورة يجب إستعمال كائن يحتوي على 4 عناصر :

*X : نقطة البداية الأفقية

*Y : نقطة البداية العمودية

*Width : العرض

* Height : الطول

يمكن إستعمال الكائن Rectangle لكن بعد التفكير قررت إنشاء كائن خاص بالمشروع أسميته FilterRegion

public class FilterRegion
    {
        #region Members

        /// <summary>
        /// X coordinate.
        /// </summary>
        public int X;

        /// <summary>
        /// Y coordinate.
        /// </summary>
        public int Y;

        /// <summary>
        /// Width of the region.
        /// </summary>
        public int Width;

        /// <summary>
        /// Height of the region.
        /// </summary>
        public int Height;

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of <see cref="FilterRegion"/> class.
        /// </summary>
        public FilterRegion() { }

        /// <summary>
        /// Initializes a new instance of <see cref="FilterRegion"/> class.
        /// </summary>
        /// 
        /// <param name="x">X coordinate.</param>
        /// <param name="y">Y coordinate.</param>
        /// <param name="width">Width of the region.</param>
        /// <param name="height">Height of the region.</param>
        /// 
        public FilterRegion(int x, int y, int width, int height)
        {
            this.X      = x;
            this.Y      = y;
            this.Width  = width;
            this.Height = height;
        }
        #endregion
    }

...

تم تعديل هذه المشاركة بواسطة ColdZero في 1 مارس 2010 في 15:07

1
#8

Interfaces :

بالنسبة للواجهات سيكون هناك 4 :

*IFilter : للتعامل مع الفلاتر التي تتطلب تطبيق الفلتر على صورة أخرى، إذا سوف تكون صورة مصدرية و صورة سوف تنشأ للنتيجة بعد تطبيق الفلتر.

/// <summary>
    /// Filter interface
    /// </summary>
    public interface IFilter
    {
        /// <summary>
        /// Apply filter to the specified image
        /// </summary>
        /// 
        /// <param name="image">Image to apply filter on it</param>
        /// 
        /// <returns>Image after filter application</returns>
        /// 
        Bitmap ApplyFilter(Bitmap image);

        /// <summary>
        /// Apply filter to the specified image
        /// </summary>
        /// 
        /// <param name="imageData">Image data</param>
        /// 
        /// <returns>Image after filter application</returns>
        /// 
        Bitmap ApplyFilter(BitmapData imageData);

        /// <summary>
        /// Apply filter to the specified image
        /// </summary>
        /// 
        /// <param name="source">Image to apply filter on it</param>
        /// <param name="destination">Image after filter application</param>
        /// 
        void ApplyFilter(Bitmap source, Bitmap destination);
    }

*IFilterInPlace : للتعامل مع الفلاتر التي تعتبر سهلة في التعامل معها و هي Per Pixel Filters

/// <summary>
    /// Filter interface.
    /// </summary>
    /// 
    /// <remarks>The interface implements methods of applying filters on the input images.
    /// The interface is used with per pixel filters to avoid excess of use of the memory
    /// ressources.</remarks>
    /// 
    public interface IFilterInPlace
    {
        /// <summary>
        /// Apply filter to an image.
        /// </summary>
        /// 
        /// <param name="image">Image to apply filter on.</param>
        /// 
        /// <returns>Image after filter application.</returns>
        /// 
        /// <remarks>The method apply a filter on the image
        /// and return the same image after filter application.</remarks>
        /// 
        Bitmap ApplyFilter(Bitmap image);

        /// <summary>
        /// Apply filter to an image.
        /// </summary>
        /// 
        /// <param name="imageData">Data contained in the image.</param>
        /// 
        /// <returns>Image after filter application based on the input image data.</returns>
        /// 
        Bitmap ApplyFilter(BitmapData imageData);
    }

*IFilterOnRegion : لتطبيق الفلتر على جزء من الصورة(IFilter)

*IFilterOnRegionInPlace : لتطبيق الفلتر على جزء من الصورة(IFilterInPlace)

...

تم تعديل هذه المشاركة بواسطة ColdZero في 2 مارس 2010 في 11:16

2
#9
اقتباس
خطة المشروع :

1) معالجة الصورة :

*الفلاتر : سيتم تطبيق الفلاتر على الصورة كاملة او على جزء منها.

*إستخدام بعض التقنيات مثل BLOB COUNTING و Template Matching لإستخراج بعض المعلومات من الصور.

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

*Image Format : Compression - Decompression

2) معالجة الصوت :

*Channel Separation

*إنشاء ملفات WAV

*قراءة الDATA من MP3 Files

ColdZero

تلك ليست بخطه

تلك ما يمكن ان نطلق عليه الخطوط العريضة للمكتبة

او المطلوب من المكتبة ان تقوم به

الخطة عبارة عن

تقسيم تلك الخطوط العريضة الى وحدات (Modules)

وتقسيم كل وحدة الى عدة مهام

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

وتحديد جدول زمنى لكل المهام وفقاً لإعتماد المهام على بعضها

وما الى ذلك

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

اعتقد انك تتحدث عن بدأ مشروع عمل جماعى

وليس عن دورة تدريبية

ثم ان مرحة كتابة الكود ليست المرحلة الأولى بالتأكيد

يوجد مرحلة الخوارزميات وهى الأهم على الإطلاق

نحتاج الى بعض التنظيم إذا اردت حقاً ان تنتج مثل تلك المكتبة :)

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#10

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

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#11

ما الأخبار !

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#12

إلى أين وصل الموضوع هذه الأيام يا ترى !

لا إله إلا الله محمد رسول الله

アッラー以外に神はなし。ムハンマドはアッラーの使徒である

#13

نصيحة :

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

يمكن بعد فهم الموضوع والمكتبة اضافة شيء جديد يفيد المجتمع العربي او العالمي كالتالي :

1. عمل تعليمات باللغة العربية لهذه المكتبه. تكون نواة لكتاب باللغة العربية يغطي اساسيات معالجة الاشارة الرقمية وما يختص بالصوت والصوره.

2. اضافة خوارزميات جديدة غير موجودة في المكتبه. (يمكن الرجوع الى اخر الابحاث في الموضوع ) طبعا مع التوثيق .

3. التحسين على الخوارزميات الموجوده لغرض تسريعها او زيادة دقتها او التوفير في الذاكرة المستخدمه ، ايضا مع التوثيق.

بالتوفيق،

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…