কম্পিউটার টিউটোরিয়াল

ফ্লাড-ফিল (Flood-fill) এবং বাউন্ডারি-ফিল (Boundary-fill) অ্যালগরिदমের পার্থক্য


এই পোস্টে আমরা ফ্লাড ফিল অ্যালগরিদম এবং বাউন্ডারি ফিল অ্যালগরিদমের পার্থক্য বুঝব। এগুলো এলিয়া-ফিলিং অ্যালগরিদম (area-filling algorithms), এবং এগুলো একটি র‍্যান্ডম পিক্সেলের রিজনের অরিজিনাল কালার আছে কিনা সেটি বেস করে ডিফারেনশিয়েট করা যায়।

ফ্লাড-ফিল অ্যালগরিদম (Flood-fill algorithm)

  • এটিকে সিড ফিল অ্যালগরিদম (seed fill algorithm) ও বলা হয়।
  • এটি একটি মাল্টি-ডাইমেনশনাল অ্যারে کے রেসপেক্টে একটি দिये गये নোডের সাথে কানেক্টেড এলিয়া ক্যালকুলেট করে।
  • এটি ইনসাইড পার্টে ভিন্ন কালার থাকা একটি স্পেসিফিক এলিয়া ফিল আপ বা রিক্যালার করে কাজ করে, এবং তাই ইমেজের বাউন্ডারি।
  • এটি একটি ছবি দিয়ে রিপ্রেজেন্ট করা হয় যাতে একটি नेবারহুড থাকে যার বর্ডার আছে এবং স্বতন্ত্র কালার রিজন আছে।
  • স্পেসিফিক ইন্টেরিয়র কালার রিপ্লেস করা যায়, এই পার্টগুলো পেইন্ট করার জন্য।
  • মেমরি কনসাম্পশন বেশি।
  • এটি একটি তুলনামূলক সিম্পল অ্যালগরিদম।
  • এতে একাধিক বাউন্ডারি কালার থাকা ইমেজ প্রসেস করার ক্ষমতা আছে।
  • বাউন্ডারি-ফিল অ্যালগরিদমের তুলনায় এটি কমপারেটিভলি স্লোয়ার।
  • ইন্টেরিয়ার পার্ট পেইন্ট করতে একটি র‍্যান্ডম কালার ব্যবহার করা যায়, এবং পুরনো পিক্সেলটি নতুন এক্সচেঞ্জ করা হয়।
  • এটি একটি ইফিশিয়েন্ট অ্যালগরিদম।

পিক্সেল কানেক্ট করে মাল্টিপল বাউন্ডারি তৈরির দুটি মেথড ব্যবহার করা যায়:

  • 4-connected way: এই মেথডে, পিক্সেলের ম্যাক্সিমাম চারটি নেighbour থাকতে পারে। এগুলো বর্তমান পিক্সেলের লেফট, রাইট, Above এবং Below পজিশনে থাকবে।
  • 8-connected way: এই মেথডে, পিক্সেলের ম্যাক্সিমাম ৮টি নেighbour থাকতে পারে। নেighbouring পজিশনগুলো চারটি ডায়াগোনাল পিক্সেলের বিপরীতে চেক করা হয়।

বাউন্ডারি-ফিল অ্যালগরিদম (Boundary-fill algorithm)

  • যখন বাউন্ডারি সিঙ্গেল কালার ধারণ করে, অ্যালগরিদম আউটওয়ার্ড ডিরেকশনে পিক্সেল বাই পিক্সেল চালিয়ে যায় যতক্ষণ না বাউন্ডারি কালার পাওয়া যায়।
  • এটি ইন্টারেক্টিভ পেইন্টিং প্যাকেজে ইমপ্লিমেন্টেড থাকে, যেখানে ইনসাইড পয়েন্টগুলো সহজে বেছে নেওয়া যায়।
  • অ্যালগরিদম শুরু হয় একটি ইনসাইড পয়েন্টের কোঅর্ডিনেট (x, y), একটি বাউন্ডারি কালার এবং ফিল কালার অ্যাকসেপ্ট করে যা ইনপুট হয়।
  • পয়েন্ট (x, y) থেকে, অ্যালগরিদম এর নেighbouring লোকেশন চেক করে সেগুলো বাউন্ডারি কালারের পার্ট কিনা নির্ধারণ করতে।
  • যদি সেগুলো বাউন্ডারি কালার থেকে না হয়, তবে সেগুলো ফিল কালারের সাথে পেইন্ট করা হয়, এবং এডজাসেন্ট পিক্সেলগুলো একই কন্ডিশনের বিপরীতে টেস্ট করা হয়।
  • এই প্রসেস শেষ হয় যখন বাউন্ডারি কালার পর্যন্ত সকল পিক্সেল চেক করা হয়।
  • এলিয়াটি একটি সিঙ্গেল কালার দিয়ে ডিফাইন করা হয়।
  • মেমরি কনসাম্পশন কম।
  • ফ্লাড-ফিল অ্যালগরিদমের তুলনায় এটি দ্রুত।
  • ফ্লাড-ফিল অ্যালগরিদমের তুলনায় এটি জটিল।
  • এটি সিঙ্গেল বাউন্ডারি কালারवाले ইমেজ প্রসেস করতে পারে।

  1. অ্যালগরিদম (Algorithm) এবং ফ্লোचार্ট (Flowchart) এর পার্থক্য

  2. BFS এবং DFS-এর পার্থক্য

  3. C# এবং .NET-এর পার্থক্য

  4. Go এবং Java-এর পার্থক্য