سؤال

لقد رأيت بضع صور حيث هم عمومًا اصنع وجهًا من العديد من الصور الصغيرة.

على سبيل المثال، لنفترض أنهم قاموا بتجانب 100 صورة في شبكة مقاس 10 × 10، وبطريقة ما يغيرون تدرج اللون/السبت/اللون للصور الأصغر بحيث عندما ترى الصورة الكبيرة, ، ترى صورة أخرى.

السؤال يتلخص في - لنفترض أن لديك صورة.ما نوع الخوارزمية التي ستطبقها على تلك الصورة بحيث يكون متوسط ​​قيمة RGB لتلك الصورة هو الذي حددته؟

هل كانت مفيدة؟

المحلول

  1. احسب تدرج اللون/sat/قيمة كل بلاطة (استخدم HSV لأن الاختلافات الأصغر هنا تبدو "طبيعية" أكثر للعين البشرية مقارنة بمساحة RGB)
  2. الآن قم بحساب نفس القيم لكل مربع n*n من صورتك الكبيرة
  3. ابحث عن المربعات ذات قيم HSV الأقرب (الحد الأدنى sqrt((h1-h2)^2 - (s1-s2)^2 - (v1-v2)^)) وختم هذا المربع الذي تم تصغيره إلى n*n في النتيجة.

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

يرى أي مقالة ويكيبيديا لتحويلات RGB <-> HSV.

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

للحصول على تلك اللمسة الإضافية، حاول إنشاء ملف صورة جيجا بكسل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top