سؤال

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

صورة لموقع بي بي سي هنا http://www.bbc.co.uk/


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

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

المحلول

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

وركضت تجريبي قدمت houghlines مع مكتبة برمجية مفتوحة للرؤية الحاسوبية وهنا النتيجة على الصورة التي قدم (خطوط الكشف عن باللون الأحمر):
<الفرعية> (المصدر: splintec.com )

نصائح أخرى

وأعتقد أنك تبحث عن المعمم هوغ تحويل .

في رؤية الكمبيوتر هناك خوارزمية دعا المعمم تحويل هاف التي ربما يمكن أن تحل مشكلتك . ينبغي أن يكون هناك فتح شفرة المصدر التي نفذت هذه الخوارزمية. مجرد البحث عنه.

وعلى افتراض انها صورة معقولة خالية من الضوضاء (وليس الفيديو من الشاشة) ثم واحدة من خوارزميات ملء فيضاني بسيطة يجب أن تعمل. قد تحتاج إلى تشغيل تمدد / تآكل على الصورة لقرب الثغرات.

والطريقة العادية لإيجاد خطوط هي هوغ تحويل (ثم تجد خطوط في زوايا الحق) مكتبة برمجية مفتوحة للرؤية الحاسوبية هو أسهل وسيلة.

ونلقي نظرة على هذا الكشف كائن مكتبة برمجية مفتوحة للرؤية الحاسوبية href="https://stackoverflow.com/questions/279410/opencv-object-detection-center-point"> السؤال

وهناك العديد من الطرق المختلفة لمشكلتك. فما استقاموا لكم فاستقيموا استخدام معالجة الصور الصرفي أداة مثل <وأ href = "HTTP: // شبكة الاتصالات العالمية .mmorph.com / "يختلط =" نوفولو noreferrer "> هذا واحد . سيكون لديك المرونة اللازمة لتحديد "المستطيل" حتى شيء لا "مغلقة تماما" (حيث ستفشل خوارزمية التعبئة).

وهناك احتمال آخر يمكن أن يكون لاستخدام تعلم النهج، الذي هو في الأساس أكثر data- مدفوعة من تعريف يحركها مثل سابقتها. سيكون لديك لإعطاء الخوارزمية الخاصة بك عدة "أمثلة" ما هو مستطيل، وسوف تتعلم في نهاية المطاف (مع <لأ href = "http://en.wikipedia.org/wiki/Inductive_bias" يختلط = "نوفولو noreferrer "> التحيز و نسبة الخطأ).

وأعاد من اليسار إلى اليمين حتى تصل بكسل اللون ثم استخدام تعديل خوارزمية ملء الفيضانات. مزيد من المعلومات على البرودة؛ الصقيع ملء الفيضانات @ يكي

ونهج آخر يتمثل في العثور على أي بكسل اللون على الصورة ثم انتقل مع

while(pixel under current is colored)
{
  lowest pixel coordinate = pixel under current
  current = pixel under
}

وثم تفعل نفس صعودا. الآن قد تضطر تعريف سطر واحد. ثم استخدام نهايات خطوط لمطابقة تقريبا خطوط إلى مستطيلات. إذا لم تكن بكسل المثالي الذي يمكن القيام به نوعا من tresholding.

الفيضانات ملء العمل ، أو يمكنك استخدام تعديل ميزة تتبع الخوارزمية.

ما عليك فعله هو:إنشاء مجموعة 2d (أو أي الأخرى d2 بيانات البنية)- يمثل كل صف أفقي خط بكسل على الشاشة و كل عمود خط عمودي

من خلال تكرار كل بكسل ، من اليسار إلى اليمين, و كلما تجد ملونة واحدة إضافة الإحداثيات إلى مجموعة

من خلال تكرار مجموعة findying خطوط تخزين تبدأ وتنتهي بكسل لكل واحد (مختلف هياكل البيانات)

مع العلم أن يبدأ كل سطر هو يسار/أعلى بكسل ، يمكنك بسهولة التحقق لمعرفة ما إذا كان أي 4 خطوط تشكل مستطيل

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

  1. تحويل إلى الثنائية (أيجميع الخطوط هي الأبيض ، والباقي هو أسود)
  2. إجراء ثنائي تمدد (هنا يمكنك جعل كل بكسل يمس الأبيض بكسل في الصورة المصدر أو أبيض بكسل في الصورة المصدر الأبيض.اللمس هو مستقيم فقط (بحيث كل بكسل "اللمسات" بكسل إلى يسار ، يمين ، فوق وتحت ذلك) وهذا ما يسمى "4-توصيل"
  3. كرر الخطوة 3 مرات قليلة إذا الفجوات بين طرفي أكبر ثم 2 بكسل ، ولكن ليس في كثير من الأحيان!
  4. تنفيذ الهيكل العظمي العملية (هنا يمكنك جعل كل بكسل في الصورة الإخراج الأسود إذا كان أبيض بكسل في الصورة المصدر أن يمس واحد على الأقل الأسود بكسل بكسل بيضاء تلامس (في الصورة المصدر) كل لمسة بعضنا البعض.مرة أخرى تلمس تعريف 4-الترابط.انظر النموذج أدناه.
  5. كرر الخطوة 4 حتى الصورة لا تتغير بعد تكرار (كل أبيض بكسل خط ينتهي أو موصلات)

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

العينة:(0=أسود 1=white, بكسل في وسط كل 3x3 كتلة ويجري النظر في مدخلات اليسار ، إخراج الحق)

011 => 011    
011 => 001  all other white pixels touch, so eliminate      
011 => 011    

010 => 010    
010 => 010  top pixel would become disconnected, so leave      
010 => 010    

010 => 010    
010 => 000  touches only one white pixel, so remove     
000 => 000    

010 => 010    
111 => 111  does not touch black pixels, leave    
010 => 010    

010 => 010    
011 => 011  other pixels do not touch. so leave    
000 => 000    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top