1. পণ্য
  2.   ছবি
  3.   C++
  4.   Boost.GIL

Boost.GIL

 
 

ওপেন সোর্স C++ জেনেরিক ইমেজ লাইব্রেরি

C++ API যা অ্যালগরিদম থেকে চিত্র উপস্থাপনাকে বিমূর্ত করে এবং সাধারণ এবং জটিল চিত্রগুলির সাথে কাজ করতে সহায়তা করে। একটি হিস্টোগ্রাম তৈরি করুন, চিত্রের গ্রেডিয়েন্ট গণনা করুন, কনভোলিউশন এবং রিস্যাম্পলিং এবং আরও অনেক কিছু।

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

Boost.GIL লাইব্রেরি সম্পর্কে দুর্দান্ত জিনিস হল এটি অ্যালগরিদম থেকে চিত্র উপস্থাপনাকে বিমূর্ত করে এবং কোড লেখার অনুমতি দেয় যা একটি নির্দিষ্ট চিত্রের ধরণের জন্য হাতে লেখার সাথে তুলনীয় কর্মক্ষমতা সহ বিভিন্ন চিত্রগুলিতে কাজ করতে পারে। তাই এটি ডেভেলপারদের কাজ সহজ করে দেয় তাদের একবার কোড লিখতে এবং এটি যেকোন ইমেজ টাইপের জন্য কাজ করে।

Boost.GIL লাইব্রেরি একটি STL এবং Boost কমপ্লিমেন্ট হিসাবে ডিজাইন করা হয়েছে। লাইব্রেরির আরেকটি বড় দিক হল গতি এবং নমনীয়তা। গতি গ্রন্থাগারের নকশা একটি মূল অংশ হয়েছে. অন্যান্য অনেক লাইব্রেরির তুলনায় আপনি খুব সামান্য পারফরম্যান্স খরচের জন্য রান টাইমে যেকোনো ইমেজ প্যারামিটার সহজেই সংজ্ঞায়িত করতে পারেন। এটি নন-বাইট-সারিবদ্ধ পিক্সেল, কম্পিউটিং ইমেজ গ্রেডিয়েন্ট, বুস্ট ইন্টিগ্রেশন, একটি ধূসর-স্কেল পিক্সেলের জন্য একটি চ্যানেল বরাদ্দ করা, কনভোল্যুশন এবং রিস্যাম্পলিং ইত্যাদির মতো গুরুত্বপূর্ণ বৈশিষ্ট্যগুলির জন্য সমর্থন প্রদান করে।

Previous Next

Boost.GIL দিয়ে শুরু করা

Boost.GIL ইনস্টল করার সবচেয়ে সহজ উপায় হল GitHub ব্যবহার করা। একটি মসৃণ ইনস্টলেশনের জন্য অনুগ্রহ করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন

Boost.GILvia GitHub ইনস্টল করুন।

git clone --https://github.com/boostorg/gil

পড়া এবং ছবি লেখা

হিস্টোগ্রাম হল ডিজিটাল ইমেজে টোনাল ডিস্ট্রিবিউশনের গ্রাফিক্যাল উপস্থাপনা। চিত্র প্রক্রিয়াকরণ প্রসঙ্গে, একটি চিত্রের হিস্টোগ্রাম সাধারণত পিক্সেল তীব্রতার মানগুলির একটি হিস্টোগ্রামকে বোঝায়। Boost.GIL লাইব্রেরি সফ্টওয়্যার বিকাশকারীদের তাদের নিজস্ব অ্যাপ্লিকেশনের মধ্যে C++ কোড ব্যবহার করে একটি হিস্টোগ্রাম তৈরি করতে সক্ষম করে। এটি প্রতিটি বিনে পড়ে থাকা পিক্সেল মানগুলির সংখ্যা গণনা করে তৈরি করা যেতে পারে। আপনি সহজেই চিত্রের উজ্জ্বলতা হিস্টোগ্রাম গণনা করতে পারেন।

C++ API এর মাধ্যমে ছবি লেখা

#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL
#include 
#include 
using namespace boost::gil;
int main()
{
    rgb8_image_t img(512, 512);
    rgb8_pixel_t red(255, 0, 0);
    fill_pixels(view(img), red);
    png_write_view("redsquare.png", const_view(img));
}

C++ API ব্যবহার করে পিক্সেল-লেভেল ইমেজ অপারেশন

ওপেন সোর্স লাইব্রেরি Boost.GIL তাদের নিজস্ব C++ অ্যাপ্লিকেশনের মধ্যে পিক্সেল-লেভেল ইমেজ অপারেশনের জন্য সম্পূর্ণ সমর্থন প্রদান করেছে। লাইব্রেরিতে কিছু দরকারী ক্রিয়াকলাপ অন্তর্ভুক্ত রয়েছে যা ব্যবহারকারীদের পিক্সেল মান, পিক্সেল পয়েন্টার এবং পিক্সেল রেফারেন্স পরিচালনা করতে সক্ষম করে, যেমন একটি পিক্সেল রঙিন করা, একটি চ্যানেল অ্যাক্সেস করা, দুটি চ্যানেলের তুলনা করা, কনস্ট প্ল্যানার পয়েন্টার তৈরি করা, ধূসর l-মানকে RGB-তে রূপান্তর করা , এবং তাই।

C++ এর মাধ্যমে কালার স্পেসকে গ্রেস্কেলে রূপান্তর করুন


  template 
void x_luminosity_gradient(SrcView const& src, DstView const& dst)
{
  using gray_pixel_t = pixel::type, gray_layout_t>;
  x_gradient(color_converted_view(src), dst);
}

C++ অ্যাপের ভিতরে ইমেজ ট্রান্সফরমেশন

ওপেন সোর্স Boost.GIL লাইব্রেরি সফ্টওয়্যার প্রোগ্রামারদের কোডের কয়েকটি লাইন দিয়ে ছবি ঘোরানোর ক্ষমতা দেয়। Boost.GIL বিভিন্ন ধরনের ইমেজ ট্রান্সফরমেশন ফাংশন সমর্থন করে যা যেকোনো অক্ষ-সারিবদ্ধ ঘূর্ণন সম্পাদন করতে পারে, উল্লম্বভাবে বা অনুভূমিকভাবে ছবি ফ্লিপ করতে পারে, একটি আয়তক্ষেত্রাকার উপ-ইমেজ বের করতে পারে, রঙ রূপান্তর প্রয়োগ করতে পারে, 90, 180, বা 270 ডিগ্রি দ্বারা বিশেষ ঘূর্ণন ইত্যাদি চালু.

C++ API এর মাধ্যমে চিত্র রূপান্তর


  template 
  void y_gradient(const SrcView& src, const DstView& dst) {
      x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
  }
 বাংলা