Image Inpainting
يملأ ترميم الصور المناطق المقنّعة أو المتضررة أو المحذوفة في الصورة بمحتوى معقول، باستخدام الأساليب التقليدية أو المعتمدة على الرقع أو GAN أو الانتشار.
ترميم الصور هو ملء منطقة مقنّعة من الصورة، مثل خدش أو جسم أزيل أو رقعة مفقودة، بمحتوى ينسجم مع محيطها. تتلقى كل طريقة مدخلين: الصورة وقناعًا ثنائيًا يحدد وحدات البكسل المطلوب استبدالها، وتُبقي كل ما يقع خارج القناع دون تغيير. يأتي المصطلح من صون الفن، حيث يرمم المختصون اللوحات المتضررة، ونقل مارسيلو بيرتالميو وغيليرمو سابيرو وفيسنت كاسيلس وكولوما باليستر المفهوم إلى الرؤية الحاسوبية الرقمية في SIGGRAPH 2000 من خلال طريقة تمد خطوط تساوي السطوع من حافة الثقب إلى داخله. ووحدات البكسل الواقعة تحت القناع مجهولة، لذا فإن المنطقة المرممة اختلاق معقول دائمًا، وليست استعادة لما كان موجودًا.
الأساليب الكلاسيكية والقائمة على الرقع والمتعلّمة#
تنشر الأساليب التقليدية اللون والحواف إلى الداخل انطلاقًا من حدود القناع. تتضمن OpenCV طريقتين منها في وحدة ترميم الصور: طريقة ألكسندرو تيليا السريعة لعام 2004 القائمة على جبهة الموجة (cv2.INPAINT_TELEA)، وطريقة نافير-ستوكس لعام 2001 التي وضعها برتالْميو وأندريا برتوزي وسابيرو (cv2.INPAINT_NS). تعمل هذه الأساليب جيدًا مع الغبار والخدوش وطبقات النصوص الرقيقة، لكنها تتحول إلى لطخة ضبابية عند التعامل مع الفجوات الكبيرة. يطبّق المقتطف أدناه طريقة تيليا على العدد نفسه من وحدات البكسل المفقودة مرتين، مرةً على هيئة خدوش رفيعة ومرةً على هيئة مربع واحد:
import cv2
import numpy as np
from skimage import data
image = cv2.cvtColor(data.astronaut(), cv2.COLOR_RGB2BGR) # 512x512 sample photo
# Two masks with about the same pixel count: thin scratches and one solid block
scratches = np.zeros(image.shape[:2], np.uint8)
for y in range(40, 512, 40):
cv2.line(scratches, (0, y), (511, y + 30), 255, thickness=2)
block = np.zeros_like(scratches)
side = int(np.sqrt(np.count_nonzero(scratches)))
block[200 : 200 + side, 200 : 200 + side] = 255
for name, mask in [("scratches", scratches), ("block", block)]:
restored = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
# Mean error inside the mask, where every pixel was reconstructed
error = np.abs(restored.astype(int) - image.astype(int))[mask > 0].mean()
print(f"{name}: {np.count_nonzero(mask)} masked pixels, mean error {error:.1f} gray levels")يطبع البرنامج متوسط خطأ قدره 9.1 مستويات رمادية لـ 18,432 بكسلًا من الخدوش، و36.5 لكتلة تضم 18,225 بكسلًا. لكل بكسل خدش جيران معروفون على بُعد بكسل أو اثنين، بينما يبعد مركز الكتلة 67 بكسلًا عن أقرب بكسل حقيقي، لذا تكلّف المساحة المفقودة نفسها أربعة أمثال الخطأ.
تنسخ الأساليب القائمة على الرقع النسيج من مواضع أخرى في الصورة بدلًا من تمويهه. تملأ خوارزمية أنطونيو كريمنيسي وباتريك بيريز وكينتارو توياما القائمة على الأمثلة لعام 2004 فجوةً رقعةً تلو الأخرى، بدءًا من المواضع التي تدخلها حواف قوية؛ وجعل بحث PatchMatch عن أقرب الرقع، الذي وضعه كونلي بارنز وزملاؤه عام 2009، هذا النهج سريعًا بما يكفي للاستخدام التفاعلي، وهو الأساس الذي تقوم عليه ميزة Content-Aware Fill في Photoshop. تتفوق أساليب الرقع مع العشب والطوب والسماء، وتخفق عندما لا يظهر المحتوى المفقود في أي موضع آخر من الصورة.
تستنتج النماذج المتعلّمة المحتوى مما شاهدته أثناء التدريب. درّب ديباك باثاك وزملاؤه مشفّرات السياق (CVPR 2016)، وهي شبكة عصبية التفافية، باستخدام خسارة تنافسية مستعارة من الشبكات التوليدية التنافسية، لإكمال منطقة مركزية محجوبة. تستخدم LaMa من Samsung AI (WACV 2022) التفافات فورييه السريعة، التي يمتد مجالها الاستقبالي ليشمل الصورة بأكملها منذ الطبقة الأولى، وتتدرب على أقنعة عشوائية كبيرة، لذا فهي تكمل الفجوات الكبيرة والبنى المتكررة مثل الأسوار والنوافذ. تملأ نماذج الانتشار الفجوة بإزالة الضوضاء منها، شرط أن تستند إلى وحدات البكسل المرئية، وإلى موجّه اختياريًا: تمنح نقاط تحقق استكمال الصور في Stable Diffusion شبكة U-Net خمس قنوات إدخال إضافية للقناع والتمثيل الكامن للصورة المحجوبة، بينما تستخدم RePaint التي وضعها أندرياس لوغماير وزملاؤه (CVPR 2022) نموذج انتشار غير معدّل، إذ تستبدل المنطقة المعروفة بنسخة مشوشة من الصورة الأصلية في كل خطوة. أدخلت ميزة Generative Fill من Adobe استكمال الصور الموجّه بالنص إلى تحويل النص إلى صورة في Photoshop عام 2023.
الأقنعة وإزالة العناصر#
إزالة الأجسام هي تجزئة الصور يتبعها ترميم الصورة: يحدد القناع الجسم، ويملأ الترميم الفراغ الذي يتركه. تترك الأقنعة المرسومة بإحكام حول الجسم بكسلات حافته وظله وانعكاسه، فتبدو كأشباح؛ لذا يوسّع المحررون القناع بضعة بكسلات ويمدّونه ليشمل الظل. تنتج تجزئة الكائنات قناعًا واحدًا لكل جسم، ما يجعلها المصدر المعتاد لأقنعة الإزالة، كما تحوّل النماذج القابلة للتوجيه مثل SAM 2 النقرة إلى قناع للأجسام التي لا تندرج ضمن أي قائمة فئات. تعيد نماذج YOLO26 التجزئة مخطط كل جسم في صورة مضلع ضمن result.masks.xy، والذي تحوّله cv2.drawContours مع cv2.FILLED إلى قناع نقطي للترميم، وهي الخطوة نفسها التي يستخدمها دليل عزل كائنات التجزئة لقص الأجسام.
يضيف استكمال الفيديو بُعد الزمن: يجب أن يتطابق الملء بين الإطارات وإلا سيومض، لذا تنشر أدوات تحرير الفيديو بالذكاء الاصطناعي الأقنعة باستخدام التتبّع، وتستعين ببكسلات الخلفية التي تكشفها الإطارات المجاورة أثناء حركة الكاميرا.
المهام ذات الصلة#
- التوسيع خارج حدود الصورة: يستخدم النماذج نفسها لتمديد الصورة إلى ما بعد حدودها الأصلية، مع اعتبار مساحة اللوحة الجديدة قناعًا.
- رفع الدقة: يضيف تفاصيل إلى الصورة كلها بدقة أعلى، من دون قناع.
- إزالة الضوضاء: تزيل الضوضاء المنتشرة على كل بكسل مع الحفاظ على المشهد، من دون قناع أيضًا.
- استيفاء الإطارات: ينشئ إطارات وسيطة كاملة للفيديو انطلاقًا من الإطارات الواقعة على جانبيها.
التطبيقات ومصدر البيانات#
تحدد أقنعة ترميم الصور الشقوق والغبار والتمزقات في الصور المطبوعة الممسوحة ضوئيًا، ويجري ترميم الأفلام الأمر نفسه إطارًا بإطار للخدوش في اللقطات الأرشيفية. وتزيل عمليات التنقيح وتصوير المنتجات العناصر الشاردة وخطوط الكهرباء والعيوب. في تحليل صور الأقمار الصناعية، يُعد ملء الفجوات مشكلة تقليدية في استكمال الصور: فقد تعطل مصحح خطوط المسح في Landsat 7 في 31 مايو 2003، تاركًا خطوطًا إسفينية الشكل تغطي نحو 22 بالمئة من كل مشهد لاحق.
يُقيّم استكمال الصور المتعلّم على صور محجوبة للاختبار بأقنعة اصطناعية، باستخدام مسافة فريشيه لبدء الصور (FID) لقياس الواقعية، إذ قد يختلف الملء الجيد عن وحدات البكسل الأصلية ويظل صحيحًا. وتجعل الواقعية نفسها استكمال الصور أداةً لإنشاء التزييف العميق وإزالة العلامات المائية؛ كما أن البنية المختلقة في الصور الطبية أو العلمية أو الجنائية قد تغيّر تشخيصًا أو حكمًا. تسجّل بيانات اعتماد المحتوى هذه التعديلات في بيانات وصفية موقّعة، وتُرفق Adobe هذه البيانات بالصور المعدّلة باستخدام Generative Fill.










