চিত্র প্রক্রিয়াজাতকরণ: ছবিতে একটি চতুর্ভুজ সাইনবোর্ড কীভাবে সনাক্ত করবেন?


14

মোবাইল ফোন ব্যবহার করে ছবি তোলা থেকে আমি কীভাবে চতুর্ভুজ সাইনবোর্ড সনাক্ত করতে পারি? আমি কীভাবে আয়তক্ষেত্রের মতো আকারগুলি সনাক্ত করতে পারি? বৃত্তাকার আয়তক্ষেত্র (আকৃতির কোণগুলির পরিবর্তে গোলাকার কোণ)?

আমি ওপেনসিভি.ওয়ার্পার ব্যবহার করছি তবে আমি এতে নতুন।

ধন্যবাদ।

এখানে নমুনাটি রয়েছে: Alt পাঠ্য http://www.freeimagehosting.net/uploads/b03442fd36.png

Alt পাঠ্য http://www.freeimagehosting.net/uploads/e6b36040e8.png

সেখানে শব্দ এবং অনেকগুলি লাইনের কারণে আমি সাইনবোর্ডের সীমানা রেখাটি কোনটি নির্ধারণ করতে পারছি না। কখনও কখনও আমি hough রূপান্তর পরে লাইনের সীমানা খুঁজে পেতে পারেন। আমি আটকা পড়েছি .... এই জাতীয় দৃশ্যে ...

এটি মোবাইল ফোনের ক্যামেরা থেকে তোলা 2 টি কাঁচা ছবি

Alt পাঠ্য http://www.freeimagehosting.net/uploads/6dbd613edf.jpg Alt পাঠ্য http://www.freeimagehosting.net/uploads/720da20080.jpg

সাইনবোর্ডটি বের করার জন্য আমি কীভাবে চিত্রটি প্রসেস করতে পারি তা দেখতে আমার আপনার পরামর্শ দরকার?

আপনাকে অনেক ধন্যবাদ


2
: মূলশব্দ: opencv, গোছ অনুরুপগুলি রুপান্তর stackoverflow.com/questions/1817442 stackoverflow.com/questions/2068013

হ্যাঁ, হুফট এফটিডব্লিউ রূপান্তর!

তবে ছবিটিতে গোলমাল আছে যে কীভাবে সাইনবোর্ডের সীমানা তা আমি কীভাবে জানতে পারি

@ xabi123: খাড়া রূপান্তর, চৌকাঠ, সীমা পড়ুন

1
আপনি একটি নমুনা ছবি ভাগ করতে পারেন?

উত্তর:


7

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

তবে: আপনি যে চিহ্নটি সন্ধান করছেন তাতে অন্যান্য বৈশিষ্ট্য রয়েছে যা সনাক্ত করা সহজ হওয়া উচিত:

  • সেখানে সাইন ব্যাকগ্রাউন্ডে (প্রায়) ধ্রুব উজ্জ্বলতা রয়েছে
  • এটি চিত্রের তুলনামূলকভাবে বড় অঞ্চল নেয়
  • এটি চিত্রের কেন্দ্রের কাছে

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

প্রথমত, আমি প্রতিটি পিক্সেলটিতে গ্রেডিয়েন্ট বিস্তৃতি সনাক্ত করতে গসিয়ান ডেরিভেটিভ ফিল্টার ব্যবহার করি। গাউসিয়ান ডেরিভেটিভ ফিল্টারটির বিস্তৃত অ্যাপারচার রয়েছে (এই ক্ষেত্রে 11x11 পিক্সেল), সুতরাং এটি খুব শব্দ-সংবেদনশীল। আমি তারপরে গ্রেডিয়েন্ট চিত্রটিকে 1 = মানে বোঝায় তাই আমি উভয় নমুনার জন্য একই প্রান্তিকতা ব্যবহার করতে পারি।

src = Import["http://www.freeimagehosting.net/uploads/720da20080.jpg"];
pixels = ImageData[ColorConvert[src, "Grayscale"]];
gradient = Sqrt[GaussianFilter[pixels, 5, {1, 0}]^2 + GaussianFilter[pixels, 5, {0, 1}]^2];
gradient = gradient/Mean[Flatten[gradient]];

ওপেনসিভি বাস্তবায়ন: আপনি sepFilter2Dপ্রকৃত ফিল্টারিংয়ের জন্য ব্যবহার করতে পারেন , তবে দৃশ্যত আপনাকে ফিল্টার কার্নেলকে নিজের মূল্য নির্ধারণ করতে হবে

ফলাফলটি এরকম দেখাচ্ছে:

গ্রেডিয়েন্ট বিশালতা

এই চিত্রটিতে, সাইন ব্যাকগ্রাউন্ডটি অন্ধকার এবং সাইন বর্ডারটি উজ্জ্বল। সুতরাং আমি এই চিত্রটি বাইনারি করতে এবং অন্ধকার সংযুক্ত উপাদানগুলির সন্ধান করতে পারি।

binaryBorders = Binarize[Image[gradient], 0.2];
sign = DeleteBorderComponents@ColorNegate[binaryBorders];
largestComponent = SortBy[ComponentMeasurements[sign, {"Area", "ConvexVertices"}][[All, 2]], First][[-1, 2]];

ওপেনসিভি বাস্তবায়ন: থ্রোসোল্ডিংটি সোজা হওয়া উচিত, তবে আমি মনে করি ওপেনসিভিতে সংযুক্ত উপাদান বিশ্লেষণ নেই - আপনি এটির জন্য বন্যা ভরাট বা সিভিব্লবস লিব ব্যবহার করতে পারেন।

এখন, কেবল চিত্রের কেন্দ্রের নিকটে সবচেয়ে বড় ব্লবটি সন্ধান করুন এবং উত্তল হলের সন্ধান করুন (আমি কেবল সবচেয়ে বড় ব্লবটি ব্যবহার করেছি যা ব্যাকগ্রাউন্ডের সাথে সংযুক্ত নয়, তবে এটি প্রতিটি চিত্রের জন্য যথেষ্ট নাও হতে পারে)।

ফলাফল: এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


0

এই পরিস্থিতিতে আপনি যে শব্দটি আরও বেশি দৃ .় করতে পারেন তা হ'ল এক্স অক্ষ এবং বর্গক্ষেত্রের সাথে ইমেজের গড় ধূসর-স্তরের বক্ররেখা উত্পন্ন করা। এটি হ'ল, চিত্রের প্রতিটি লাইন / কলামের জন্য গড় ধূসর স্তরটি গণনা করুন।

উদাহরণস্বরূপ, যদি সাইনবোর্ডটি (বা এর সীমানা) তার পার্শ্ববর্তী অঞ্চলের চেয়ে হালকা হয় (যা প্রশ্নের সমস্ত উদাহরণের ক্ষেত্রে উদাহরণস্বরূপ) আপনার এক্স-অক্ষের বক্ররেখায় দুটি বুরুশ থাকবে (বাম এবং ডান এবং সীমান্তের জন্য) ) এবং আপনার মধ্যে y- অক্ষ বক্ররেখা (শীর্ষ এবং নীচের সীমানার জন্য) দুটি শিখর। 1-মাত্রিক সংকেতের জন্য সীমান্ত সনাক্তকরণ কৌশল ব্যবহার করে (সম্ভবত একটি উচ্চ-পাস ফিল্টার) আপনি সাইনবোর্ডের কোণার স্থানাঙ্কগুলি কেটে নিতে পারেন।

আমি এই পন্থাটি লাইসেন্স প্লেট সনাক্ত করতে এবং মুখের স্বীকৃতির জন্য ব্যবহার করতে দেখেছি (নাক মুখের উজ্জ্বল অংশ হতে পারে, তাই এটি এক্স-অক্ষ এবং y- অক্ষের বক্ররেখার উত্পন্ন করে)।


হুম .. সাইনবোর্ডটি ঘোরানো হলে বা ক্যামেরাটি ঘূর্ণিত হলে কী হবে?
মোস্তফা

0

এটি সামান্য উত্সাহী ধারণা হতে পারে তবে এটি চেষ্টা করে দেখার মতো হতে পারে। আয়তক্ষেত্রটি সনাক্ত করার চেষ্টা এবং শব্দের মতো পাঠ্যের চিন্তাভাবনার পরিবর্তে , আপনি পাঠ্যের তথ্যের মতো আচরণ করতে পারেন এবং আয়তক্ষেত্রটি সহজে সনাক্ত করতে এটি ব্যবহার করতে পারেন।

ধারণাটির রূপরেখাটি এখানে:

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

ব্যাখ্যা এবং সুবিধা:

  • পাঠ্যের চারপাশের অঞ্চলটি সাধারণত একজাতীয় হয় - আসল আয়তক্ষেত্রটি প্রথম শক্তিশালী প্রত্যাহার হওয়া উচিত
  • এইভাবে আপনাকে পুরো চিত্রটিতে খড়খড়ি রূপান্তর করতে হবে না, তাই আপনি এটি আরও বেশি করে করতে পারেন (সম্ভবত একই অঞ্চলে একাধিকবার তবে বিভিন্ন বালতির আকারের সাথে ...)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.