Java DIP - Meningkatkan Ketajaman Gambar

Pada bab ini kita belajar meningkatkan ketajaman gambar menggunakan filter Gaussian.

Pertama kami gunakan OpenCV fungsi GaussianBlur. Itu dapat ditemukan di bawahImgprocpaket. Sintaksnya diberikan di bawah ini -

Imgproc.GaussianBlur(source, destination, new Size(0,0), sigmaX);

Parameter dijelaskan secara singkat -

Sr.No. Parameter & Deskripsi
1

source

Itu adalah gambar sumber.

2

destination

Itu adalah gambar tujuan.

3

Size

Ini adalah ukuran kernel Gaussian.

4

sigmaX

Ini adalah deviasi standar kernel Gaussian dalam arah X.

Selanjutnya, kami menggunakan OpenCV fungsi addWeighteduntuk menerapkan watermark gambar ke gambar. Itu dapat ditemukan di bawahCorepaket. Sintaksnya diberikan di bawah ini -

Core.addWeighted(InputArray src1, alpha, src2, beta, gamma, OutputArray dst);

Parameter fungsi ini dijelaskan di bawah -

Sr.No. Parameter & Deskripsi
1

src1

Ini adalah larik masukan pertama.

2

alpha

Ini adalah bobot elemen array pertama.

3

src2

Ini adalah larik input kedua dengan ukuran dan nomor saluran yang sama seperti src1.

4

Beta

Ini adalah bobot elemen array kedua.

5

gamma

Ini adalah skalar yang ditambahkan ke setiap jumlah.

6

dst

Ini adalah larik keluaran yang memiliki ukuran dan jumlah saluran yang sama dengan larik masukan.

Selain metode GaussianBlur, ada metode lain yang disediakan oleh kelas Imgproc. Mereka dijelaskan secara singkat -

Sr.No. Metode & Deskripsi
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

Ini mengubah gambar dari satu ruang warna ke ruang warna lainnya.

2

dilate(Mat src, Mat dst, Mat kernel)

Ini melebarkan gambar dengan menggunakan elemen penataan tertentu.

3

equalizeHist(Mat src, Mat dst)

Ini menyamakan histogram dari gambar grayscale.

4

filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta)

Ini menggabungkan gambar dengan kernel.

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

Ini mengaburkan gambar menggunakan filter Gaussian.

6

integral(Mat src, Mat sum)

Ini menghitung integral dari sebuah gambar.

Contoh

Contoh berikut menunjukkan penggunaan kelas Imgproc dan Core untuk menerapkan penajaman ke gambar -

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class Main {
   public static void main( String[] args ) {
      try{
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source = Highgui.imread("digital_image_processing.jpg",
         Highgui.CV_LOAD_IMAGE_COLOR);
         Mat destination = new Mat(source.rows(),source.cols(),source.type());
         Imgproc.GaussianBlur(source, destination, new Size(0,0), 10);
         Core.addWeighted(source, 1.5, destination, -0.5, 0, destination);
         Highgui.imwrite("sharp.jpg", destination);
      } catch (Exception e) {
      }
   }
}

Keluaran

Saat Anda menjalankan kode yang diberikan, output berikut akan terlihat -

Gambar asli

Gambar yang Ditajam