سؤال

لدي صورة ذات مقياس رمادي وأريد أن أقوم بعمل ذلك

  1. يتابع الصورة عن كثب
  2. هو دائما أعظم مما كانت عليه الصورة
  3. سلسة على نطاق معين.

بمعنى آخر، أريد وظيفة سلسة تقارب الحد الأقصى لوظيفة أخرى في المنطقة المحلية مع المبالغة في تقدير تلك الوظيفة في جميع النقاط.

أيه أفكار؟


كان تمريري الأول في هذا بمثابة اختيار "النقاط العالية" (من خلال مقارنة الصورة بمربعات صغرى مناسبة لكثير الحدود ثنائي الأبعاد عالي الترتيب) ومطابقة كثير الحدود ثنائي الأبعاد لها ومنحدراتها.نظرًا لأن الملاءمة الأولى تطلبت مساحة عمل أكبر من مساحة العنوان، أعتقد أنها لن تنجح وسيتعين علي التوصل إلى شيء آخر...


ماذا فعلت

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

الإجراء التالي (الذي لا يحتوي أبدًا على وظيفة الحد الأقصى بشكل صريح) هو ما انتهى بي الأمر إليه:

  • ابحث عن المتوسط ​​المحلي والانحراف المعياري عند كل نقطة باستخدام دالة تشبه "التمويه".
  • قم بإزاحة الصورة للحصول على متوسط ​​صفر.(image -= mean;)
  • قسّم كل بكسل على stdev الخاص به.(image /= stdev;)
  • يجب أن تكون الصورة الأكبر الآن [-1,1] (من الغريب أن معظم صور الاختبار الخاصة بي تحتوي على أفضل من 99% في هذا النطاق بدلاً من 67% المتوقعة)
  • أوجد الانحراف المعياري للصورة بأكملها.
  • قم بتعيين بعض النطاق +/- n * sigma لنطاق الإخراج الخاص بك.

مع القليل من التلاعب، يمكن تحويل ذلك للعثور على وظيفة Max التي كنت أسأل عنها.

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

المحلول

إليك شيء سهل؛أنا لا أعرف كم هو جيد.

  1. تحصل سلس, ، استخدم خوارزمية التمويه المفضلة لديك.على سبيل المثال، متوسط ​​النقاط ضمن نصف القطر 5.تكلفة المساحة هي ترتيب حجم الصورة والوقت هو حاصل ضرب حجم الصورة في مربع نصف قطر التمويه.

  2. أوجد الفرق بين كل بكسل على حدة وبين الصورة الأصلية، وأوجد القيمة القصوى لـ (original[i][j] - blurred[i][j]), ، وأضف هذه القيمة إلى كل بكسل في الصورة غير الواضحة.المبلغ مضمون لتقريب الصورة الأصلية.تتناسب تكلفة الوقت مع حجم الصورة، مع مساحة إضافية ثابتة (إذا قمت بالكتابة فوق الصورة غير الواضحة بعد حساب الحد الأقصى.

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

نصائح أخرى

ستكون إجابتي السريعة والقذرة هي البدء بالصورة الأصلية، وتكرار العملية التالية لكل بكسل حتى لا يتم إجراء أي تغييرات:

  1. إذا كان من الممكن حل دلتا كبيرة جدًا في القيمة بين هذا البكسل وجيرانه عن طريق زيادة قيمة البكسل، فافعل ذلك.
  2. إذا كان من الممكن حل تغيير الميل الزائد حول هذا البكسل وجيرانه عن طريق زيادة قيمة البكسل، فافعل ذلك.

ستبدو النسخة ثنائية الأبعاد كما يلي:

for all x:
    d = img[x-1] - img[x]
    if d > DMAX:
        img[x] += d - DMAX
    d = img[x+1] - img[x]
    if d > DMAX:
        img[x] += d - DMAX

    dleft = img[x-1] - img[x]
    dright = img[x] - img[x+1]
    d = dright - dleft
    if d > SLOPEMAX:
        img[x] += d - SLOPEMAX

الحد الأقصى لتصفية الصورة باستخدام مرشح RxR، ثم استخدم ترتيب R-1 B-spline على الصورة التي تمت تصفيتها بالحد الأقصى.تضمن خصائص الهيكل المحدب للخط B أنه سيكون أعلى من الصورة الأصلية.

هل يمكنك توضيح ما تقصده برغبتك في أن تكون "سلسة" على نطاق ما؟أيضًا، ما حجم "المنطقة المحلية" التي تريد أن تقارب الحد الأقصى؟

إجابة سريعة وقذرة:المتوسط ​​المرجح للصورة المصدر والحد الأقصى في الإطارات.

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