موازنة المدرج التكراري (Histogram Equalization)

<![CDATA[

مقدمة إلى المدرج التكراري

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

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

تعتمد موازنة المدرج التكراري على تحويل قيم البكسل في الصورة الأصلية إلى قيم جديدة بحيث يتم توزيعها بشكل أكثر انتظامًا. يتم ذلك عن طريق حساب دالة التوزيع التراكمي (Cumulative Distribution Function – CDF) للمدرج التكراري الأصلي، ثم استخدام هذه الدالة لتحويل قيم البكسل. دالة التوزيع التراكمي تعطي احتمال أن تكون قيمة البكسل أقل من أو تساوي قيمة معينة.

الخطوات الأساسية في موازنة المدرج التكراري:

  1. حساب المدرج التكراري: يتم حساب المدرج التكراري للصورة الأصلية.
  2. حساب دالة التوزيع التراكمي (CDF): يتم حساب دالة التوزيع التراكمي من المدرج التكراري.
  3. تطبيع دالة التوزيع التراكمي: يتم تطبيع دالة التوزيع التراكمي بحيث تتراوح قيمها بين 0 و 1.
  4. تحويل قيم البكسل: يتم استخدام دالة التوزيع التراكمي المطبعة لتحويل قيم البكسل في الصورة الأصلية إلى قيم جديدة.

الخوارزمية الرياضية لموازنة المدرج التكراري

لنعتبر أن لدينا صورة رمادية بمستويات رمادية تتراوح بين 0 و L-1 (حيث L هو عدد المستويات الرمادية، غالبًا ما يكون 256). لنفترض أن ni هو عدد مرات ظهور المستوى الرمادي i في الصورة، و N هو إجمالي عدد البكسلات في الصورة. إذن، فإن احتمال ظهور المستوى الرمادي i هو:

p(i) = ni / N

دالة التوزيع التراكمي (CDF) هي:

CDF(i) = Σj=0i p(j)

التحويل الذي يتم تطبيقه على كل بكسل هو:

si = round((L-1) * CDF(i))

حيث si هي القيمة الجديدة للبكسل ذي القيمة i.

أنواع موازنة المدرج التكراري

هناك نوعان رئيسيان من موازنة المدرج التكراري:

  • موازنة المدرج التكراري العام (Global Histogram Equalization): يتم تطبيقها على الصورة بأكملها.
  • موازنة المدرج التكراري التكيفي (Adaptive Histogram Equalization): يتم تطبيقها على أجزاء صغيرة من الصورة (نوافذ) بشكل مستقل. هذا النوع أفضل في التعامل مع الصور التي تحتوي على تباين مختلف في مناطق مختلفة. يوجد أيضًا موازنة المدرج التكراري التكيفي المحدودة بالتباين (Contrast Limited Adaptive Histogram Equalization – CLAHE) و هو تحسين لموازنة المدرج التكراري التكيفي يحد من التباين الزائد الناتج عن التضخيم المفرط للضوضاء.

مزايا وعيوب موازنة المدرج التكراري

المزايا:

  • تحسين التباين في الصورة.
  • إبراز التفاصيل المخفية.
  • بسيطة وسهلة التنفيذ.

العيوب:

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

تطبيقات موازنة المدرج التكراري

تستخدم موازنة المدرج التكراري في العديد من التطبيقات، بما في ذلك:

  • التصوير الطبي: لتحسين وضوح الصور الطبية مثل الأشعة السينية والتصوير بالرنين المغناطيسي.
  • التصوير الفلكي: لتحسين وضوح صور الأجرام السماوية.
  • معالجة الصور الرقمية: لتحسين جودة الصور الملتقطة بالكاميرات الرقمية.
  • الرؤية الحاسوبية: كخطوة تمهيدية في العديد من خوارزميات الرؤية الحاسوبية.

مثال عملي باستخدام بايثون

يمكن تنفيذ موازنة المدرج التكراري بسهولة باستخدام مكتبات معالجة الصور في بايثون، مثل OpenCV.

مثال على الكود:


import cv2

# قراءة الصورة
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# تطبيق موازنة المدرج التكراري
equ = cv2.equalizeHist(img)

# عرض الصور
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equ)
cv2.waitKey(0)
cv2.destroyAllWindows()

يوضح هذا الكود كيفية قراءة صورة رمادية، وتطبيق موازنة المدرج التكراري باستخدام دالة equalizeHist() من OpenCV، ثم عرض الصورة الأصلية والصورة بعد الموازنة.

موازنة المدرج التكراري للصور الملونة

لتطبيق موازنة المدرج التكراري على الصور الملونة، يجب أولاً تحويل الصورة من مساحة الألوان RGB إلى مساحة ألوان أخرى مثل YCbCr أو HSV. ثم يتم تطبيق موازنة المدرج التكراري على قناة السطوع (Y أو V)، ثم يتم تحويل الصورة مرة أخرى إلى RGB.

مثال على الكود:


import cv2

# قراءة الصورة الملونة
img = cv2.imread('color_image.jpg')

# تحويل الصورة إلى مساحة الألوان YCrCb
img_ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)

# فصل القنوات
y, cr, cb = cv2.split(img_ycrcb)

# تطبيق موازنة المدرج التكراري على قناة السطوع (Y)
y_eq = cv2.equalizeHist(y)

# دمج القنوات
img_ycrcb_eq = cv2.merge((y_eq, cr, cb))

# تحويل الصورة مرة أخرى إلى مساحة الألوان BGR
img_eq = cv2.cvtColor(img_ycrcb_eq, cv2.COLOR_YCrCb2BGR)

# عرض الصور
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()

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

تحديات و اعتبارات إضافية

عند تطبيق موازنة المدرج التكراري، يجب مراعاة بعض التحديات والاعتبارات الإضافية:

  • الضوضاء: موازنة المدرج التكراري يمكن أن تزيد من وضوح الضوضاء في الصورة. يمكن استخدام تقنيات تقليل الضوضاء قبل أو بعد موازنة المدرج التكراري للتخفيف من هذه المشكلة.
  • القطع الأثرية: في بعض الحالات، قد تؤدي موازنة المدرج التكراري إلى ظهور قطع أثرية أو تشوهات في الصورة. يمكن تجنب ذلك عن طريق استخدام موازنة المدرج التكراري التكيفي أو تقنيات أخرى أكثر تطوراً.
  • التطبيق المناسب: موازنة المدرج التكراري ليست مناسبة لجميع أنواع الصور. يجب تقييم الصورة بعناية قبل تطبيق موازنة المدرج التكراري للتأكد من أنها ستؤدي إلى تحسين النتائج.

خاتمة

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

المراجع

]]>