السلام عليكم نكمل إن شاء الله الجزء اللي باقي
معنا فيه اللي هو عمليات ال processing على الصورة
شفنا المرة اللي فاتت ال shrinkingو إيش كلمة
enlarging؟ وشفنا اللي هو ال reflection طبعا اليوم
إن شاء الله إيش بدنا نشوف؟ في عندنا باقي شوية عمليات
اللي هي ال addition و ال division عمليات حسابية
يعني أنا بعمل زائد أو ناقص أو بدي أعمل قسمة اللي
هي addition, subtraction, division طبعا بعدين بدنا
نشوف ال and و ال or logic فأنا بشتغل arithmetic و
logical operation على الصورة واضح شو بسوي؟ بشتغل
عمليات رياضية وعمليات منطقية ف لسه احنا بنكمل في
العمليات الرياضية اللي هي زائد وناقص وضرب وقسمة
والحاجات هاي ونشوف إيش بيطلع ناتج الصورة، ماشي؟
فعندنا على سبيل المثال في العمليات اللي تعتبر ال
arithmetic اللي هي ال addition و ال averaging (معدل)
يعني قسمة صح؟ طيب هال 8 بيحكي لي if we add two 8
bit grayscale images نسمع؟ إيش في أنا بسوي يا
بنات؟ بدي أجيب صورتين أجمعهم مع بعض صورتين أجمعهم
مع بعض الصورتين نفترض إن هم 8 bit grayscale طبعا
احنا زي ما اتفقنا المرة اللي فاتت مش هنجمع colors
أو صور RGB يعني عشان أسَهّل فيه العمليات الحسابية
طبعا فنفترض أنا عندي صورة وها صورة هذه مثلا figure
one وهذه figure two نسمع .. معلش Figure 1 و Figure
2 في إن هنا مثلا دائرة وفي عندي هنا مربع في هذه
الصورة ضروري التلتين يكونوا يتبعوا بعض XY أو كله مرة
يكون متساوي مافي مشكلة يعني ممكن تكون هذه أكبر من
هذه هذه أكبر من هذه يتبعوا بعض بعدد ال pixel بردو
النظر يعني okay هلقيت إيش بدنا نسوي بدنا نعمل
addition
بدي أجمع الصورتين مع بعض إيش هي بتجمع الصورتين مع
بعض؟ يعني هذه لو احنا قسمناها ورجعنا لأصلها
هتلاقيها عبارة عن بيكسل وكل بيكسل عبارة عن ثمانية
بت عشان هيك بيحكي لي grey scale نفترض في عندي هنا
اللي هو صفر صفر واحد مثلا واحد مثلا هنا في عندي
نفترض الكورة بأبيض مثلا 255 هنا وهنا 255 بهذا
الشكل تمام؟ وهنا مثلا في عندنا درجات ألوان مختلفة
وهكذا وهذه فرضا كمان المربع عندنا 255 هيك نقسمها
ماشي وهذا كان كله برضه المربع أبيض بغض النظر بس
بدي أحط لكم قيم يعني أكبر قيمتين مع بعض إيش بده
يصير في ال addition؟ بده أجمع pixel بixel هنا إيش
في عندنا؟ صفر نفترض إن عندنا عشرة فالمفروض إن أنا
عند صورة يكون مقاس أكبر واحدة صح؟ حسب مقاس أكبر
واحدة هأجمع صفر مع الصفر .. مع .. عفوا يعني ال
pixel الأولى من هنا مع ال pixel الأولى من هنا قداش
رح تطلع؟ صفر وعشرة؟ عشرة بيعطيني عشرة فالمفروض
يحط لي عشرة عرفت عشرة قداش؟ بجمع صورتين مع بعض طيب
لو أنا .. نسمع بالله عشان نشوف عشان إيش المشكلة لو
أنا هنا أجهزة جامعة 255 مع 255، إيشو بيعطيني؟ 255 مع
255، أنا بدي أجمعهم جمع عادي، قداش بيعطيني؟ 510،
صح؟ أجمع 255 مع 255، المفروض يعطيني 510، في عندي
pixel قيمتها 510؟ لأ تمام؟ فالمشكلة اللي واجهتهم
أثناء تطبيق عملية الجمع pixel-min هنا مع pixel
-min هنا إنه ممكن تكون أكبر قيمة عندك اللي هي 255
مع 255 يطلع رينج تبع الألوان الجديد من وين؟ من 0
لحد 510 تمام؟ فقالوا إيش الحل؟ كيف نحل الموضوع؟ في
حد ممكن يعطيني اقتراح كيف ممكن أحل إن أنا ما يطلعش
أكثر من 255 أقل القيم إيش؟ مثلا على قداش يعني؟
خليها 100 يعني كأنها إيش بدأت تسوي؟ بدأت تقسم على 2
صح؟ بدأت تقسم على 2 نفترض عشان إيش مثلا؟ بدأت تقسم
هذه على 2 وهذه على 2؟ عشانها تخرج للحجم النص فلما
نيجي نجمعهم مع بعض هيصلي ل 255 طبعا مفترض يعني
قداش هذول نصها 255؟ أو تجمعهم وبعدين تقسمهم أو
تجمعيهم تاخدي ال averaging تبعهم فإنتوا إيش عاملنا
averaging؟ طبعا فهيعطيك ال averaging هو 255
maximum يعني طب هذا حل حل ثاني إيش نعمله؟
ناخد الدرجة الأقرب، بس كيف بدنا ناخدها؟ إيش أعمل
عشان أخد الدرجة الأقرب؟ هذا بيشتغل بيكسل بيكسل، مش
ها يشتغل على kernel عند الحد الأقصر ناخد أقرب درجة لو
إيش الرقم؟ طب عند ال 510 إيش أقرب رقم لإله؟ كيف دي
كتير أفقر أقرب رقم؟ طيب، في حل آخر، يعني هذه مش
عبارة كده تقلش اقتراحات، أو إن احنا نحسب أحد
الاقتراحات زي ما قالت زميلة كوهان، إن أنا أقسم
على المتوسط تبع مين الـ 2 Pixel بتروح ثاني ألو عشان
نجيب عدد ألوان أكثر يعني عند الـ gray level من 0 ل
255 طب لو بدي أجيب ألوان زيادة إيش المفروض أسوي؟
أزود عدد الـ bits يعني مفروض مش 8 bit أشتغل لكل
pixel مفترض 16 bit بدي أشتغل لكل pixel وطلعت
الفكرة عشان إيش السرعة دي؟ ال range تبع الألوان
أعلى وأكثر بس هيك هيزيد حجم الصورة يعني أنا المفروض
أضعه gray scale طالما يعني كأني بدخل على نمط ألوان
ثاني فهمتوا عليا؟ بيصير عندي حجم الصورة أكبر من
اللي هو ثمانية بت بيصير أكبر من إيش ثمانية بت لكل
بيكسل فإيش راحوا يعملوا نعم؟ يعني شغلانة ممكن
تنعمل فراحوا قالوا إيش بدنا نسوي ناخد نسبة طيب؟
يعني حاولوا يجربوا الفكرة الأولى والفكرة
الثانية لقوا إن إيش صح ممكن تعطيني نتيجة لكن
وصلوا ل .. زي ما بيسموها قرار إن أفضل حل إني أجمع
صورتين مع بعض يعني تخيل لما بتجيبي إنت صورة على ال
photoshop وبتحطيها على صورة ثانية إيش بيصير في
الصورتين؟ بندمجوا مع بعض طيب لما بندمجوا مع بعض
بتشوفوا شوية من الأولى وشوية من الثانية صح؟ يبقى
إيش سوينا؟ أخدنا نسبة شفافية من الأولى على نسبة
شفافية من مين من الثانية وجمعناها في بعض واضح؟
فكانت أقرب طريقة وأقرب حل من غير ما نزيد عدد
البتات وينعمل عملية قسمة إن احنا عشان نسوي ناخد
factor معيار بالنسبة للصورة الأولى اللي اقترحته
بالأول بس ما عرفتش كيف تاخد النسبة هذه ماشي اللي
إيش سميناها ال obesity فاكرين ال obesity؟ تمام
فقالوا بدل ما أنا اروح عشان نحل المشكلة هاي إننا نحدد
قداش النسبة اللي بناخدها من الصورة الأولى مع نسبة
من الصورة الثانية عشانها تقلل من الرقم اللي بيطلع
طيب نفترض نشوف بيطلع مظبوط الحاجة ولا بيطلعش مظبوط
نفترض عندي 255 بدي أنا الصورة هاي أخد منها 30% إيش
يعني 30% يعني 3 من 10 ماشي؟ ثلاثة من عشرة، يبقى
الصورة الثانية قداش راح تكون؟ سبعة من عشرة، اللي هي
المكملة، زي فكرة ال obesity و ال transparency،
اللي هي ال foreground مع ال background، يعني واحدة
بده تكون كأنها فوق الثانية، ماشي؟ وها دي بدها تكون
قداش نسبتها 7 من 10 لو أنا أخدت الصورة اللي هي 255
بيكسل عفوا أكبر بيكسل وضربولي طبعا أثر المعادلة
اللي بدهم يعملوها بدهم يضربوا factor في الصورة
الأولى على Nها مين ال foreground وهذه الصورة
الثانية بتكون على قداش ال background فعشان ما يجوا
فوق بعض ويغطي واحدة فوق الثانية بدنا نظهر جزء من
الصورة اللي تحت مع جزء من الصورة اللي فوق فرحت
واحد ناقص Alpha معاك كإنها ال background كإنها إيش
ال background فاكرينها ناخد ثلاثة من عشرة هنا يبقى
واحد ناقص ثلاثة من عشرة قداش بظل لنا سبعة من عشرة
طيب ال pixel اللي أنا أخدتها من الصورة الأولى بدي
أخد أكبر قيمة عشان أشوف إيش بصير هي مائتين وخمسة
وخمسين نضربها في ثلاثة من عشرة معاك؟ زائد النسبة
الثانية هتصير قداش سبعة من عشرة في قداش مثلا ال
pixel عامة اللي بنضيفها معها اللي هي مثلا مائتين
برضه خمسة وخمسين اضربي هذول قداش بيعطيني بيبقى
معاها قالة اضربي ثلاثة من عشرة في مائتين خمسة و
خمسين تلاتة من عشرة في مائتين خمسة وخمسين سبعمية
وخمسة وستين هيك
ماشي طيب هان اضرب 7 من 10 في 155 178
.5 أجمل اتنين مع بعض بيعطيك 255
يعني اللي هو الـ maximum color اللي أنا ممكن أحصل
عليه من الـ 8 bit لكل pixel واضح؟ عرفتوا إيش صوت
هذه؟ فأنا جمعت pixel منها طبعًا هذه النسبة بدنا
نمسكها مع pixel pixel pixel pixel فممكن إيش
يعطيني؟ نفترض أن أنا عندي هنا أسود وهنا عشرة يعني
أعلى شوية من الأسود يعني ذامقة بس صح؟ طب اجمعي من
الصورة الأولى Zero
مضروبة في التلاتة من عشرة بطلع zero، زاد سبعة من
عشرة مضروبة في قداش، هذه في عشرة مضروبة في عشرة،
قداش راح تطلع؟ سبعة قداش الجواب؟ بطلع سبعة يعني
color مش أسود الأسود صفر واحد اتنين تلاتة زي ..
قريب من الأسود وغامق بس ما بين الـ .. الـ .. الـ ..
ده اللي هو الـ رصاص الغامق وما بين الأسود يعني
فاهمتوا كيف؟ فراح يصير أشياطيكي درجة أفتح شوية من
هنا ومن هنا واضح فكأني أخدت الـ average فكأني أخدت
الـ average بس بطريقة النسبة والتناسب لشفافية
ومقدار الشفافية ومقدار العتامة من الصورة الأولى
ومن الصورة مين التانية واضحة الفكرة؟ تبعت الجامع؟
ليش ما جمعناش على طول السبب إنه هيطلع معايا مجموع
الـ pixel كـ maximum أعلى من قيمة الـ color اللي احنا
مفروض عندي أستخدمها في الـ graph كله 255 فوصلوا لحل
أنه أنا أخد نسبة من الصورة الأولى ومكملتها من وين
من الصورة التانية عشان يصير في عندي جمع للصورتين
مع بعض ويصير هما الاثنتين ظاهرين يصير هما الاثنتين
ظاهرين فطبعًا هاي الكلام اللي احنا حكينا أنه أنا لو
بدي أجمع صورتين تمانية بيتي gray scale image then
pixel in the resulting image can have value in
inch range من صفر لخمسمية وعشرة واضحة هاي جملة؟
طيب الاقتراح اللي فكروا فيه عشان نجيب الخمسمية و
عشرة أنه أنا أزود عدد البيتات لأنه ما عنديش خمسمية
وعشرة بدا كل pixel بدل ما كل pixel تكون 8 bit نخلي
كل pixel قداش 16 bit عشان نزيد الـ range تبع
الألوان خلاص for the output image or divide أو
الحل الآخر اللي اقترحته بالبداية أن أنا أقسم على
مين؟ على اتنين أقسم على اتنين كأنه بعمل إيش الـ
average كأني بعمل average لـ الـ output if we do the
latter إذا أنا عملت الآخر حل هو أجيت أقسم على
اتنين طبعًا هيصير في عند إيش فاصلة
عشرية وهتضطر إيش تعملي؟ تعملي يا truncate يعني
تعمل تقريب، rounded، صح؟ طيب، if we do the latter
then we are computing an average of the mean two
image إذا أنا حسبت هذه، معناه كإني بجيب المحصلة أو
الوسط الحسابي تبع مين الصورتين وبحط إيه القيمة،
فلقوا إنه أفضل حل أجيب أن الـ gray هذي قطعة الـ
output نتيجة الجمع كـ result بتساوي alpha في الـ ..
في الـ image الأولى كأنها foreground زائد واحد ناقص alpha
في الـ image التانية في الـ pixel موجودة في الـ
image التانية كأنها إيش back ground فبيصير عندي
بهذا الشكل بيطلع الجواب نفترض أنه أنا هاي صورتين
واحدة كلها سوداء تمام؟ وهذه gray scale اتخيل بدي
أجمع هاي مع هاي، إيش بيطلع؟ جامع عادي، الأسود قداش
قيمته؟ Zero طب لو بدي أجمع هادي مع هادي، إيش راح
يطلع معه؟ هاي، هادي مش هتبين، فهادي هتغطي على هاي
الصورة، لأنهم نفس القيم راح يطلع، صح ولا لأ؟
فراحوا قالوا عشان نبرز جزء من الصورة الأولى مع جزء
من الصورة التانية، إنه على سبيل المثال بس وراني
كرمز إنه هذه برسميلها بخط متصل برمزيلها بخط متصل
وهذه برمزيلها بخط متقطع والنسبة هنا لسه ما دمجناهم
عادي zero في المية وها دي h zero في المية فعشان
نجمعهم مع بعض راحوا قالوا بدنا نأخذ زي ما بتيجي
بتمسك الفرشاية بتصير تعمل تدرج ألوان من تحت لفوق أو
من فوق لتحت بيتغير عندك نسبة التدرج واضح؟ فقال
بنعملها إيش؟ بنسبة معينة نفترض أنه من الصورة
الأولى هذه الخط هذا المتصل للصورة الأولى أنه أنا
هايكون من تحت لفوق نسبة الـ colors اللي موجودة هان
أو الـ alpha تبع الجزء اللي تحتها بتكون zero في
المية وعند الوسط ده تكون خمسين في المية ولما
أوصل فوق ده تكون مية في المية تمام؟ لما أجى على
الصورة التانية بدي أجمعه أنا بدي أكون عملية عكسية
عشان أنا من فوق بدي أكون هادي قداش zero في المية
أنا مين بدي أكون ظاهر الـ هي ها هذه اللي هتكون ظاهرة
تمام؟ وعندك هذه هتكون 0% وبعدين بدي أنزل مثلًا هيك
يعني 50% وهذه هتكون مكملتها يعني هم دول مكملات
بعض فلما أنا عشت غنهانة صفر على هاي مين راح يظهر
معايا؟ هيكون 100% لـ الـ color الأسود صح؟ مظبوط؟
هيكون واحد في الصفر اللي هو zero هيبين الأسود لما
تاخد 50% من هان مع 50% من هانهيصير ما بين الرمادي و
ما بين الأسود أبيض شوية يعني هتلاقي أن الصورة لو
طلعت فيها شوفي مش نفس الألوان هذه أفتح شوية بدرجة
معينة أو أغمق ممكن تطلع شوية ولما توصلي فوق صفر
في المية لمين؟ للأسود يعني مش هيبين المفروض
أيوة هذه صفر في المية ألفا لما تكون صفر في المية
هتكون واحد ناقص صفر هتكون واحد عند الأسود يعني
احنا في شغل بس معكوسة لما أنا أقول هنا ألفا صفر في
المية للأسود معناه هأقول واحد ناقص صفر هتصير واحد
مضروبة في مين؟ في الأسود مظبوط فإيش راح يبين معانا
الـ zero وهذه لما تكون مية في المية صح ولا لأ؟ هتكون
مئة مضروبة أو واحد يعني بمعنى آخر واحد في الصورة
في الـ pixel هي مثلًا نفترض عشرة عشرة تمام؟ اللي هي
واحد مضروبة في عشرة واحد مضروبة في عشرة هتعطيك
عشرة عشرة زائد الصفر هتعطيك عشرة العشرة واضحة
الفكرة؟ فهتصير مين ظاهر عندي نسبة color من هان و
الأسود يعني ما فيش له وجود فلو طلعته في الصورة
هتلاقي إيش مالها فيه كأنه تدرج البس هادي إن باين فيه
تدرج من الأسود مع مين شوية يعني جامع هاي مع هاي
داخل إيش الصورتين في بعض ماشي؟
هي الخوارزمية طبعًا عادي زي ما بتاخد الصورتين بتدخل
الصورة الأولى والصورة التانية مش فبعض، بتدخل هدف
image وهدف image كمتغير وبنطبق عليها إيش بنسوي؟ و
بندخل alpha، بندخل قداش هي قيمة alpha اللي بدنا
نشتغل فيها
أيوة بالضبط نفس الفكرة ماشي فهنا إيش بدخل أنا
image one وimage two وده عمل إيش Alpha ..
Alpha تبعتك هذه قداش أنت بتحطيها بتصير تتطبق على
كل يعني ثابتة بس هو هناك موريني أنه .. في تدرج يعني
في عملية الشفافية كأنك لما بتيجي بتمسك صورة مش في
احنا عندنا بالـ .. الـ .. الـ gradient color حاجة من
شفاف لأحمر أو من أحمر لشفاف أو إشي زي هي بتروحي
على الصورة اللي بدك أنت تشتغل .. تضيف عليها بتمسكي
الـ gray scale تبعك أو الـ .. الـ gradient color و
بتمشي على الصورة فإيش بتصير عندنا؟ mask كأنه عامل
.. كأنه عامل إيش؟ mask منطقة الأحمر هاي اللي بتطلع
معاكي إيش بتصير؟ بتصير منقطة شفافة صح؟ بتصير إيش
مالها؟ هي منطقة الـ mask وبتصير كأنها ممحية ولما
أنتِ تجي تحطي الصورة التانية عليها محل ما هو باين أو
في عندنا شفاف بتروح بتنصح للصورة التانية هذي أحد
الطرق بس هذي بيشتغل يعني بفكرة أخرى لكن أنا لما
أبدأ أحط صورتين مع بعض يعني فعليًا بتدخليهم كـ code
كبرمجة بتروحي إيش؟ بتدخلي أنت نسبة Alpha واضح
الفكرة؟ طيب فبمشي أنا الـ addition image بحسب أكبر
صورة أنت بدكياها تمام for each row في الـ image
الأولى و الـ image الثاني يعني شايفين كيف بجمع قداش
عدد الـ row في الـ image الأولى و عدد الـ row في الـ
image الثاني لإنه التنتين مش ضروري يكونوا مقاس بعض
و الـ column برضه تبعت الـ image الأولى و الـ image
الثانية و ما أروحش بسوي الـ addition image column و
row بدها تساوي a أو اللي هي alpha مضروبة في الـ
image one column row زائد واحد ناقص alpha في الـ
image column و row بيطلع عندك الناتج اللي احنا
بدناه على الـ addition image واضحة الفكرة طيب طيب
الـ subtraction حد بقدر يقول لي ايش المشكلة في الـ
subtraction تق .. ليش على طول تق؟ ما بدنا نفكر؟ اه ..
يمكن ايش؟ ماشي اللون أقل من صفر ايش بصير؟ بالسالب
.. في عندنا ألوان بالسالب؟ لأ .. بس الـ range تبع
الألوان بصير من سالب 255 لموجب 255 طب كيف نحل
العملية هاي؟ كيف نحل المشكلة اللي صارت؟
ما هو السالب هو نفس الأرقام اللي بالموجب .. بدنا
نشيل السالب .. كيف أشيل السالب؟ .. يعني
أسهل من أني أقعد أضرب في سالبة .. بدنا ناخد الـ
absolute .. بدنا ناخد ايش؟ الـ absolute .. مش فيها
أنها function اسم الـ absolute .. صح؟ أنها بترجع لك
الموجب صح؟ طيب يبقى هان نفس المشكلة واجهتهم لما
اجوا يعملوا subtraction لهوا انه أنا لو بدي أطرح
صفر ناقص 255 بيطلع هنا سالب 255 هذه أقل قيمة و لو
أنا طبعا بدي أطرح 255 من 255 أو يعني هان 255 و
الثانية صفر بيصير عندي برضه موجب 255 فالـ range صار
فيه عندي بالـ negative طيب فقالوا this necessitates
the use of 16 bit يبقى احنا محتاجين ايش نعمل ..
نستعمل 16 bit on اللي هو عفوا signed .. signed
يعني بتكون في عندي bit إشارة واضحة الفكرة؟ فراحوا
فكروا بهذه الطريقة sign integers in the output
image unless sign is unimportant إلا إذا كانت
الإشارة مش مهمة أنا الإشارة سالب وموجب مش مهم عندي
فالأحسن من هيك بدل ما أقعد أزود 16 bit عشان أعمل
bit إشارة و نقعد شغلانا نشفر و نحط هذه قداش
بالسالب و قداش بالموجب و الحكي هذا كله فقالوا أفضل
طريقة which case we can simply take the mean the
modulus ماشي of the main result and store it using
8 bit integer و بنبقى محافظين على أن الصورة مخزنة
بـ 8 bit فأفضل طريقة كانت عشان نطرح صورتين من بعض
انه لازم نحط الـ absolute لو أنت طرحت من غير ما تحط
الـ absolute هيطلع عندك الناتج فيه خطأ بيكسلز مش
هتعطيكي ألوان لأن ما في عندنا سالب واضح؟
أنا بدي أنزل عن الإشارة لأن أنا ما بتهمني
الإشارة لأن في الآخر لو أنت سالب 255 بس الـ range
آخر issue سالب 255 يعني من صفر أو من سالب 255 لـ 0
هم نفس الأرقام من صفر لـ 255 بالـ positive فأنا لو
اتنزلت عن الإشارة هيعطيكي color هيعطيكي ايش؟ كرر
بالـ Grey Scale صح ولا لأ؟ يبقى أنا هاخد
الـ Absolute و بريح راسي طيب يبقى أنا عشان أعمل
subtract نسمع عشان أعمل subtract على طول بس بدخل
الصورة الـ O و الصورة الثانية مش محتاجة لـ ألفا ولا
بيتا ولا ما يحزنون و هروح ايش آخذ؟ طبعا برضه ممكن
يكون الصورتين مش قطع بعض واحدة أصغر من الثانية طب
أنا لما بدي أعمل subtract ايش بتتوقع يطلع الناتج؟
ايش كأنه بده يعمل؟
نفترض .. نفترض يعني مثلا عندك هان خليكي معه شوية
بغض النظر هان مثلا كان يعني .. في ألوان كتير اه و
في عندنا هنامستطيل بهذا الشكل مثلا وهذه
فيه
برضه في نفس المكان نفترض من التلتان نفس الحجم أنا
قبل ما نقلب و نشوف بدي تعرفوا ايش ممكن يطلع معكم
نفترض هذه قداش فيها أو خمسة في خمسة نسمع نسمعنسمع
شوي، هذه خمسة في خمسة و هذه كمان خمسة في خمسة
ماشي؟ و في نفس المكان واحد،
ثلاثة، خمسة، أيوة، واحد، اثنين، ثلاثة، اثنين،
ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة،
اثنين، ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة، اثنين،
ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة،
اثنين، ثلاثة، اثنين، ثلاثة، اثنين، ثلاثة، اثنين،
زي هيك اطرحوليهم بغض النظر يعني أنا بسمع تاكي
اللون هدول التنتين وهنا أي ايش ما يكون يعني ممكن
يكون نفس الألوان اللي هان نفس الألوان اللي هان طيب
نفسهم نفس الـ background نفس الـ background هان بس
الفرق أن ها دي مثلا أبيض و ها دي ايش أبيض اطرحولهم
من بعض ايش بيطلع النتج
اه واحد ناقص واحد اطرحي ايش بيطلع الجواب؟
هيطلع المفروض خمسة في خمسة صح؟
فكروا
بهدوء مش ضروري الدوشة اه ايش
السؤال؟ طيب هاي هان
نفترض أن الـ background كل الـ pixel نفس السطر الأول
هذا ما عدا هدول ايش هيطلع الجواب؟
بالظبط
ممتاز طيب يعني أنا هاي المبدأ اطرحها هذه من هاي
ايش راح تعطيكي؟ صفر يعني كل اللي شبه بعض هيعطيني
zero طب و الصف الثاني برضه طلع عندي zero صح؟ و
العمود اللي هان هي صفار و العمود الثاني كمان هان
صفار صح؟ طب و هان في الآخر و ها دي طب ظل المربع اللي
في النص عند الـ pixel هاي هنا واحد طيب مع ها دي
برضه zero صح؟
هيهم هيهم نفس الـ pixel هاي هذا الـ pixel هذا في
العمود الثالث وهذا في العمود الثالث وهذا في الصف
الثالث وهذا في الصف الثالث صح؟ طيب هذه جينا
طلعناها من هنا طلعت صفر طب و اللي هان قداش قيمتها
أربعين أربعين نقص واحد أربعين نقص واحد بتطلع تسعة
و ثلاثين يبقى هي جيهان عندي تسعة و ثلاثين صح؟ طيب هان
واحد ناقص العشرين بالسالب طبعا بصير عندك تسعة عشر
الـ absolute صح؟ طيب و هنا أربعين زي القيمة اللي
موجودة هان صح؟ ايش هتطلع؟ Zero يبقى ايش طلع
النتج؟
أيوة كلها سوداء مع ده هدول الـ pixel يعني كأنه مش
بيجيب الفرق أو الاشي المختلف تمام؟ كأنه مش
بيطلع عليه الشيء المختلف ما بين الصورتين ما بين ايش
الصورتين فع سبيل المثال لو قلبت الصورة يعني هذا
هتطلع سوداء و كل هذا هيتطلع رمادي .. فاتح .. غامق
شوية صح؟ طب بقلب الـ background خليها بيضاء بتصير
واحد و هد مثلا نقلبها لون ثاني مثلا نفترض أسود
فبيصير عند كل الخلفية بيضاء ما عدا هدول التنتين مثلا
أسود .. zero فايش أعطاني كأنه الاشي المختلف هان و
الاشي المختلف هنا و جمعهم مع بعض أو طلع لي الناتج تبع
مين المختلف في الصورة الأولى و المختلف في الصورة
الثانية هي مش تقاطع مش تقاطع التقاطع ايش بيعطي
المشترك صح بس احنا هنا ما طلع لي المشترك المشترك
طلع صفر صح فطلع لي المختلف ايش بيطلع المختلف طيب
تعالوا شوفوا هذه الصورة هلاقيت ان هدون الصورتين نفس
الاشي، بس الراجل اللي موجود هان و موجود هان متغير
الـ position تبعه، يعني واحد واقف ورا و الثاني عيش
متحرك خطوة، فلو طرحت الصورتين هدول من بعض، طبعا هو
نفسي طالع معايا الـ background بيضاء
بس يعني مقرب صفر ما هو الأبيض أو واحد صح؟ الراجل
يعني عاكس الألوان عشان يخلي لك الأرضية بيضاء و
المختلف هان و هان أو الجزء اللي فيه الاختلاف طالع
بالأسود ماشي؟ و اللي هي نفس الفكرة لكن قلبين
النتائج تبعت الصورة يبقى أنا ايش أعطاني؟ أعطاني
ايش الجزء؟ المختلف في الصورة هاي عن الصورة الثانية
واضحة الـ subtraction إيش بيسويوا فيها؟ بطلع صورتين
هذه يعني من أحد الأشياء اللي ممكن يستخدموا فيها الـ
subtract image طيب الـ division الـ division إيش
المشكلة راح تطلع في الـ division؟ لو بدي أقسم أحشر
صح؟ وبنفعش نقسم على صفر، مظبوط؟ طيب، يبقى أنا هعمل for
division لو بدي أمسك صورتين و أقسمهم على بعض for
division if of images to produce meaning for the
result عشان ناخد نتيجة كويسة floating point
arithmetic must be used لازم يظهر عندي فاصلة عشرية
لازم يظهر عندي إيش فاصلة عشرية the ratio image
can be of the floating point type or we can rescale
and round pixel values to be in a more convenient
0 to 255 integer طبعا احنا ما عندنا عداد عشري فقال
يا إما نعمل truncated يا إما نعمل rounded فقال لي
rescale إيش يعني rescale؟ إن نعطي قيمة جديدة واضح؟
سواء عملتيها rounded أو عملتيها حسب إيش الوصول
اللي راح تستخدميه يا round يا mean يا truncated طيب
بكل بساطة هتدخلي الصورة الأولى و هتدخلي الصورة
التانية و بعدين ناخد بحسب مش ضروري التنتين يكونوا
قد بعض ناخد بحسب طول التنتين و عرض التنتين تمام و
نقول الـ division image بدها تكون شايفين إيش مكتوب
هنا pre-scale حسبيا round، يا عيش، يا truncate،
rescale للـ image الأولى على مين؟ الـ image التانية
طبعا أنت حرة مين بدك تقسميه على الثاني يعني، ممكن
تكون image 2 على image 1، ما .. مش فارقة كتير
يعني، واضح؟ طيب، طب لو أنا طبعتها على الصورة هذه،
إيش الـ division راح يسويلي؟
إيش بيطلع من نتيجة الـ division؟ عندنا صورتين هن
شبه بعض تقريبا، أيوة، الحيطين المشترك أو بمعنى آخر،
إيش برضه المختلف؟ إيش المختلف في داخل الصورة؟ لو
طلعته هن، البرغي هاد و البرغي هاد نفس المكان يعني
نفس الـ pixel ها و نفس الـ pixel ها لو إجينا قسمناه مع
بعض 155 على 155 بيطلع واحد فلما يكون تطابق في الـ
pixel هيعطيني ناتج واحد يعني لون سادة صح؟ لما يكون
.. لما بيطلع عندي لون موحد بيعطيني .. بعرف إن هذي
موجودة في نفس المكان ها صح؟ لكن إيش هذول طلعوا؟ في
برغي و حلقة ظاهرين بس ممكن يكونوا مش ظاهرين بنفس
الطريقة اللي موجودة فيها لإنه في اختلاف يعني ممكن
يكون البرغي هذا مزوّح بكسل تمام؟ أو معموله ملفوف
شوية بيكسل أو اتنين بيكسل فهيروح لمن نقسمه على
قيمة غير القيمة الأصلية يعني ما فيش فيها تشابه
نفترض نقسم 255 على 70 قداش بيعطينا اقسمي
قداش الجواب يلا اقسموا قداش
أو 70 على 255، بغض النظر يعني كانت اللي تحت أصغر
أو اللي فوق أصغر هاد إيش راح تعطيكي؟ طيب، و اللي
تحت؟ 70 على 255؟ زي
هيك، صح؟ تمام؟ يبقى أنا في حالة عدم تطابق، مش
هيطلع الـ color واحد هيطلع فيه لون، يا إما بتعمليله
مثلا Truncate بتفترضي إنه صفر أو بتفترضي هذا إنه
بيطلع تلاتة يعني مش هيطلع واحد واضح؟ مش هيطلع واحد
فهيطلع كنتيجة في مين؟ في الـ output فبرضه الـ division
راح تقولك مين الأشياء المختلفة في الموقع تبعها في
الصورة الأولى عن مين؟ الصورة التالية إذا كانوا
تنتين فعلا شبه بعض واضح؟ طيب مرة الجاية إن شاء الله
بنشوف الـ and و الـ or و الـ transition و بنخلص إن
شاء الله جزء الآخر طيب الآن في عندنا برشا الله
presentation بتحكي عن الـ LZW compression مع طالبة
إسراء زغرف الـ LZW compression عبارة عن خوارزمية
ضغط البيانات بتعتمد على الـ dictionary و بتعتمد على
مواقع الـ dictionary بتعتمدش على بناء الأشجار زي ما
أخدنا في اللي هو Hoffman الـ LZW تم إنشاءها من
Lemaille و Zeif و Welsh Lemaille و Zeif قاموا
بإنشائها أما Welsh قاموا بالتعديل عليها و طلع الـ
LZW بهذه الطريقة فهذا الـ compression هالقطة هو هنا
هدى بقدر إن أضغط فيها ملفات نصوص ملفات صور أي
ملفات أنا بديها هنا مستخدم نص اللي هو .. نص اللي
هو banana قلية
اللي .. قلية اللي هو الخوارزمية هدى إنه هياخد
هالقطة أول حرف من الخوارزمية
أخد أول حرف من الخوارزمية راح يحطّ لها مكان في الـ ..
في الـ dictionary اللي هو الـ B عرف الـ B اللي هي في
الـ dictionary و .. و حطها في مكان اللي هو رقم واحد
بعدين راح يأخذ الـ .. الـ .. الثاني هادي ساب .. سابها
و حط الثاني معها بعدين ضاف له مكان ثاني في الـ
dictionary هذا الـ encode
لأ اللي هو الملف نص أو صورة ممكن هذا نعتبر صور
يعني الـ pixelات مثلا زي كده هي عن الـ pixelات هيك
عندنا
مجموعة من الـ pixelات
بيروح يحسب كل pixel و بياخد اللي جنبه و بياخد اللي
جنبه و كل قيمة مثلا هنا واحد هنا حطه في مكان واحد
هنا كانوا اتنين مثلا هنا حطه مثلا في مكان اثنين و
هكذا هذا في الصور في النصوص أو بالصور المهم نعرف
الكلفة .. الكلفة تبعت اللي هو عمل الخوارزمية
هيضاف لها ده .. هاد السلسلة ضافها للمكان اثنين بعدين
هياخد اللي بعدين
أخد البعدي ضافه بمكان تلاتة هلاقيت آخر إشي اللي هو
an, an هياخدها مع اللي قابلها برضه اللي هي high,
a, an, a هلاقيت هذه برضه هيضفلها مكان في الـ
dictionary
هياخد بعدين الان اللي هنا و هيضيفها هيك هي
هاد اللي انضافت هي هاد .. هاد اللي انضافت و برضه
هاد هنا هي اللي انضافت و هاد برضه حطلها مكان في الـ
dictionary بالأخر
اللي هو أخد حرف الـ a
وحطها في مكان ستة بعدين لما إجى بده يفك الترميز
هذا هلاقيتها هذا هو عبارة عن ترميز اللي هي
السلسلات هذه لما إجى يفك الترميز اللي هناك جاب
الرقم واحد طلعّا راح .. طلعّا .. طلعّا على القيمة
الموجودة في الرقم واحد هذا عبارة عن dictionary
يعني هذه نعتبرها هي الـ .. هي المتغير وهذه قيمتها
الموجودة في الـ dictionary يعني بتقول هيك مثلا في
المكان الأول موجودة اللي هي قيمة بيه فهنا لما راح
يُترجم اللي هو يعمل الـ decode
لمّا راح يعمل الـ decode أخد الواحد إيش فيها حط الـ
P بعدين الـ .. الـ .. الثاني PA و هيمشي تدريجي لحد
ما يوصل اللي هي السلسلة هذه اللي هي السلسلة
الأساسية اللي كانت موجودة في .. أصلا في الملف
فبالآخر هيحصل .. يعني لما يوصل لـ 6 هيحصل اللي هو
القيمة الأصلية هيك هيك طريقة الترميز فك الترميز في
الـ LZW يعني هو كأنه بدل ما ييجي
آه تمام هيحط ستة هو هيروح .. هيروح كل مكان هنا
عشان يعرف القيمة اللي كان إتقبله و بالأخر هيوصل
للقيمة هذه و بالأخر هيحط ستة إلا مش هيحط هذه
الأرقام .. هيمشي .. هيمشي بس على الأماكن هو هيمشي
على الأماكن بس هو لما ييجي بده يعمل encoding لإن
بعد ما عمل الـ encoding و عمل الـ .. بيخزن الكلمة
الأصلية هيجي بدل ما يكتب كلمة banana في الملف
هيكتب بدلها ستة رقم ستة تمام آه بدل ما يكتبهو
هيروح هذه العملية هذه هيك مش هتنكتب هذه هو اللي
هيعملها إنه يمشي على كل مكان و ياخد القيمة و
بالأخر هيكتب لرقم ستة فمانو ما داش عمل الحكي هادي
يا بناد؟ لإنه زي tree يعني مثلا ممكن بعد الـ B
مفترض عندنا أكبر خمس كلمات بيبدو حال في الـ B زي
مين مثلا بك تمام؟ و عندنا اللي هي banana و مثلا
عندك bird
boy فاهمتوا كيف؟ كلهم هدول بيبتدوا بحرف الـ B في
الأفر بحرف الـ B فهيجي على الـ dictionary اللي بتبقى
بحرف مين؟ الـ B هلاقيتها بيبسك شوفتوا كيف طالعوا من
القمص هه؟ بتعرفوا طالعوا من القمص المعجب بتروح
بتأول أول حرف، بعدين وقت ب .. بدور الحرف اللي وراه،
بيبقى محطوط فوق، الحرف اللي وراه والله مش في هذه
الصفحة بتروح بتقريبعد ما توصلى لوين الحرف الوجه
مثلا الحرف الـ I و الحرف الـ R واضح فا ال it إيش
اللي بيصير؟ ال it بيصير بشكل سريع بتوصلى لمكان
الكلمة اللي