Java DIP - Melhorando o brilho da imagem

Neste capítulo, aumentamos o brilho de uma imagem multiplicando cada pixel da imagem por um valor alfa e adicionando outro valor beta a ele.

Nós OpenCV função convertToisso faz a operação acima automaticamente. Pode ser encontrado emMatpacote. Sua sintaxe é fornecida abaixo -

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

Os parâmetros são descritos abaixo -

Sr. Não. Parâmetro e Descrição
1

destination

É uma imagem de destino.

2

rtype

É o tipo de matriz de saída desejada, ou melhor, a profundidade, já que o número de canais é igual ao da entrada. se rtype for negativo, a matriz de saída terá o mesmo tipo da entrada.

3

alpha

É um fator de escala opcional.

4

beta

É delta opcional adicionado aos valores em escala.

Além do método convertTo, existem outros métodos fornecidos pela classe Mat. Eles são descritos resumidamente -

Sr. Não. Método e Descrição
1

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

Ele ajusta o tamanho e a posição de uma submatriz na matriz pai.

2

copyTo(Mat m)

Copia a matriz para outra.

3

diag()

Ele extrai uma diagonal de uma matriz ou cria uma matriz diagonal.

4

dot(Mat m)

Ele calcula um produto escalar de dois vetores.

5

reshape(int cn)

Ele muda a forma e / ou o número de canais de uma matriz 2D sem copiar os dados.

6

submat(Range rowRange, Range colRange)

Ele extrai uma submatriz retangular.

Exemplo

O exemplo a seguir demonstra o uso da classe Mat para aumentar o brilho de uma imagem -

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());
      }
   }
}

Resultado

Quando você executa o código fornecido, a seguinte saída é vista -

Imagem original

Imagem brilhante aprimorada (alfa = 1 e beta = 50)

Imagem brilhante aprimorada (alfa = 2 e beta = 50)