سؤال

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

هل هناك مكتبة / أداة بالفعل يفعل ذلك ؟ كيف يمكنك تنفيذ ذلك ؟

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

المحلول

هذا يعتمد كليا على كيفية ذكية أنت تريد الخوارزمية أن يكون.

على سبيل المثال, هنا بعض المسائل:

  • اقتصاص الصور مقابلوهو غير مزروعة صورة
  • صور مع نص وأضاف مقابلآخر من دون
  • الصور المتطابقة

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

  1. مقياس شيء صغير مثل 64 × 64 أو 32 × 32, تجاهل الجانب نسبة استخدام الجمع بين القياس خوارزمية بدلا من أقرب بكسل
  2. نطاق نطاقات اللون بحيث أحلك الأسود وأخف أبيض
  3. استدارة وانعكاس الصورة بحيث lighest هو اللون العلوي الأيسر ثم الأيمن العلوي بجوار الداكنة أسفل اليسار هو التالي أغمق (قدر الإمكان طبعا)

تحرير A الجمع بين القياس الخوارزمية واحد هو أن عند زيادة 10 بكسل واحد سوف تفعل ذلك باستخدام دالة التي تأخذ لون كل أولئك 10 بكسل و يجمع بينهما في واحد.يمكن القيام به مع خوارزميات مثل المتوسط ، يعني القيمة أو أكثر تعقيدا مثل التكعيبي المفاتيح.

ثم حساب متوسط المسافة بكسل-بكسل بين الصورتين.

للبحث الممكن مباراة في قاعدة بيانات مخزن بكسل الألوان الفردية الأعمدة في قاعدة البيانات مؤشر مجموعة منهم (ولكن ليس كل شيء ، إلا إذا كنت تستخدم صغيرة جدا الصورة), و هل استعلام الذي يستخدم مجموعة لكل بكسل قيمة ، أي.كل صورة حيث بكسل في صورة صغيرة بين -5 و +5 من الصورة التي تريد البحث عنها.

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

نصائح أخرى

'الكلاسيكية' طريقة قياس هذا هو كسر صورة تصل في بعض الكنسي عدد من أقسام (أقول 10x10) ثم الحوسبة الرسم البياني RGB القيم داخل كل خلية ومقارنة المقابلة رسوم بيانية.هذا النوع من الخوارزمية هو المفضل لأن كل من بساطته و انه ثبات القياس و (الصغيرة!) الترجمة.

استخدام تطبيع لون الرسم البياني.(قراءة قسم التطبيقات هنا), وتستخدم عادة في استرجاع الصور/مطابقة أنظمة و هي طريقة قياسية مطابقة الصور التي هي موثوقة جدا ، سريع نسبيا و من السهل جدا لتنفيذ.

أساسا لون الرسم البياني التقاط اللون توزيع الصورة.ثم يمكن أن يكون هذا مقارنة مع صورة أخرى لمعرفة ما إذا كان لون التوزيعات المباراة.

هذا النوع من مطابقة جدا resiliant إلى القياس (مرة الرسم البياني هو تطبيع) و دوران/تحويل/حركة.... الخ

تجنب بكسل-بكسل المقارنات كما إذا كانت الصورة استدارة/تحول قليلا فإنه قد يؤدي إلى فرق كبير يتم الإبلاغ عنها.

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

لا ترميز الفيديو خوارزميات مثل MPEG حساب الفرق بين كل إطار من الفيديو بحيث أنها يمكن أن مجرد ترميز دلتا ؟ كنت قد ننظر في كيفية ترميز الفيديو خوارزميات حساب تلك الخلافات الإطار.

انظر هذه صورة مفتوحة المصدر تطبيق البحث http://www.semanticmetadata.net/lire/.ويصف العديد من تشابه الصور algorighms ، ثلاثة منها من MPEG-7 معيار:ScalableColor, ColorLayout, EdgeHistogram و لون السيارات Correlogram.

هل يمكن استخدام نقية الرياضية نهج O(n^2), لكنه لن يكون مفيدا إلا إذا كنت متأكدا من أنه لا يوجد أي تعويض أو شيء من هذا القبيل.(على الرغم من أن إذا كان لديك عدد قليل من الأجسام متجانسة تلوين وسوف لا تزال تعمل بشكل جيد.)

على كل حال فكرة هو حساب تطبيع دوت المنتج من اثنين المصفوفات.C = sum(Pij*Qij)^2/(sum(Pij^2)*sum(Qij^2)).

هذه الصيغة هي في الواقع "جيب تمام" الزاوية بين المصفوفات (غريب).أكبر التشابه (دعونا نقول Pij=Qij), ج 1, ولو أنهم مختلفة تماما ، دعونا نقول لكل i,j Qij = 1 (تجنب صفر-تقسيم) ، Pij = 255, ثم على حجم nxn, أكبر n سوف يكون أقرب إلى الصفر سوف تحصل.(عن طريق حساب تقريبي: C=1/n^2).

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

روبي الحل يمكن وجدت هنا

من التمهيدي:

Phashion هو روبي التفاف حول pHash مكتبة "الإدراك الحسي تجزئة" ، الذي يكتشف مكررة و بالقرب من تكرار ملفات الوسائط المتعددة

كيفية قياس التشابه بين الصورتين يعتمد كليا على ما كنت ترغب في التدبير ، على سبيل المثال:التباين والسطوع ، طريقة ، الضوضاء...ومن ثم اختيار أفضل مناسبة مقياس التشابه هناك بالنسبة لك.يمكنك الاختيار من جنون (يعني المطلق فرق) ، MSD (يعني تربيع الفرق) التي هي جيدة لقياس سطوع...هناك هو متاح أيضا CR (معامل الارتباط) الذي هو جيد في تمثيل العلاقة بين اثنين من الصور.يمكنك أيضا اختيار من الرسم البياني على أساس التشابه تدابير مثل SDH (الانحراف المعياري للفرق صورة الرسم البياني) أو multimodality التشابه تدابير مثل مي (تبادل المعلومات) أو NMI (تطبيع المعلومات المتبادلة).

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

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

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

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

قد ننظر إلى رمز أداة مفتوحة المصدر findimagedupes, ، على الرغم من أنه يبدو أنه مكتوب في بيرل لذا لا أستطيع أن أقول كيف سيكون من السهل تحليل...

قراءة findimagedupes الصفحة التي أحببت ، أرى أن هناك C++ تنفيذ نفس الخوارزمية.ويفترض هذا سوف يكون أسهل للفهم.

ويبدو يمكنك أيضا استخدام gqview.

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

وأتساءل عما إذا كان لديهم أي المكتبات أو التعليمات البرمجية المتكررة على بلوق.

إلى التوسع في Vaibhav مذكرة hugin هو مفتوح المصدر 'autostitcher' التي ينبغي أن يكون بعض الضوء على المشكلة.

هناك برامج على أساس المحتوى استرجاع الصور التي لا (جزئيا) ما تحتاج إليه.جميع المراجع تفسيرات مرتبطة من موقع المشروع و هناك أيضا نص قصير كتاب (Kindle): ليرة

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

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

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

للمقارنة وقد بكسل-بكسل مقارنة الصور ، على سبيل المثال ،

enter image description here

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