Обработка изображений в Java — повышение резкости
Предпосылки:
- Обработка изображений в Java — чтение и запись
- Обработка изображений в Java — получение и установка пикселей
- Обработка изображений в Java — преобразование цветного изображения в изображение в градациях серого
- Обработка изображений в Java — преобразование цветного изображения в негативное изображение
- Обработка изображений в Java — преобразование цветных изображений в красные, зеленые, синие
- Обработка изображений в Java — преобразование цветного изображения в изображение сепии
- Обработка изображений в Java — создание случайного пиксельного изображения
- Обработка изображений в Java — создание зеркального изображения
- Обработка изображений в Java — распознавание лиц
- Обработка изображений в Java — водяные знаки на изображении
- Обработка изображений в Java — изменение ориентации изображения
- Обработка изображений в Java — повышение контрастности
- Обработка изображений в Java — повышение яркости
- Обработка изображений в Java — сравнение двух изображений
Tip: It is recommended to use eclipse for the same since it is easy to use and set up.
Здесь мы будем использовать фильтр Гаусса. Этот фильтр уменьшает шум на изображении и делает его лучше (или с более высоким разрешением). Выполните предварительные условия установки OpenCV и настройки в соответствии с ОС на вашем локальном компьютере, чтобы написать код, поскольку мы будем импортировать библиотеки. Итак, давайте обсудим предыдущие методы, необходимые для повышения резкости.
Метод 1: GaussianBlur(): этот метод находится в пакете Imgproc OpenCv.
Синтаксис:
Imgproc.GaussianBlur(source, destination, new Size(0, 0), sigmaX)
Параметры:
- Исходное изображение
- Изображение назначения
- Гауссовский размер ядра
- Стандартное отклонение ядра Гаусса в направлении X
Метод 2: addWeighted(): этот метод находится в пакете Core OpenCV.
Синтаксис:
Core.addWeighted(InputArray src1, alpha, src2, beta, gamma, OutputArray dst)
Параметры:
- Первый входной массив
- Вес первых элементов массива
- Второй входной массив того же размера и номера канала, что и src1
- Вес вторых элементов массива
- Скаляр добавляется к каждой сумме
- Выходной массив, который имеет тот же размер и количество каналов, что и входные массивы.
Метод 3: imread(): он используется для чтения изображений как объектов Mat, которые визуализируются OpenCV.
Синтаксис:
Imgcodecs.imread(filename);
Параметры: Имя файла изображения. Если изображение находится в другом каталоге, необходимо указать полный путь к изображению.
Метод 4: imwrite(): Он используется для записи объектов Mat в файл изображения.
Синтаксис:
Imgcodecs.imwrite(filename, mat_img);
Параметры:
- Имя файла изображения. Если изображение находится в другом каталоге, необходимо указать полный путь к изображению.
- Результирующий матовый объект.
Реализация: Входное изображение выглядит следующим образом:
Пример
Java
// Java Program to Enhance Sharpness in An Image // Using OpenCV Library // Importing package module package ocv; // Importing require classes import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Size; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Try block to check for exceptions try { // For proper execution of native libraries // Core.NATIVE_LIBRARY_NAME must be loaded // before calling any of the opencv methods System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // Reading the input image from local directory // by creating object of Mat class Mat source = Imgcodecs.imread( Imgcodecs.CV_LOAD_IMAGE_COLOR); Mat destination = new Mat(source.rows(), source.cols(), source.type()); // Filtering Imgproc.GaussianBlur(source, destination, new Size( 0 , 0 ), 10 ); Core.addWeighted(source, 1.5 , destination, - 0.5 , 0 , destination); // Writing output image to directory in the local // system destination); } // Catch block to handle exceptions catch (Exception e) { // Display message when exception occurs System.out.print( "Exception/s Occurred" ) } } } |
Выход:
Note: Do notice a minor improvement in resolution
Эта статья предоставлена Pratik Agarwal . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.