
さまざまな場合、たとえば画像処理などで、RGB画像をグレースケールまたは白黒に変換する必要があります。それに応じて、この記事では、Javaを使用してRGB画像をグレースケールに変換する方法を学習します。 。さらに、この記事では、画像のグレースケーリングと2値化について明示的に説明します。
画像をグレースケールに変換するJavaAPI
RGB画像をグレースケールに変換するには、Aspose.Imaging for Javaを使用します。これは、一般的な画像形式をシームレスに操作できるようにするJava画像処理APIです。 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で画像をグレースケールに変換する
以下は、JavaでRGB画像をグレースケールに変換する手順です。
- まず、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");
}
入力画像
以下は、この記事で使用されているサンプル画像です。

グレースケールに変換
以下は、グレースケールに変換した後の画像です。

二値化で画像を白黒に変換する
2値化では、画像の各ピクセルは2つの可能な値しか持つことができません。 0または1。ここで、0は色がないことを示し、1は色が存在することを示します。 Aspose.Imagingは、固定による2値化と、大津しきい値による2値化の2つの2値化方法をサポートしています。
Javaでの固定しきい値による2値化
以下は、固定しきい値を使用して画像の2値化を実行する手順です。
- まず、Imageクラスを使用して画像を読み込みます。
 - 次に、画像をRasterCachedImageオブジェクトにキャストします。
 - RasterCachedImage.cacheData()メソッドを使用して画像をキャッシュします。
 - RasterCachedImage.binarizeFixed()メソッドを使用して、画像を白黒に変換します。
 - 最後に、RasterCachedImage.save(String)メソッドを使用して画像を保存します。
 
次のJavaコードは、画像に2値化を適用し、それを白黒に変換します。
// 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での大津しきい値による二値化
以下は、大津しきい値を使用して画像を白黒に変換する手順です。
- まず、Imageクラスを使用して画像を読み込みます。
 - 画像をRasterCachedImageオブジェクトにキャストします。
 - RasterCachedImage.cacheData()メソッドを使用して画像をキャッシュします。
 - RasterCachedImage.binarizeOtsu()メソッドを使用して、画像を白黒に変換します。
 - 最後に、RasterCachedImage.save(String)メソッドを使用して画像を保存します。
 
次のコードサンプルは、Javaを使用して大津しきい値を使用して画像を白黒に変換する方法を示しています。
// Imageのインスタンスに画像をロードします
try (Image image = Image.load("aspose-logo.jpg"))
{
    // 画像をRasterCachedImageにキャストし、画像がキャッシュされているかどうかを確認します
    RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
    if (!rasterCachedImage.isCached())
    {
        // まだキャッシュされていない場合は画像をキャッシュする
        rasterCachedImage.cacheData();
    }
    // 大津しきい値を使用して画像を2値化する
    rasterCachedImage.binarizeOtsu();
  
    // 結果の画像を保存します
    rasterCachedImage.save("BinarizationWithOtsuThreshold_out.jpg");
}
無料のAPIライセンスを取得する
評価の制限なしにAPIを使用するために、無料の一時ライセンスを取得できます。
結論
この記事では、Javaを使用して画像をグレースケールと白黒に変換する方法を学習しました。さらに、固定または大津のしきい値を持つ画像に2値化を適用する方法を見てきました。さらに、ドキュメントを使用して、Java画像処理APIの詳細を調べることができます。また、フォーラムを介してクエリを共有することもできます。