Изображение RGB в оттенки серого java

В различных случаях вам может понадобиться преобразовать изображения RGB в оттенки серого или черно-белые, например, при обработке изображений и т. д. В соответствии с этим в этой статье вы узнаете, как преобразовать изображение RGB в оттенки серого с помощью Java. . Кроме того, в статье будут подробно рассмотрены оттенки серого и бинаризация изображений.

Java API для преобразования изображения в оттенки серого

Чтобы преобразовать изображения RGB в оттенки серого, мы будем использовать Aspose.Imaging for Java. Это API обработки изображений Java, который позволяет беспрепятственно манипулировать популярными форматами изображений. Вы можете либо скачать API, либо установить его, используя следующие конфигурации Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-imaging-java</artifactId>
    <version>21.7</version>
    <classifier>jdk16</classifier>
</dependency>

Преобразование изображения в оттенки серого в Java

Ниже приведены шаги для преобразования изображения RGB в оттенки серого в Java.

  • Сначала загрузите изображение с помощью класса Image.
  • Затем приведите изображение к объекту RasterCachedImage.
  • Кэшируйте изображение с помощью метода RasterCachedImage.cacheData().
  • Преобразуйте изображение в оттенки серого, используя метод RasterCachedImage.grayscale().
  • Наконец, сохраните изображение с помощью метода RasterCachedImage.save(String).

В следующем примере кода показано, как преобразовать изображение в оттенки серого с помощью Java.

// Загрузите изображение в экземпляр Image
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Приведите изображение к RasterCachedImage
    RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
    
    // Проверьте, кэшируется ли изображение
    if (!rasterCachedImage.isCached()) {
        // Кэшировать изображение, если оно еще не кэшировано
        rasterCachedImage.cacheData();
    }
    // Преобразование изображения в его представление в градациях серого
    rasterCachedImage.grayscale();
    
    // Сохраните полученное изображение
    rasterCachedImage.save("Grayscaling_out.jpg");
}

Входное изображение

Ниже приведен пример изображения, используемого в этой статье.

изображение в оттенках серого Java

Преобразовано в оттенки серого

Ниже приведено изображение после преобразования в оттенки серого.

изображение в градациях серого

Преобразование изображения в черно-белое с помощью бинаризации

При бинаризации каждый пиксель изображения может иметь только два возможных значения; 0 или 1. Здесь 0 обозначает отсутствие, а 1 обозначает наличие цвета. Aspose.Imaging поддерживает два метода бинаризации: бинаризацию с фиксированным и бинаризацию с порогом Оцу.

Бинаризация с фиксированным порогом в Java

Ниже приведены шаги для выполнения бинаризации изображения с использованием фиксированного порога.

Следующий код Java применяет бинаризацию к изображению и преобразует его в черно-белое.

// Загрузите изображение в экземпляр Image
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Приведите изображение к RasterCachedImage и проверьте, кэшировано ли изображение.                
    RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
    if (!rasterCachedImage.IsCached)
    {
        // Кэшировать изображение, если оно еще не кэшировано
        rasterCachedImage.CacheData();
    }

    // Бинаризация изображения с предопределенным фиксированным порогом и сохранение полученного изображения.                
    rasterCachedImage.binarizeFixed((byte) 100);
    rasterCachedImage.save("BinarizationWithFixedThreshold_out.jpg");
}

Бинаризация с порогом Оцу в Java

Ниже приведены шаги для преобразования изображения в черно-белое с порогом Otsu.

В следующем примере кода показано, как преобразовать изображение в черно-белое с порогом Otsu с помощью Java.

// Загрузите изображение в экземпляр Image
try (Image image = Image.load("aspose-logo.jpg"))
{
    // Приведите изображение к RasterCachedImage и проверьте, кэшировано ли изображение.
    RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
    if (!rasterCachedImage.isCached())
    {
        // Кэшировать изображение, если оно еще не кэшировано
        rasterCachedImage.cacheData();
    }
    // Бинаризуйте изображение с помощью Otsu Thresholding
    rasterCachedImage.binarizeOtsu();
  
    // Сохраните полученное изображение
    rasterCachedImage.save("BinarizationWithOtsuThreshold_out.jpg");
}

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.

Вывод

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

Смотрите также