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

استعلام عن ابعاد الجسم

بدأه sherif_2928 في 26 مارس 2012 · 5 رد · 3,182 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لو سمحتم يا حضرات كنت واقع في مشكلة نوعا ما كبيرة وهي اني اثناء متابعتي لطلبات عميل معين اتفاجئت انه طالب مني برنامج بيحدد ابعاد الجسم عن طريق الكاميرا او اي hardware غير الكاميرا ممكن يلبي الحاجة دي

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

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

المفروض ان البرنامج دا هاعمله بالـ php لكن حاجة زي كدة الحقيقة ماعدتش عليا قبل كدة غير ان برمجة الرسوم انا فعلا فاشل فيها كليا

مش عايز كود علشان اعمل بيه حاجة زي كدة لكن على الاقل تلميح لفكرة او طريقة ممكن اعمل بيها حاجة زي كدة

شكرا

#2

السلام عليكم ....

  1. قمت بمعالجة شئ مشابه , حيث المطلوب هو معرفة طول و ارتفاع شئ ما لونه أسود و الخلفية بيضاء ..
  2. طبعا الموضوع يتحول إلى معالجة الصور .. حيث اعتبرت أنه لو كان متوسط القيم Red , Green , Blue في البكسل الواحد أكبر من 220 فهو جزء من الشكل أما أقل من 220 فهو جزء من الخلفية ..
  3. الكود بلغة الــ C# ... حاول الاستفادة من فكرته لإيجاد المكتبة المناسبة لقرائة قيم البكسلات في الصورة أو مكتبة للــ Image Processing .
  4. الكود :
     private void button3_Click(object sender, EventArgs e)
        	{
            	pictureBox1.Load(@"D:\MyPicture.tif");
            	int nWidth = 0;
            	int nHeigh = 0;
    
    
            	int minX = pictureBox1.Image.Width;
            	int maxX = -1;
            	int minY = pictureBox1.Image.Height;
            	int maxY = -1;
            	for (int i = 0; i < pictureBox1.Image.Width; i++)
                	for (int j = 0; j < pictureBox1.Image.Height; j++)
                	{
                    	int r = ((Bitmap)pictureBox1.Image).GetPixel(i, j).R;
                    	int g = ((Bitmap)pictureBox1.Image).GetPixel(i, j).G;
                    	int b = ((Bitmap)pictureBox1.Image).GetPixel(i, j).B;
                    	int mean = (r + g + b) / 3;
                    	if (mean > 220)
                    	{
                        	if (i < minX)
                            	minX = i;
    
                        	if (i > maxX)
                            	maxX = i;
    
                        	if (j < minY)
                            	minY = j;
    
                        	if (j > maxY)
                            	maxY = j;
    
                    	}
                	}
            	if (minX == pictureBox1.Image.Width || maxX == -1 || minY == pictureBox1.Image.Height || maxY == -1)
            	{
                	nWidth = 0;
                	nHeigh = 0;
            	}
            	else
            	{
                	nWidth = maxX - minX + 1;
                	nHeigh = maxY - minY + 1;
            	}
    
            	MessageBox.Show("W = " + nWidth + " H = " + nHeigh);
        	}

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 27 مارس 2012 في 02:47

1

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

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

السلام عليكم..

في مثل هذه البرامج ,,, تستخدم كامرتين بدل واحدة و توضعان جنبا لجنب . تأخذ الصور المصورة في نفس اللحظة إلى البرنامج لمعالجتها..

نأتي إلى المعالجة:

يقارن البرنامج بكسلات الصورة الأولى مع بكسلات الصورة الثانية و يحدد مكان التشابة مع أخد نسبة التشابه بالإعتبار..

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

حينما تحدد موقع البكسلات , ستتمكن بكل سهولة من كشف الأجسام و معالجتها...

على فكـــــرة , هذا النوع غالبا ما يستعمل في المجال الحربي و العسكري..

نسبة الإزاحــــة إستنادا إلى المعامل الذي تتمكن به من كشف بعد الجسم..

تم تعديل هذه المشاركة بواسطة 3ds max2010 في 28 مارس 2012 في 13:52

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#4

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

اولا التقط صور للشخص باستخدام كاميرتين

ثانيا احدد الابعاد لهذا الشخص من خلال الصور

ثالثا اعمل شخص ثلاثى الابعاد بنفس الابعاد الموجودة فى الصورة داخل الموقع

اخيرا اجعل هذا الشخص يسطتيع ان يختار الملابس ويستطيع ايضا تجربة هذة الملابس

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

ايه الدوات اللى هستخدمها

#5

السلام عليكم

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

سأعيد:

قبل كل شيء برمجة الكاشفات ينقسم إلى قسمين:

الكاشف الثابت و الكاشف المتحرك.

الكاشف الثابت: غالبا يستخدم كاميرا واحدة على الأقل , و تستخدم في الكشف عن الأشياء المتحركة فقط , يقوم البرنامج بإلتقاط الصورة من الكاميرا و يقوم بتحديد البكسلات المتغيرة في المشهد إستناد إلى المشهد الثابت.

و تستخدم تقنية الكاشف الثابت كاميرتين لتحديد بعد الأجسام, هذه التقنية ما زالت قيد الإحتكار من قبل شركات مثل هوندا , التقنية تعتمد على صورتين , تثبت الكاميرتين بالقرب من بعضهما البعض مثل أعين الإنسان, و بعد ذلك بتم إرسال الصورتين في نفس اللحظة إلى البرنامج لمعالجتها, يقوم البرنامج بكشف الألوان ذات اللون الواحد وهي مجتمعة معا و يخزنها في مجموعة ( و لنسمها مجموعة " color_1" ) فإن كان بينها بكسل له لون مغاير للون المجموعة فصل و أصبح مجموعة وحده (color_2 ) و دواليك, هذا في الصورة الأولى . و تخزين كل المجموعات مع موقعها في قائمة list و أيظا تخزن في القائمة أسماء المجموعات المحيطة بها يعنى مؤشر إلى المجموعات المحيطة بها.

و يقوم البرنام بنفس الشيء مع الصورة الثانية.

و الآن جاء دور معالجة المجموعات. نجعل البرنامج يقوم بربط المجموعات التي في الصورة الأولى بنفس المجموعات في الصورة الثانية ( و هذا إستناد إلى موقع المجموعة و المجموعات المحيطة بها بحيث القطر يكون 10 مجموعات أو أكثر و كلما زاد القطر كلما زادت دقة الكشف ) .

و الآن أصبح البرنامج يعرف من هي المجموعة في الصورة الأولى و قرينتها في الصورة الثانية .

والآن يتم الكشف عن بعد المجموعة عن طريق الإزاحة و هذا هو لب الموضوع النهائي و يحتاج إلى دراسة علمية , و لكن إن إفترضنا أن البعد = الإزاحة / 1000.

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

و في الأخير , أصبح بإمكانك معرفة بعد كل مجموعة و تمثيلها عالم ثلاثي أبعاد مع بعض الخواص مثل موقع ثقل بكسلات كل مجموعة.

عموما كلما كان عدد بكسلات المجموعة أصغر كلما كان الكشف أدق , و هناك بعض الأشياء بسيطة يمكن حلها وليست صعب مثل ظهور مجموعات مختلفة لا تتطابق مع قرينتها في الصورة الأخرى.

الكاشف المتحرك : تقنية الروبوت الآلي , تقنية جديد تعتمد على قاعدة بيانات بها كثير من الإشكالات و هي فرع علمي جديد.

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#6
اقتباس
اخيرا اجعل هذا الشخص يسطتيع ان يختار الملابس ويستطيع ايضا تجربة هذة الملابس

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

ايه الدوات اللى هستخدمها

بإمكانك إستخدام البالونات:

تثبت بالونات ملونة على كل طرف من أطراف الملابس ثم يرتديها الشخص , و يجب أن يكون المشهد الذي يظهر في الكامبرا لا يحولي بكسلات البالونات في أي جسم آخر.

778059792.jpg

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

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

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg

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

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

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

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

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