সালিশী আকারের স্বয়ংক্রিয় ক্রপিং


14

আমার বাইনারি মাস্ক (ধূসর = আকৃতি, কালো = ব্যাকগ্রাউন্ড) দ্বারা সংজ্ঞায়িত একটি স্বেচ্ছাচারিত আকার রয়েছে।

আমি কেবল ধূসর পিক্সেলযুক্ত একটি বৃহত সম্ভাব্য আয়তক্ষেত্র সন্ধান করতে চাই (যেমন আয়তক্ষেত্র হলুদ বর্ণিত):

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

আকৃতি সর্বদা "এক টুকরা" থাকে তবে এটি উত্তল নয় (আকৃতির সীমানায় থাকা সমস্ত পয়েন্ট জোড়া আকৃতির মধ্য দিয়ে যাওয়া সরলরেখার সাথে সংযুক্ত হতে পারে)।

কখনও কখনও এই জাতীয় অনেকগুলি "সর্বোচ্চ আয়তক্ষেত্র" বিদ্যমান থাকে এবং তারপরে আরও প্রতিবন্ধকতাগুলি চালু করা যায় যেমন:

  • আকারের কেন্দ্রের নিকটেতম কেন্দ্রের সাথে আয়তক্ষেত্রটি নিয়ে যাওয়া (বা চিত্রের কেন্দ্র)
  • পূর্বনির্ধারিত অনুপাতের নিকটতম অনুপাতের সাথে আয়তক্ষেত্র গ্রহণ করা (অর্থাত্ 4: 3)

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

অ্যালগরিদম সম্পর্কে আমার প্রথম চিন্তাটি নিম্নলিখিত:

  1. গণনার দূরত্বটিকে আকারের রূপান্তর করুন এবং এর ভর কেন্দ্রের সন্ধান করুন
  2. বর্গক্ষেত্রের অঞ্চলটি বাড়ান যখন এতে কেবল আকারের পিক্সেল থাকে
  3. প্রস্থ বা উচ্চতায় আয়তক্ষেত্রটি (মূলত একটি বর্গক্ষেত্র) বাড়ান যখন এতে কেবল আকারের পিক্সেল থাকে।

তবে আমি মনে করি এ জাতীয় অ্যালগরিদম ধীর হবে এবং অনুকূল সমাধানের দিকে পরিচালিত করবে না।

কোনও পরামর্শ?


2
এটি কি সহায়ক? mathworks.com/matlabcentral/fileexchange/…
অতুল

নিবন্ধন করুন ধন্যবাদ। আপনি কি উত্তর যুক্ত করতে পারেন যাতে আমি তা গ্রহণ করতে পারি? এরপরে আমি আলগোরিদিমটিতে আরও বিস্তৃত উত্তরটি সম্পাদনা করার চেষ্টা করব - তবে আমি আপনার সরবরাহ করা লিংকটি ব্যবহার করে নিজের প্রশ্নের উত্তর দিতে চাই না ...
লিবার

গ্রেট! আমি কোডটি পড়িনি বলে আমি আপনার বিস্তৃত উত্তরটি পড়ার অপেক্ষায় থাকব।
অতুল ইংলে

@ অ্যাটুলইঙ্গলে ঠিক আছে, আমি উত্তরে কিছু আলোচনা যুক্ত করেছি এবং আমার একটি সম্পূর্ণ নিবন্ধে লিঙ্ক করেছি।
Libor

উত্তর:


10

মতলব ফাইলএক্সচেঞ্জে একটি কোড রয়েছে যা আপনার সমস্যার সাথে প্রাসঙ্গিক: http://www.mathworks.com/matlabcentral/fileexchange/28155-insmitted અધિકાર কোণ / কনটেন্ট / এইচটিএমএল / তালিকাভুক্ত_রেখানো_ডেমো এইচটিএমএল

হালনাগাদ

আমি এই টিউটোরিয়াল নিবন্ধ লিখেছিলাম অতুল ইনগালের উপরের লিঙ্কটির উপর ভিত্তি করে বৃহত্তম বৃহত লিখিত আয়তক্ষেত্রগুলি গণনা করার জন্য ।

অ্যালগরিদম প্রথমে বাইনারি মাস্কের বৃহত্তম স্কোয়ারগুলি অনুসন্ধান করে। এটি সাধারণ গতিশীল প্রোগ্রামিং অ্যালগরিদম ব্যবহার করে করা হয়। প্রতিটি নতুন পিক্সেল ইতিমধ্যে পরিচিত তিনটি প্রতিবেশী ব্যবহার করে আপডেট করা হয়েছে:

squares[x,y] = min(squares[x+1,y], squares[x,y+1], squares[x+1,y+1]) + 1

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

নমুনা বাইনারি মাস্ক এবং গণনা করা মানচিত্র এই মত চেহারা:

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

মানচিত্রে সর্বাধিক গ্রহণ করা বৃহত্তম খোদাই করা স্কোয়ারটি প্রকাশ করে:

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

দুটি শ্রেণীর আয়তক্ষেত্রের সন্ধানে আরও দুটি বার মুখোশ স্ক্যান করার চেয়ে আয়তক্ষেত্র অনুসন্ধান অ্যালগরিদম:

  • বর্গের আকারের চেয়ে প্রস্থ বৃহত্তর (এবং উচ্চতা সম্ভবত ছোট)
  • বর্গক্ষেত্রের আকারের চেয়ে উচ্চতা (এবং প্রস্থ সম্ভবত ছোট)

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

আয়তক্ষেত্রের আকারের জন্য অঞ্চল, পরিধি বা মাত্রার যোগফলের যোগফলের জন্য কাউকে কিছু মেট্রিক বেছে নিতে হবে।

আয়তক্ষেত্রগুলির জন্য ফলাফলের মানচিত্র এখানে:

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

মানচিত্র তৈরির পরিবর্তে এবং পরে ম্যাক্সিমার সন্ধানের পরিবর্তে ভেরিয়েবলের মধ্যে পাওয়া ভাল আয়তক্ষেত্রের অবস্থান এবং আকার সংরক্ষণ করা সুবিধাজনক।

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

এই অ্যালগরিদমের ব্যবহারিক প্রয়োগ হ'ল আয়তক্ষেত্রাকার চিত্রগুলি কাটা হচ্ছে। আমি আমার ইমেজ স্টিচিং লাইব্রেরি শার্পস্টিচটিতে এই অ্যালগরিদমটি ব্যবহার করেছি :

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

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