يوفر OpenCV طريقة قوية وفعالة لمعالجة الصور، بما في ذلك مهمة تحويل مساحة الألوان الأساسية.يركز هذا المقال على تحويل الصور من مساحة ألوان RGB (أحمر، أخضر، أزرق) الشائعة إلى مساحة ألوان YUV (اللمعان، والكرومينانس U، والكرومينانس V). يستخدم YUV على نطاق واسع في معالجة الفيديو والضغط لأنه يفصل اللمعان (السطوع) عن الكرومينانس (معلومات اللون). يسمح هذا الفصل بتقنيات ضغط فعالة عن طريق تقليل عرض النطاق الترددي المطلوب لبيانات اللون، والتي غالبًا ما تكون أقل أهمية من اللمعان لجودة الصورة المتصورة.
فهم مساحة ألوان YUV
على عكس RGB، الذي يمثل اللون كمزيج من الضوء الأحمر والأخضر والأزرق، يمثل YUV اللون بشكل مختلف. تمثل ‘Y’ اللمعان، وهو أساسًا سطوع الصورة. تمثل ‘U’ و ‘V’ الكرومينانس، حاملة معلومات اللون. هذا الفصل مفيد لأن العين البشرية أكثر حساسية للتغيرات في السطوع منها في اللون. تسمح هذه الخاصية بالضغط الأمثل حيث يمكن تقليل حجم بيانات اللون أو ضغطها بشكل أكثر قوة دون التأثير بشكل كبير على جودة الصورة المتصورة.
تحويل الصور إلى YUV باستخدام OpenCV
تبسط وظيفة cvtColor
في OpenCV عملية التحويل من RGB إلى YUV. تأخذ هذه الوظيفة صورة الإدخال ورمز تحويل كوسيطين. يوضح رمز Python التالي عملية التحويل:
import cv2
# تحميل الصورة
image = cv2.imread("input.jpg")
# معالجة الأخطاء المحتملة أثناء تحميل الصورة
if image is None:
print("Error: Could not load image.")
exit()
# التحويل إلى YUV. يقوم OpenCV بتحميل الصور بتنسيق BGR، لذلك نقوم بالتحويل من BGR إلى YUV.
yuv_image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
# اختياري: عرض وحفظ الصورة المحولة
cv2.imshow("Original Image", image)
cv2.imshow("YUV Image", yuv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output_yuv.jpg", yuv_image)
#ملاحظة: قد تحتاج إلى برامج عرض صور متخصصة لعرض صورة YUV بشكل صحيح، حيث قد لا تفسر برامج العرض القياسية مساحة ألوان YUV بدقة.
شرح:
import cv2
: استيراد مكتبة OpenCV.image = cv2.imread("input.jpg")
: تحميل صورة الإدخال. تذكر استبدال “input.jpg” بالمسار الفعلي لملف صورتك.- معالجة الأخطاء: يفحص كتلة
if image is None:
وجود أخطاء في تحميل الصورة. yuv_image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
: إجراء تحويل BGR إلى YUV. يقرأ OpenCV الصور بتنسيق BGR افتراضيًا.- العرض والحفظ الاختياريان: الأسطر المتبقية اختيارية ولكنها مفيدة لعرض النتائج وحفظ الصورة المحولة.
اعتبارات مهمة:
- توجد اختلافات في YUV (مثل YUV420، YUV422): قد يختلف التمثيل المحدد حسب التطبيق أو مخطط الضغط. يستخدم الكود أعلاه تمثيل YUV شائع.
- عرض YUV: قد تبدو صورة YUV مختلفة عن صورة RGB الأصلية. قد لا تعرض برامج عرض الصور القياسية YUV بدقة؛ قد تحتاج إلى برامج عرض متخصصة للعرض الصحيح.
خاتمة
يُعد تحويل الصور إلى YUV باستخدام OpenCV عملية بسيطة بفضل وظيفة cvtColor
. هذا التحويل ضروري لتطبيقات معالجة الصور والفيديو المختلفة، خاصة تلك التي تتضمن الضغط والتخزين الفعال لمعلومات اللون. يعد فهم مساحة ألوان YUV ومزاياها على RGB أمرًا أساسيًا لأي شخص يعمل في معالجة الصور أو الفيديو.
جدول المحتويات