Учебники

Java DIP — повышение яркости изображения

В этой главе мы повышаем яркость изображения, умножая каждый пиксель изображения на альфа-значение и добавляя к нему еще одно бета-значение.

У OpenCV есть функция convertTo, которая выполняет вышеуказанную операцию автоматически. Его можно найти под пакетом Mat . Его синтаксис приведен ниже —

int alpha = 2;
int beta = 50;
sourceImage.convertTo(destination, rtype , alpha, beta);		 

Параметры описаны ниже —

Sr.No. Параметр и описание
1

место назначения

Это изображение назначения.

2

RTYPE

Это желаемый тип выходной матрицы или, скорее, глубина, так как количество каналов совпадает с входным. если rtype отрицателен, выходная матрица будет иметь тот же тип, что и входная.

3

альфа

Это необязательный масштабный коэффициент.

4

бета

Это необязательная дельта, добавленная к масштабированным значениям.

место назначения

Это изображение назначения.

RTYPE

Это желаемый тип выходной матрицы или, скорее, глубина, так как количество каналов совпадает с входным. если rtype отрицателен, выходная матрица будет иметь тот же тип, что и входная.

альфа

Это необязательный масштабный коэффициент.

бета

Это необязательная дельта, добавленная к масштабированным значениям.

Помимо метода convertTo, есть класс, предоставленный классом Mat. Они описаны кратко —

Sr.No. Метод и описание
1

AdjustROI (int dtop, int dbottom, int dleft, int dright)

Он регулирует размер и положение подматрицы в родительской матрице.

2

copyTo (Mat m)

Копирует матрицу в другую.

3

Diag ()

Он извлекает диагональ из матрицы или создает диагональную матрицу.

4

точка (мат м)

Он вычисляет скалярное произведение двух векторов.

5

изменить (int cn)

Он изменяет форму и / или количество каналов 2D-матрицы без копирования данных.

6

submat (Range rowRange, Range colRange)

Извлекает прямоугольную подматрицу.

AdjustROI (int dtop, int dbottom, int dleft, int dright)

Он регулирует размер и положение подматрицы в родительской матрице.

copyTo (Mat m)

Копирует матрицу в другую.

Diag ()

Он извлекает диагональ из матрицы или создает диагональную матрицу.

точка (мат м)

Он вычисляет скалярное произведение двух векторов.

изменить (int cn)

Он изменяет форму и / или количество каналов 2D-матрицы без копирования данных.

submat (Range rowRange, Range colRange)

Извлекает прямоугольную подматрицу.

пример

В следующем примере демонстрируется использование класса Mat для повышения яркости изображения.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class Main {
   static int width;
   static int height;
   static double alpha = 2;
   static double beta = 50;
   
   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());
         source.convertTo(destination, -1, alpha, beta);
         Highgui.imwrite("brightWithAlpha2Beta50.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("error:" + e.getMessage());
      }
   }
}

Выход

Когда вы выполняете данный код, вы увидите следующий вывод: