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

للبدء ، نحتاج إلى وحدتي مكتبة:
from PIL import Image, ImageDraw 
إعداد أدوات للعمل المستقبلي المريح:
 image = Image.open('test.jpg')  
لنبدأ
سنقوم بمعالجة الصور بتنسيق RGB. يدعم PIL أيضًا العمل بالتنسيقات 1 و L و P و RGB و RGBA و CMYK و YCbCr و LAB و HSV و I و F.
يتم تعيين قيم البيكسل في الصورة بالتنسيق: 
(س ، ص) ، (أحمر ، أخضر ، أزرق) ، حيث 
x ، ص هي الإحداثيات ، والقيم العددية ل RGB في النطاق من 0 إلى 255. وهذا هو ، ونحن نعمل مع صورة 
8 بت. ظلال رمادية
يظهر صبغة رمادية في حالة تساوي جميع لوحات الألوان ، لذلك نحن بحاجة إلى الحصول على قيمة المتوسط الحسابي في النقاط الثلاث:
 for x in range(width): for y in range(height): r = pix[x, y][0]  

فارق بسيطترى العين البشرية مجموعة مختلفة من الألوان بطرق مختلفة. لن يمنحك أي شخص الصيغة الدقيقة ، نظرًا لأن إدراك الألوان مختلف لكل شخص بطريقة أو بأخرى ، ولكن إذا كنت مهتمًا ، يمكنك قراءة المزيد 
هنا وهنا .
 انقلاب
يتم الحصول على الانعكاس بطرح اللون الحالي من 255:
 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] draw.point((x, y), (255 - r, 255 - g, 255 - b)) 

انعكاس تدرج الرمادي
الجمع بين الخوارزميات السابقة ، يمكنك كتابة التعليمات البرمجية التالية:
 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] sr = (r + g + b) // 3 draw.point((x, y), (255 - sr, 255 - sr, 255 - sr)) 

انعكاس تدرج الرمادي الانتقائي
بالنسبة إلى هذه الخوارزمية ، يلزمك تحديد قيمة العتبة ، والتي سآخذها مقابل 100:
 for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] if (r+g+b)>100:  

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