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

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন


চিত্রের উজ্জ্বলতা ও কন্ট্রাস্ট বাড়ানো/কমানো হলো পিক্সেল মান রূপান্তরের মাধ্যমে সম্পন্ন একটি অপারেশন, যাকে একটি সমীকরণ দ্বারা প্রকাশ করা যায়:

g(i, j) = α · f(i, j) + β

যেখানে,

  • (i, j) হলো পিক্সেলের অবস্থান।

  • α (গেইন) এবং β (বায়াস) হলো রূপান্তরের প্যারামিটার।

  • বেশিরভাগ সময় গেইন প্যারামিটার চিত্রের কন্ট্রাস্ট নিয়ন্ত্রণ করে এবং বায়াস প্যারামিটার উজ্জ্বলতা নিয়ন্ত্রণ করে।

org.opencv.core.Mat ক্লাসের convertTo() মেথড চিত্রের কন্ট্রাস্ট ও উজ্জ্বলতা পরিবর্তনের জন্য দেওয়া ম্যাট্রিক্সের ওপর প্রয়োজনীয় গণনা করে। এই মেথড চারটি প্যারামিটার গ্রহণ করে:

  • mat - ফলাফল ধারণ করার জন্য খালি ম্যাট্রিক্স, যেটির আকার ও টাইপ সোর্স ম্যাট্রিক্সের সমান।

  • rtype - আউটপুট ম্যাট্রিক্সের টাইপ নির্দিষ্ট করার ইন্টিজার মান। যদি এই মান নেগেটিভ হয়, তবে টাইপ সোর্সের সমান হবে।

  • alpha - গেইন (gain) মান, যা ০ এর চেয়ে বড় হতে হবে (ডিফল্ট মান ১)।

  • beta - বায়াস (bias) মান (ডিফল্ট মান ০)।

ওপেনসিভি জাভা লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন

উল্লিখ্য alpha মান এই মেথডে পাস করলে চিত্রের কন্ট্রাস্ট পরিবর্তিত হয়। যদি এই প্যারামিটারের জন্য নির্বাচিত মান ১ এর চেয়ে কম হয় (০ পর্যন্ত), তবে চিত্রের কন্ট্রাস্ট কমে যায়। একইভাবে, যদি এটি ১ এর চেয়ে বড় হয় (১০০ পর্যন্ত), তবে চিত্রের কন্ট্রাস্ট বেড়ে যায়।

চিত্রের কন্ট্রাস্ট পরিবর্তন করতে -

  • loadLibrary() মেথড ব্যবহার করে ওপেনসিভি নেটিভ লাইব্রেরি লোড করুন।

  • imread() মেথড ব্যবহার করে চিত্রের কন্টেন্ট একটি Mat অবজেক্টে পড়ুন।

  • পূর্বের ধাপে প্রাপ্ত ম্যাট্রিক্সের মতো আকার ও টাইপের একটি খালি ম্যাট্রিক্স তৈরি করুন।

  • convertTo() মেথড আহ্বান করুন খালি ম্যাট্রিক্স, -1 (একই টাইপ পেতে), কন্ট্রাস্ট বাড়ানো/কমানোর জন্য আলফা মান (০-১ বা ১-১০০) এবং ০ হিসেবে বেটা মান পাস করে।

  • Imgcodecs.imwrite() মেথড ব্যবহার করে ফলাফল ম্যাট্রিক্সের কন্টেন্ট আউটপুট চিত্র হিসেবে লিখুন।

উদাহরণ

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

public class AlteringContrast {
    public static void main(String[] args) {
        // ওপেনসিভি কোর লাইব্রেরি লোড করা হচ্ছে
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // ফাইল থেকে ইমেজ পড়া হচ্ছে
        String file = "D:\\Images\\car3.jpg";
        Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR);
        
        // খালি ম্যাট্রিক্স তৈরি
        Mat dest = new Mat(src.rows(), src.cols(), src.type());
        
        // চিত্রের কন্ট্রাস্ট বাড়ানো হচ্ছে
        src.convertTo(dest, -1, 10, 0);
        
        // ইমেজ লেখা হচ্ছে
        Imgcodecs.imwrite("D:\\Images\\altering_contrast_10.jpg", dest);
    }
}

ইনপুট চিত্র

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন

নিচে ভিন্ন alpha মানের জন্য বিভিন্ন আউটপুট চিত্র দেওয়া হলো:

α-মান: 0.5

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন

α-মান: 0.8

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন

α-মান: 1.5

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন

α-মান: 2.0

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের কন্ট্রাস্ট পরিবর্তন


  1. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে মিরর ইমেজ তৈরি

  2. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে রঙিন চিত্রকে সেপিয়া (Sepia) চিত্রে রূপান্তর

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে 네가েটিভ চিত্রকে পজিটিভ চিত্রে রূপান্তর

  4. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্র লিখা/সংরক্ষণ