অনেক চিত্রের মিলের তুলনা করতে চিত্রের ফিঙ্গারপ্রিন্ট


95

খুব সহজেই প্রতিটি চিত্রের সাথে তুলনা করতে আমার অনেকগুলি চিত্রের (প্রায় 100.000 বিদ্যমান, প্রতিদিন 1000 নতুন, আরজিবি, জেপিজি, সর্বাধিক আকার 800x800) তৈরি করতে হবে। আমি বাইনারি তুলনা পদ্ধতিগুলি ব্যবহার করতে পারি না কারণ প্রায় অনুরূপ চিত্রগুলিও স্বীকৃত হওয়া উচিত।

সেরা একটি বিদ্যমান গ্রন্থাগার হবে তবে বিদ্যমান অ্যালগোরিদমের কিছু ইঙ্গিতও আমাকে অনেক সাহায্য করবে।


4
ভাষার জন্য গ্রন্থাগারটি থাকা উচিত?
বেন এস

উত্তর:


57

সাধারণ হ্যাশিং বা সিআরসি গণনা অ্যালগরিদমগুলি চিত্রের ডেটা দিয়ে ভাল কাজ করে না। তথ্যের মাত্রিক প্রকৃতি অবশ্যই আমলে নেওয়া উচিত।

আপনার যদি অত্যন্ত দৃust় ফিঙ্গারপ্রিন্টিংয়ের দরকার হয়, যেমন এফাইন ট্রান্সফর্মেশনগুলি (স্কেলিং, রোটেশন, অনুবাদ, উল্টানো) হিসাবে গণ্য হয়, আপনি চিত্রের ডেটার একটি আদর্শ ম্যাপিং তৈরি করতে ইমেজ উত্সে একটি রেডন রূপান্তর ব্যবহার করতে পারেন - প্রতিটি চিত্রের সাথে এটি সংরক্ষণ করুন এবং তারপরে ঠিক আঙুলের ছাপগুলি তুলনা করুন। এটি একটি জটিল অ্যালগরিদম এবং হৃদয়ের হতাশার জন্য নয়।

কয়েকটি সহজ সমাধান সম্ভব:

  1. ফিঙ্গারপ্রিন্ট হিসাবে চিত্রের জন্য একটি আলোকিত হিস্টোগ্রাম তৈরি করুন
  2. ফিঙ্গারপ্রিন্ট হিসাবে প্রতিটি চিত্রের ছোট আকারের সংস্করণ তৈরি করুন
  3. উন্নত তুলনা মানের জন্য একটি সংকর পদ্ধতির মধ্যে কৌশল (1) এবং (2) একত্রিত করুন

একটি আলোকসজ্জা হিস্টোগ্রাম (বিশেষত একটি যা আরজিবি উপাদানগুলিতে বিভক্ত) একটি চিত্রের জন্য যুক্তিসঙ্গত ফিঙ্গারপ্রিন্ট - এবং বেশ দক্ষতার সাথে প্রয়োগ করা যেতে পারে। অন্যের থেকে একটি হিস্টোগ্রাম বিয়োগ করে একটি নতুন হিস্টগ্রাম তৈরি হবে যা আপনি ঠিক করতে পারেন দুটি চিত্রের অনুরূপ চিত্র নির্ধারণ করতে। হিস্টোগ্রামগুলি, কারণ একমাত্র বৈদ্যুতিনতা / রঙের তথ্য বিতরণ এবং ঘটনাকে যথেষ্ট ভালভাবে পরিচালনা করে। যদি আপনি প্রতিটি রঙের উপাদানটির আলোকসজ্জা তথ্যকে 8-বিট মানের নিচে পরিমাণে করে থাকেন তবে প্রায় কোনও যুক্তিসঙ্গত আকারের চিত্রের আঙুলের ছাপের জন্য 768 বাইট স্টোরেজই যথেষ্ট। যখন কোনও চিত্রের রঙিন তথ্য ম্যানিপুলেট করা হয় তখন লাইটোনিজিটি হিস্টোগ্রামগুলি মিথ্যা নেতিবাচক উত্পাদন করে। আপনি যদি কনট্রাস্ট / ব্রাইটনেস, পোস্টেরাইজ, কালার শিফটিং, লুমিনোটি তথ্য পরিবর্তনের মতো রূপান্তরগুলি প্রয়োগ করেন।

আকারযুক্ত চিত্র ব্যবহার করা চিত্রের তথ্যের ঘনত্বকে এমন একটি স্তরে হ্রাস করার অন্য উপায় যা তুলনা করা সহজ। মূল চিত্রের আকারের 10% এর নীচে হ্রাসগুলি ব্যবহারের জন্য প্রচুর পরিমাণে তথ্য হারাতে পারে - সুতরাং একটি 800x800 পিক্সেল চিত্রটি 80x80 এ ছোট করা যায় এবং এখনও উপযুক্ত আঙুলের ছাপ দেওয়ার জন্য পর্যাপ্ত তথ্য সরবরাহ করে। হিস্টোগ্রামের ডেটা থেকে পৃথক, যখন উত্সের রেজোলিউশনে ভিন্ন ভিন্ন অনুপাত থাকে তখন আপনাকে চিত্রের ডেটা অ্যানিসোট্রপিক স্কেলিং করতে হয়। অন্য কথায়, একটি 300x800 চিত্রকে একটি 80x80 থাম্বনেইলে হ্রাস করার ফলে চিত্রটির বিকৃতি ঘটে, যেমন যখন 300x500 চিত্রের সাথে তুলনা করা হয় (যা খুব অনুরূপ) মিথ্যা নেতিবাচক কারণ হতে পারে। থাম্বনেইল ফিঙ্গারপ্রিন্টগুলিও প্রায়শই মিথ্যা নেতিবাচক উত্পাদন করে যখন অ্যাফাইন ট্রান্সফর্মেশনগুলি জড়িত থাকে। আপনি যদি কোনও চিত্র উল্টান বা ঘোরান,

উভয় কৌশল সংমিশ্রণ আপনার বেট হেজে এবং মিথ্যা ইতিবাচক এবং মিথ্যা নেতিবাচক উভয় এর উপস্থিতি হ্রাস করার একটি যুক্তিসঙ্গত উপায়।


সিআরসি সম্পর্কিত, সম্মত। যাইহোক, যদি কেউ এটি ব্যবহার করতে চায় তবে
সিআরসি

5
আপনি এমডি 5 ব্যবহার করতে চাইবেন না কারণ এটি একতরফা ক্রিপ্টোগ্রাফিক হ্যাশ। আপনাকে একটি হ্যাশ পদ্ধতি ব্যবহার করতে হবে যা একই ধরণের ইনপুটটির জন্য একই ফলাফল আনবে যাতে আপনি হ্যাশগুলির মধ্যে পার্থক্যগুলি সরাসরি তুলনা করতে পারেন।
এজে কুইক

34

এখানে প্রস্তাবিত স্কেল ডাউন ডাউন চিত্রগুলির চেয়ে অনেক কম অ্যাড-হক পদ্ধতি রয়েছে যা তাদের সাধারণ স্বাদ ধরে রাখে তবে যা চলছে তার জন্য আরও গা mathe় গাণিতিক ভিত্তি দেয়।

চিত্রটির একটি হার ওয়েভলেট নিন । মূলত হর ওয়েভলেট হ'ল নিম্ন রেজোলিউশন ইমেজ থেকে প্রতিটি উচ্চতর রেজোলিউশনের চিত্রের পার্থক্যের উত্তরাধিকারী, তবে আপনি মিপম্যাপের 'ট্রি'তে কতটা গভীর রয়েছেন তা দ্বারা ভারিত। গণনা সোজা। তারপরে একবার আপনি হর ওয়েভলেট যথাযথভাবে ওজনযুক্ত হয়ে গেলে কে এর বৃহত্তম সহগগুলি (পরম মানের হিসাবে) বাদ দিন, ভেক্টরটিকে স্বাভাবিক করুন এবং এটি সংরক্ষণ করুন।

যদি আপনি সেই দুটি সাধারণ ভেক্টরগুলির বিন্দু পণ্য নেন তবে এটি 1 টি প্রায় অভিন্ন হওয়ার সাথে মিলের একটি পরিমাপ দেয়। আমি এখানে আরও তথ্য পোস্ট ।


20

আপনার অবশ্যই ফ্যাশটি একবার দেখা উচিত

চিত্র তুলনার জন্য এই পিএইচপি প্রকল্প রয়েছে: https://github.com/kennethrapp/phasher

এবং আমার ছোট জাভাস্ক্রিপ্ট ক্লোন: https://redaktor.me/phasher/demo_js/index.html

দুর্ভাগ্যক্রমে এটি "বিটকাউন্ট" ভিত্তিক তবে ঘোরানো চিত্রগুলি স্বীকৃতি দেবে। জাভাস্ক্রিপ্টের আরেকটি পদ্ধতি ছিল ক্যানভাসের সাহায্যে চিত্র থেকে একটি আলোকিত হিস্টোগ্রাম তৈরি করা। আপনি ক্যানভাসে একটি বহুভুজ হিস্টোগ্রামটি কল্পনা করতে পারেন এবং আপনার ডাটাবেসে সেই বহুভুজটির তুলনা করতে পারেন (যেমন মাইএসকিউএল স্থানিক ...)


এটি কি এনপিএম? আমি জাভাস্ক্রিপ্ট ব্যবহার করে দুটি চিত্রের মধ্যে সাদৃশ্য তুলনা করার একটি উপায় খুঁজছি
chovy

এইচএম, আমি ভেবেছিলাম এটি "এনপিএমের জন্য সস্তা"। এটি সত্যিই স্ক্র্যাচ থেকে দ্রুত লেখা একটি ডেমো ছিল। তবে উত্সটি দিয়ে যা খুশি তা নির্দ্বিধায় করুন। আমি যদি এটি তৈরি করতে পারি তবে আমি পরে এটি সন্ধান করব এবং এটি গিথুব গিথুব / রেডাক্টরের দিকে ঠেলে দেব ...
সেবিলাসে

@ সেবাস্তিয়ানলাস আমি আপনার জেএস পোর্টটি সন্ধান করেছি এবং এটি দুর্দান্ত! আমি কেবল চাই যে আপনি Compare()প্রথমে চিত্রটি ডাউনলোড করার পরিবর্তে কোনও চিত্র ইউআরআই ফাংশনে পাস করতে পারেন । এছাড়াও, আমার পরীক্ষা থেকে, "খুব অনুরূপ চিত্রের" প্রান্তিকতাটি 90% হওয়া উচিত,> 98% নয়।
thdoan

12

অনেক দিন আগে আমি এমন একটি সিস্টেমে কাজ করেছি যার কিছু অনুরূপ বৈশিষ্ট্য ছিল এবং এটি আমরা অনুসরণ করা অ্যালগরিদমের একটি সন্নিবিষ্টকরণ:

  1. জোনগুলিতে ছবি ভাগ করুন। আমাদের ক্ষেত্রে আমরা 4: 3 রেজোলিউশন ভিডিও নিয়ে কাজ করছি, সুতরাং আমরা 12 টি অঞ্চল ব্যবহার করেছি। এটি করা উত্স চিত্রগুলির রেজোলিউশনটিকে চিত্রের বাইরে নিয়ে যায়।
  2. প্রতিটি জোনের জন্য, একটি সামগ্রিক রঙ গণনা করুন - জোনের সমস্ত পিক্সেলের গড়
  3. পুরো চিত্রের জন্য, একটি সামগ্রিক রঙ গণনা করুন - সমস্ত জোনের গড়

সুতরাং প্রতিটি চিত্রের জন্য, আপনি n + 1পূর্ণসংখ্যার মানগুলি সংরক্ষণ করছেন , যেখানেn অঞ্চলগুলি ট্র্যাক করছেন তার সংখ্যাটি ।

তুলনা করার জন্য, আপনাকে পৃথকভাবে প্রতিটি রঙের চ্যানেলটিও দেখতে হবে।

  1. সামগ্রিক চিত্রের জন্য, সামগ্রিক রঙগুলির জন্য রঙ চ্যানেলগুলি কোনও নির্দিষ্ট প্রান্তের মধ্যে রয়েছে কিনা তা তুলনা করুন - বলুন, 10%
  2. চিত্রগুলি প্রান্তিকের মধ্যে থাকলে, পরবর্তী প্রতিটি জোনের তুলনা করুন। যদি সমস্ত অঞ্চলও প্রান্তিকের মধ্যে থাকে তবে চিত্রগুলি যথেষ্ট শক্তিশালী ম্যাচ যা আপনি কমপক্ষে আরও তুলনার জন্য তাদের পতাকাঙ্কিত করতে পারেন।

এটি আপনাকে মেলে না এমন চিত্রগুলি দ্রুত ফেলে দিতে দেয়; আপনি আরও জোন ব্যবহার করতে পারেন এবং / অথবা শক্তিশালী ম্যাচের আত্মবিশ্বাস পেতে পুনরাবৃত্তভাবে অ্যালগরিদম প্রয়োগ করতে পারেন।


6

আইসি এর উত্তরের অনুরূপ - আপনি একাধিক রেজোলিউশনে চিত্রগুলির তুলনা করার চেষ্টা করতে পারেন। সুতরাং প্রতিটি চিত্র 1x1, 2x2, 4x4 .. 800x800 হিসাবে সংরক্ষণ করা হবে। যদি সর্বনিম্ন রেজোলিউশনটি মেলে না (একটি থ্রেশহোল্ডের সাপেক্ষে), আপনি অবিলম্বে এটি প্রত্যাখ্যান করতে পারেন। যদি এটি মেলে না, আপনি তাদের পরবর্তী উচ্চতর রেজোলিউশনে তুলনা করতে পারেন, ইত্যাদি on

এছাড়াও - যদি চিত্রগুলি মেডিক্যাল ইমেজগুলির মতো কোনও অনুরূপ কাঠামো ভাগ করে দেয় তবে আপনি সেই কাঠামোটিকে তুলনায় আরও সহজ / দ্রুততর বর্ণনাতে বের করতে সক্ষম হতে পারেন।


আমি মনে করি কোনও ধরণের গাছ অনুসন্ধানের জন্য এই মানচিত্রগুলি। এটা মজার.
আন্দ্রে লাসলো

3

সুতরাং আপনি "ফিঙ্গারপ্রিন্ট ম্যাচিং" করতে চান যা "চিত্রের মিল" এর চেয়ে বেশ আলাদা। ফিঙ্গারপ্রিন্টগুলির বিশ্লেষণটি গত 20 বছরে গভীরভাবে অধ্যয়ন করা হয়েছে এবং সঠিক সনাক্তকরণের হার ( এফএআর এবং এফআরআর ব্যবস্থা - মিথ্যা স্বীকৃতি হার এবং মিথ্যা প্রত্যাখ্যান হারের ক্ষেত্রে ) নিশ্চিত করার জন্য কয়েকটি আকর্ষণীয় অ্যালগরিদম তৈরি করা হয়েছে ।

আমি আপনাকে এলএফএ (স্থানীয় বৈশিষ্ট্য বিশ্লেষণ) শনাক্ত করার কৌশলগুলির শ্রেণীর দিকে আরও ভালভাবে নজর দেওয়ার পরামর্শ দিই , বেশিরভাগ সংক্ষিপ্ত পরিদর্শনে নির্মিত। মিনুটিয় যে কোনও ফিঙ্গারপ্রিন্টের সুনির্দিষ্ট বৈশিষ্ট্য, এবং বিভিন্ন শ্রেণিতে শ্রেণিবদ্ধ করা হয়েছে। একটি ক্ষুদ্র মানচিত্রে একটি রাস্টার চিত্রের ম্যাপিং হ'ল প্রকৃতপক্ষে বেশিরভাগ সরকারী কর্তৃপক্ষ অপরাধী বা সন্ত্রাসবাদীদের দায়ের করার জন্য যা করে।

আরও রেফারেন্সের জন্য এখানে দেখুন


আপনি যদি জানেন যে কোনও বায়োমেট্রিক সিস্টেমের জন্য যদি আপনার গাওসিয়ান স্কোরের স্কোর বিতরণ থাকে তবে কীভাবে ভুয়া স্বীকৃতি হার গণনা করতে হয়?
গবিয়াস কফফি

4
ওপি "অনেক চিত্রের আঙুলের ছাপ তৈরি করতে" চায়। মানুষের আঙুলের ছাপগুলির চিত্রগুলি তুলনা করবেন না।
নবীন

3

২০১৫ সাল পর্যন্ত (ভবিষ্যতে ফিরে ... এই ২০০৯ প্রশ্নে যা এখন গুগলে উচ্চপদস্থ) ইমেজের সাদৃশ্য ডিপ লার্নিং কৌশলগুলি ব্যবহার করে গণনা করা যেতে পারে। অটো এনকোডারস হিসাবে পরিচিত অ্যালগরিদমের পরিবার একটি ভেক্টর উপস্থাপনা তৈরি করতে পারে যা মিলের জন্য অনুসন্ধানযোগ্য। এখানে একটি ডেমো আছে


বাইনারি ডেটা থেকে ফিঙ্গারপ্রিন্ট চিত্র তৈরি করা সম্ভব?
23:56

অবশ্যই, এই কাজের জন্য এএনএন রয়েছে, তবে আপনার উত্তরটি আসলে কোনও উত্তর দেয় বলে মনে হচ্ছে না। প্রশ্ন: এটি কীভাবে হয়? লিঙ্কযুক্ত পৃষ্ঠাটি কোনও তথ্য প্রকাশ করে না এবং "অটো এনকোডারস" শব্দটি কোনওভাবেই সহায়তা করে না।
সাইমন স্টেইনবার্গার

মূল প্রশ্নটি "এটি কীভাবে হয়?" বলে না, তবে এটি বলে যে "বিদ্যমান অ্যালগরিদমের কিছু ইঙ্গিত আমাকে অনেক সাহায্য করবে" যা আমি সরবরাহ করেছি।
অ্যালেক্স আর

আপনি একটি অ্যালগরিদম একটি "ইঙ্গিতটি" -এর প্রতি সংযোগ না, আসলে লিঙ্ক পৃষ্ঠাটি জানাচ্ছে, "এটা কাজ করে, কিন্তু কেউ জানে না কেন দয়া করে অত্যধিক ফলাফলের সম্পর্কে আশা করবেন না।" ...
odyth

এই ডিপলাইনিং ৪ জ.org / ডিডিপাউটেনকোডার# ইউজ-কেসগুলি কীভাবে অটো এনকোডারগুলিকে আঙুলের মুদ্রণ তৈরি করতে ব্যবহার করা যেতে পারে এবং তারপরে আপনি কীভাবে সেই আড়াআড়িটি একইর উপর ভিত্তি করে অন্যান্য চিত্রের মিল খুঁজে পেতে সেই আঙুলের মুদ্রণটি কীভাবে ব্যবহার করতে পারেন সে সম্পর্কে আরও স্পষ্টতা সরবরাহ করে।
অষ্টম

2

আপনি যে উপায়টি করতে পারেন তা হ'ল চিত্রটির আকার পরিবর্তন এবং রেজোলিউশনটিকে উল্লেখযোগ্যভাবে (200x200 তে?) তুলনা করার জন্য একটি ছোট (পিক্সেল-গড়) সংস্করণ সংরক্ষণ করা। তারপরে সহনশীলতার প্রান্তিক সংজ্ঞা নির্ধারণ করুন এবং প্রতিটি পিক্সেলটির সাথে তুলনা করুন। সমস্ত পিক্সেলের আরজিবি যদি সহনশীলতার মধ্যে থাকে তবে আপনি একটি মিল পেয়ে গেছেন।

আপনার প্রাথমিক রান ও (এন ^ 2) হয় তবে আপনি যদি সমস্ত ম্যাচকে ক্যাটালগ করেন তবে প্রতিটি নতুন চিত্র তুলনা করার জন্য একটি ও (এন) অ্যালগরিদম (আপনার কেবলমাত্র এটি পূর্বে প্রতিটি সন্নিবেশিত চিত্রের সাথে তুলনা করতে হবে)। চিত্রগুলির তালিকা তুলনামূলকভাবে বড় হওয়ার সাথে সাথে এটি শেষ পর্যন্ত ভেঙে যাবে তবে আমি মনে করি আপনি কিছুক্ষণের জন্য নিরাপদ।

400 দিন চলার পরে, আপনার 500,000 চিত্র থাকবে যার অর্থ (চিত্রটি পুনরায় আকার দেওয়ার জন্য সময়টি ছাড় করা) 200(H)*200(W)*500,000(images)*3(RGB)= 60,000,000,000 তুলনা। যদি প্রতিটি চিত্র হুবহু মিলে যায়, আপনি পিছনে পড়তে যাচ্ছেন, তবে সম্ভবত এটি ঠিক হবে না, তাই না? মনে রাখবেন, একক তুলনা আপনার প্রান্তিকের বাইরে যাওয়ার সাথে সাথে আপনি কোনও চিত্রকে ম্যাচ হিসাবে ছাড় দিতে পারেন।


2

আপনি কি আক্ষরিক অর্থে প্রতিটি চিত্রের সাথে অন্যের তুলনা করতে চান? আবেদন কি? সম্ভবত আপনার নির্দিষ্ট বর্ণনাকারীর উপর ভিত্তি করে কিছু ধরণের ইনডেক্সিং এবং চিত্রগুলির পুনরুদ্ধার প্রয়োজন? তারপরে উদাহরণস্বরূপ আপনি মাল্টিমিডিয়া সামগ্রী বিবরণ ইন্টারফেসের জন্য MPEG-7 স্ট্যান্ডার্ডটি দেখতে পারেন। তারপরে আপনি বিভিন্ন চিত্র বর্ণনাকারীর সাথে তুলনা করতে পারেন, যা এতটা সঠিক না তবে খুব দ্রুত হবে।


হয়তো মধ্যে একটা চয়েস সম্পূর্ণ এবং সীমিত
জনি

2

আইফোন চিত্রের তুলনা এবং চিত্রের মিলের বিকাশের জন্য দেখুন: http://sites.google.com/site/imagecompistance/

এটি কার্যকরভাবে দেখতে, আইটিউনস অ্যাপস্টোরে আইবুয় ভিজ্যুয়াল অনুসন্ধান দেখুন।


0

দেখে মনে হচ্ছে বিশেষায়িত চিত্র হ্যাশিং অ্যালগরিদমগুলি সক্রিয় গবেষণার একটি ক্ষেত্র তবে সম্ভবত চিত্রের বাইটগুলির একটি সাধারণ হ্যাশ গণনাটি কৌশলটি করবে।

আপনি কি একই উত্স থেকে প্রাপ্ত চিত্রগুলি অনুসন্ধানের চেয়ে বাইট-অভিন্ন চিত্র খুঁজছেন তবে ভিন্ন ফর্ম্যাট বা রেজোলিউশন হতে পারে (যা আমাকে বরং একটি কঠিন সমস্যা হিসাবে আঘাত করে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.