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

لغز : تحويل صورة من تدرج رمادي إلى ملونة ( برمجيا )

بدأه Abdullah.Alshammeri في 7 ديسمبر 2008 · 15 رد · 6,868 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ,

كل عام وأنتم بخير ,

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

- أسهل شيء أن تحول صورة ملونة إلى صورة ذات تدرج رمادي ( برمجيا ) , فمسألة الهدم سهلة ,

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

خذ هذه الصورة على سبيل المثال ,

post-42837-1228678095_thumb.jpg

تم تعديل هذه المشاركة بواسطة الشمري في 7 ديسمبر 2008 في 22:30

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

عندما درست الفوتوشوب قرأت قاعدة اعتقد أنها صحيحة كانت تقول "لا يستطيع الفوتوشوب خلق شيئ غير موجود و لكن بإمكانه تحسين ما هو موجود" , القصد كان الموضوع عن عمل Blur للصور الخشنة يعني بتعبير ابسط تحليل ال Pixels الموجوده في الصوره إلى أصلها (كما نرى في الأفلام (الأمريكية) :) ) .

لا أعتقد ان هناك حل لهذه العملية لأنه عند التحويل إلى الرمادي , هناك احتمالات كبيره من الألوان تتحول إلى إحتمال واحد من الرمادي

Y=0.3RED+0.59GREEN+0.11Blue

و لكن بعد كل هذه الخطبة لدي قاعدة "لا شيئ مستحيل" :rolleyes:

تم تعديل هذه المشاركة بواسطة خلدون خالد2 في 7 ديسمبر 2008 في 22:55

#4

إذا كان كل لون عند تحوله يتحول الي درجة فريدة من الرمادي فإن المسالة لها حل.

أما ان كان الف لون مختلف تتحول الي لون واحد فقط فلا يمكن عكسها الى نفس اللون السابق.

tvquran_6.gif

#5

هل يمكن وضع الكود الذي يحول من الملون الى الرمادي :lol:

العملية غبر مستحيلة لاني رايت مرة فيديو من 1945 بالالوان اعيد تلوينه بالحاسوب (لا ادري هل يدوي ام باحاسوب)

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#6

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

#7

شكرا على التفاعل :D .

بالنسبة لمعادلة التحويل إلى التدرج المادي , فقد وضعها ابن فلسطين (خلدون) :

Pixel =0.3RED+0.59GREEN+0.11Blue

فلو كان لدينا بكسل لها الالوان التالية

R = 255 , G=100, B=100

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

new Pixel = 255*0.3 + 100*.59 + 100*0.11 = 146.5 = 147
R=G=B=146

لذلك , لايجاد اللون الاصلي من اللون الرمادي , فاننا يجب أن نحل معادلة بثلاث مجاهيل :wacko:

0.3R + 0.59G + 0.11B = 147

- اما نحل هذه المعادلة .

-أو أن نطبق ماقاله الاخوة .. يعني نغيّر المعادلة الاصلية للتحويل الى رمادي , بحيث يكون التحويل فريد لكل لون ,

اقتباس
إذا كان كل لون عند تحوله يتحول الي درجة فريدة من الرمادي فإن المسالة لها حل.

10\10

اقتباس
العملية غبر مستحيلة لاني رايت مرة فيديو من 1945 بالالوان اعيد تلوينه بالحاسوب (لا ادري هل يدوي ام باحاسوب)

وأنا رأيت واحد مثله أيضا .. وهو الذي جعلني أضيف الموضوع

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

ولكن ماهي ? :-)

تم تعديل هذه المشاركة بواسطة الشمري في 9 ديسمبر 2008 في 20:17

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#8

الطريقة الوحيدة التي اظن اني توصلت لها (بعبقريتي الفذة :lol:) ان نضبط DEFAULT PROFILE ثم نترك الحرية للمستعمل ان يضبط قيم RGB وهكذا نرتاح من وجع الراس

سالت احد الاخوة فاجابني بامكانية استعمال الذكاء الاصطناعي لكنه ما زال لم يجد اجابة كاملة

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#9

بالنسبة للتلوين الذي يحصل للأفلام (و لصورة جدي الذي لم يكن هناك تصوير أيامه) تتم بشكل سهل

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

و لكن دققو في متطلبات الأخ الشمري يريد اللون الأصلي بالضبط , بدون تدخل بشري (قريب من المستحيل).

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

فكره معقوله و لكن :)

تحياتي

#10
اقتباس
الطريقة الوحيدة التي اظن اني توصلت لها (بعبقريتي الفذة ) ان نضبط DEFAULT PROFILE ثم نترك الحرية للمستعمل ان يضبط قيم RGB وهكذا نرتاح من وجع الراس

ماذا تقصد أخي بالـ DEFAULT PROFILE ؟ لان انجليزيتي مش ولا بد :)

اقتباس
لكن دققو في متطلبات الأخ الشمري يريد اللون الأصلي بالضبط , بدون تدخل بشري (قريب من المستحيل).

هوّ أنا ما قلت لكم , أنا لا أريدها بالظبط :D .. يعني ممكن نتدخل ونعمل برنامج يأتي بنسبة كبيرة من الالوان الاصلية ويترك لنا الباقي ,

خظرت ببالي فكرة , من خلال مداخلات الاخوة ( سرقة أفكار يعني ) :

1- لو فرضنا أن الصورة الاصلية عبارة عن 1 بت ( كل بكسل عبارة عن بت ) .. أبيض أو أسود .. فأنه يمكن بسهولة استرجاع الصورة الرمادية الى أصلها ( مافيه شيء جديد ) .

2- لو فرضنا أننا لا نعرف الا 16 لون فقط ( نعمل على نظام صخر ) .. فانه يمكننا بسهولة عمل جدول يوضح كل تدرج رمادي ولونه الاصلي ( يوجد 16 تدرج رمادي في هذه الحالة ) .

3- لو قلنا أننا لا نعرف الا 255 لون ( فرضا ) .. فانه يمكن لنا وبسهولة عمل جدول .. كل تدرج رمادي ولونه الاصلي :

مثال

0 -> black ( 0 , 0 , 0 )
100 -> red ( 255, 0,0) 
255 - > white ( 255,255,255)

4- الان ,, لو استطعنا ايجاد 255 لون .. فاننا استطعنا تلوين الصورة بال255 لون .. وهو مقبول نوعا ما ..

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

يعني تدخّل بشري في النهاية :) .

تم تعديل هذه المشاركة بواسطة الشمري في 11 ديسمبر 2008 في 20:24

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11
اقتباس
2- لو فرضنا أننا لا نعرف الا 16 لون فقط ( نعمل على نظام صخر ) .. فانه يمكننا بسهولة عمل جدول يوضح كل تدرج رمادي ولونه الاصلي ( يوجد 16 تدرج رمادي في هذه الحالة ) .

سأرد على هذه النقطه و سيكون الرد شامل للنقاط الأخرى بإذن الله

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

مما يعني ان عملية التحويل و التحويل العكسي قد تنجح (ستنجح) و لكن إحدى الصورتين ستكون فاقدة للحقيقة , (ليس لها معنى).

الدليل :rolleyes:

post-133895-1229159343_thumb.jpg

هذه الصوره تعرض على اليسار الألون ال 16 (إختصرتهم ل 7) و الألوان الرمادية المقابله لكل لون

لدينا صورة الزهرة الملونة على اليمين و على يمينها الصورة بعد (ترميدها) :) لاحظ أن اللون الأحمر للزهرة و لون وعاء الزرع لهما نفس السطوع تقريبا ,

و لكن لاحظ في الصورة الرمادية ان الصورة ليست طبيعية , قارن سطوع الزهرة و سطوع وعاء الزراعة !!

إحترامي

#12

أخى خلدون ، مع أحترامى ،، يعنى ايه سطوع اللون ؟

#13
اقتباس
أخى خلدون ، مع أحترامى ،، يعنى ايه سطوع اللون ؟

brightness = (بشكل مبسط) كمية اللون الأبيض المضاف إلى اللون الأساسي

#14
اقتباس
هذه الصوره تعرض على اليسار الألون ال 16 (إختصرتهم ل 7) و الألوان الرمادية المقابله لكل لون

لدينا صورة الزهرة الملونة على اليمين و على يمينها الصورة بعد (ترميدها) لاحظ أن اللون الأحمر للزهرة و لون وعاء الزرع لهما نفس السطوع تقريبا ,

و لكن لاحظ في الصورة الرمادية ان الصورة ليست طبيعية , قارن سطوع الزهرة و سطوع وعاء الزراعة !!

إحترامي

كلامك نظريا صحيح :-) , بمعنى أن الصورة ذات التدرج الرمادي لا تعكس الواقع .. ( السطوع) ,

ولكن في الأخير نحن أمام جدول يحوي على اللون الكحلي أو البنفسجي و اللون الرمادي المقابل له ,

لذلك .. لو حولنا اللون الرمادي .. سيعود مرة أخرى بنفسجي , !

بالرغم من اختلاف السطوع ..

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

- سأقوم بالتالي :

1- انشاء جدول التدرجات الرمادية ( 255 تدرج رمادي , والالوان المقابلة لها ) .

2- سأقوم بعمل تجارب على صورة BMP تحوي 255 لون فقط ..

والتجربة هي الفاصلة :-) ,

واذا استطعت عمل تجربة مماثلة .. فيا ليت ,

شكرا على تفاعلك أخي خلدون ,

تم تعديل هذه المشاركة بواسطة الشمري في 13 ديسمبر 2008 في 23:35

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#15

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

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#16

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

عدنا والعود أحمد :-) ... فترة اختبارات وظروف قاهرة .. والحمدلله ..

لازلت أعمل على برنامج تجريبي لحل هذه المعضلة :-) ..

لكن سأوضح الفكرة التي أعمل عليها ..

المرحلة الاولى : نستطيع استرجاع 256 لون أصلي من صورة ذات تدرج رمادي .. على اعتبار أن الصورة الاصلية تحوي فقط على 256 لون .

المرحلة الثانية : توليد 256 * 5 = 1280 لون .. بحيث كل تدرج رمادي أمامه 5 ألوان تقوم بانتاجه .

المرحلة الثالثة : عمل scan كامل للصورة .. ونستنتج أكثر الالوان الرمادية تكرارا .. ونعطي المستخدم المقترحات الخمس لتلوين الصورة .

المرحلة السادسة : نعمل تقريب .. بمعنى .. لايجب وجود 256 تدرج .. ممكن نعمل 128 تدرج رمادي ..ونقوم بعملية تقريب .. حتى نوفّر الوقت والجهد على البرنامج و المستخدم .

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

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

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