تحديد عدد طوابق المنزل من صورته دون التعلم الآلي


في هذه المقالة ، سأعطي ، في رأيي ، حلاً مثيرًا للاهتمام لمشكلة التعرف على الكمبيوتر من الكائنات في صورة دون استخدام التدريب.


المهمة: الحصول على صورة لمبنى متعدد الطوابق ، حاول تحديد عدد الطوابق فيه.


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


تنقسم المهمة عقلانية إلى مرحلتين:


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

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


الخطوة 1. ابحث عن المنطقة مع النوافذ


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


أولاً نقوم بترجمة الصورة بظلال رمادية وقياسها (استخدمت الصور 400x600px)
الصورة
صورة 1 صورة أصلية b / w


كذلك في الحلقة:


  1. التحديد على صورة شريط ضيق نسبيًا (40 بكسل) للارتفاع بالكامل (الشكل 2 ، صورة أقل بدون نقاط)
  2. حساب متوسط ​​السطوع على عرض الشريط. اتضح الخط w لتوزيع السطوع المتوسط ​​على ارتفاع المنزل (الشكل 2 الرسم البياني العلوي). لديها بنية دورية واضحة المعالم مميزة للمنطقة حيث توجد نوافذ. النوافذ الموجودة في الظل أقل تميزًا ، لكن هذا لن يضر.
  3. يتم حساب الفرق dw لقيم w و w التي تم إزاحتها بالمسافة sh. تستخدم طريقة البحث مثل قيمة التحول sh لتحقيق أقصى انخفاض في متوسط ​​الاختلافات dw (الشكل 2 ، الرسم البياني السفلي).
    الصورة
    الصورة
    شكل 2 "شريط" للنوافذ

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


بدون نوافذمع النوافذ
الصورةالصورة

التين .3 التغيير في متوسط ​​السطوع المتوسط ​​مع التحول المتزايد


أدناه هو رمز python3 مع التعليقات.


image = Image.open("raf_data/32.jpg").resize((600,400)) # . img = np.array(image.convert("L"), dtype=float)/255 SEARCH_WIDTH = 40 #    x_opt = [0, 1] #    :      sh_range = range(1,100) #    kmax = 0 #       for x in range(0, img.shape[1]-SEARCH_WIDTH, int(SEARCH_WIDTH/2)): amax = 0 amin = 1 #      for sh in sh_range: #    w = img[:,x:x+SEARCH_WIDTH].mean(axis=1) aim = (pd.DataFrame(w)-pd.DataFrame(w).shift(sh))[sh:].abs().median().values[0] #    aim    sh if aim>amax: amax = aim amin = amax if aim<amin: amin = aim aim_k = amax/amin if aim_k>kmax: x_opt = [x, sh, w] kmax = aim_k print(' : {0},  : {1}'.format(x_opt[0], x_opt[1])) 

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


الخطوة 2. حساب عدد الطوابق


في هذه الخطوة ، تبدأ الصعوبات الرئيسية. قد تكون الإجراءات الأخرى كما يلي:


  1. تقدير ارتفاع المنزل من خلال تحليل منحنى الاختلافات في متوسط ​​السطوع أو استخدام التعلم الآلي). اقسم ارتفاع المنزل على ارتفاع الأرضية واحصل على عدد الطوابق.
  2. في النافذة الموجودة في الخطوة الأولى ، ابحث عن كائنات مشابهة للنوافذ وقم بإحصائها مباشرة ، على سبيل المثال ، في نقاط محددة.

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


الصورة
التين .5 تحديد ارتفاع المنزل باستخدام غابة عشوائية

Source: https://habr.com/ru/post/ar422867/


All Articles