آلة وضع العلامات لملصقات الشفاه - قم بتوسيع تشوه الأسطوانة برمجيًا

في تطبيقنا هناك ميزة ، مثل ابن صديقة أمي فيفينو - تعريف النبيذ من صورة. تحت الغطاء - استخدام خدمات الطرف الثالث ، Tineye - لتحديد التصنيف الأكثر ملاءمة ، Google Vision - لقراءة النص عليه. هذا الأخير ضروري لتوضيح المنتج الصحيح ، لأنه بحث الصور لا يأخذ في الاعتبار أهمية بعض المناطق ، كقاعدة - هذه معلومات نصية - سنة ونوع النبيذ.

ومع ذلك ، يتم تقليل دقة كلتا الخدمتين بشكل ملحوظ بسبب حقيقة أن التسمية مشوهة بسطح أسطواني.

هذا ملحوظ بشكل خاص في Google Vision - أي نص خارج الجزء المركزي من الملصق غير قابل للقراءة عمليا ، على الرغم من أن الشخص يتعرف عليه بسهولة. في هذه المقالة ، سأصف كيفية عكس التشويه وزيادة دقة التعرف على المنتج.



بادئ ذي بدء ، فكر في ما هو التشويه.



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

الشيء الأكثر إثارة للاهتمام هو أنه لتوسيع الملصق ، ما عليك سوى تحديد 6 علامات (ABCDEF):



وباستخدامها ، قم ببناء شبكة سطح كاملة:



بوجود شبكة سطحية ، يمكننا توسيع كل بلاطة بشكل منفصل ، والحصول على السطح الأصلي:



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

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

المرحلة الأولى - تحويل الصورة إلى أبيض وأسود.

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



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

لتحديد هذه الخطوط ، استخدم تحويل Hough . جوهر التقنية هو أننا نأخذ الكثير من الخطوط التي تمر عبر الشاشة بأكملها ونأخذ في الاعتبار متوسط ​​قيمة البكسل (على سبيل المثال ، نأخذ الخطوط التي تنتقل من أعلى الصورة إلى الأسفل). ننقل هذه القيم إلى مستوى الإحداثيات الجديد ونحصل على شيء مثل خريطة الحرارة. في هذه الخريطة الحرارية ، نبحث عن شكلين قصيرين - وهما الخطان الجانبيان.

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



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

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

س = أ * كوس (ر)
y = b * sin (t)



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

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

ثانيًا ، يعمل تحويل Hough بشكل غير مستقر إلى حد ما في الظروف الصعبة - على سبيل المثال ، عندما تقع الزجاجات المجاورة في الإطار وقد لا يتم اكتشاف حواف الزجاجة المهمة بشكل صحيح.

ثالثًا ، إذا لم يكن الملصق مستطيل الشكل (على سبيل المثال ، بيضاوي الشكل) ، فسيتم اكتشاف العلامات بشكل غير صحيح ، وسيؤدي التحول إلى تشويه الصورة بقوة أكبر.

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

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


All Articles