text: চিত্র প্রক্রিয়াকরণে ভারসাম্যপূর্ণ হিস্টগ্রাম থ্রেসহোল্ডিং পদ্ধতি (বিএইচটি) স্বয়ংক্রিয় চিত্র থ্রেসহোল্ডিংয়ের জন্য ব্যবহৃত একটি খুব সাধারণ পদ্ধতি। ওসুর পদ্ধতি এবং আইট্রেটিভ সিলেকশন থ্রেসহোল্ডিং পদ্ধতির মত এটিও একটি হিস্টগ্রাম ভিত্তিক থ্রেসহোল্ডিং পদ্ধতি। এই পদ্ধতিতে চিত্রটি দুটি প্রধান শ্রেণিতে বিভক্ত: পটভূমি এবং সম্মুখভাগ করা হয়। বিএইচটি পদ্ধতিটি সর্বোত্তম প্রান্তিক স্তরের সন্ধান করার চেষ্টা করে যা হিস্টগ্রামকে দুটি শ্রেণিতে বিভক্ত করে। 
  ডান|থাম্ব|200x200পিক্সেল| আসল চিত্র।
  ডান|থাম্ব|200x200পিক্সেল|থ্রেসহোল্ডিং চিত্র
  থাম্ব|200x200পিক্সেল| পদ্ধতির বিবর্তন।
  এই পদ্ধতিটি হিস্টোগ্রামের ওজন করে, উভয় পক্ষের মধ্যে ভারী কিনা তা পরীক্ষা করে এবং হালকা হওয়া অবধি ভারী দিক থেকে ওজন সরিয়ে দেয়। ওজন স্কেলের কিনারা পূরণ না হওয়া পর্যন্ত এটি একই অপারেশন পুনরাবৃত্তি করে।
  
  স্বয়ংক্রিয় চিত্র থ্রেসহোল্ডিং বিষয় উপস্থাপনের জন্য এই পদ্ধতি একটি সরল উদাহরণ।
  
  অ্যালগরিদম 
  সি নোটেশনে লিখিত নিচের তালিকাটি ভারসাম্য হিস্টোগ্রাম থ্রেসহোল্ডিং পদ্ধতির একটি সরল সংস্করণ: int BHThreshold(int[] histogram) {
      i_m = (int)((i_s + i_e) / 2.0f); // center of the weighing scale I_m
      w_l = get_weight(i_s, i_m + 1, histogram); // weight on the left W_l
      w_r = get_weight(i_m + 1, i_e + 1, histogram); // weight on the right W_r
      while (i_s <= i_e) {
          if (w_r > w_l) { // right side is heavier
              w_r -= histogram[i_e--];
              if (((i_s + i_e) / 2) < i_m) {
                  w_r += histogram[i_m];
                  w_l -= histogram[i_m--];
              }
          } else if (w_l >= w_r) { // left side is heavier
              w_l -= histogram[i_s++]; 
              if (((i_s + i_e) / 2) >= i_m) {
                  w_l += histogram[i_m + 1];
                  w_r -= histogram[i_m + 1];
                  i_m++;
              }
          }
      }
      return i_m;
  } নিম্নলিখিতটি পাইথন ভাষায় একটি সম্ভাব্য বাস্তবায়ন: def bht(hist, min_count: int = 5) -> int:
      """Balanced histogram thresholding."""
      n_bins = len(hist)  # assumes 1D histogram
      h_s = 0
      while hist[h_s] < min_count:
          h_s += 1  # ignore small counts at start
      h_e = n_bins - 1
      while hist[h_e] < min_count:
          h_e -= 1  # ignore small counts at end
      # use mean intensity of histogram as center; alternatively: (h_s + h_e) / 2)
      h_c = int(round(np.average(np.linspace(0, 2 ** 8 - 1, n_bins), weights=hist)))
      w_l = np.sum(hist[h_s:h_c])  # weight in the left part
      w_r = np.sum(hist[h_c : h_e + 1])  # weight in the right part
  
      while h_s < h_e:
          if w_l > w_r:  # left part became heavier
              w_l -= hist[h_s]
              h_s += 1
          else:  # right part became heavier
              w_r -= hist[h_e]
              h_e -= 1
          new_c = int(round((h_e + h_s) / 2))  # re-center the weighing scale
  
          if new_c < h_c:  # move bin to the other side
              w_l -= hist[h_c]
              w_r += hist[h_c]
          elif new_c > h_c:
              w_l += hist[h_c]
              w_r -= hist[h_c]
  
          h_c = new_c
  
      return h_c
  
  তথ্যসূত্র
  
  বহিসংযোগ 
  
   ইমেজজে প্লাগইন 
   ওসু বনাম বিএইচটি
  
  বিষয়শ্রেণী:ছবি প্রক্রিয়াকরণ
title: ভারসাম্যযুক্ত হিস্টগ্রাম থ্রেসহোল্ডিং