Java
 Computer >> コンピューター >  >> プログラミング >> Java

OpenCV×Javaでカスタムカラーマップを適用する方法を徹底解説

OpenCVには、グレースケール画像に色をつけて視覚的に分かりやすく変換できる「カラーマップ」機能が用意されています。本記事では、JavaでOpenCVを使用し、applyColorMap()メソッドによってカスタムカラーマップを画像へ適用する手順を、サンプルコード付きでわかりやすく解説します。

applyColorMap()メソッドとは

Imgprocクラスが提供するapplyColorMap()メソッドは、指定したカラーマップを対象画像に適用するためのメソッドです。このメソッドには、主に以下のパラメータを渡します。

  • ソース画像と出力画像を表す2つのMatオブジェクト
  • 適用したいカラーマップの種類を表す整数値

利用可能なカラーマップ一覧

第3引数には、OpenCVが定義している以下のカラーマップ定数を指定できます。

  • COLORMAP_AUTUMN(秋)
  • COLORMAP_BONE(骨)
  • COLORMAP_COOL(クール)
  • COLORMAP_HOT(ホット)
  • COLORMAP_HSV(HSV)
  • COLORMAP_JET(ジェット)
  • COLORMAP_OCEAN(オーシャン)
  • COLORMAP_PARULA(パルーラ)
  • COLORMAP_PINK(ピンク)
  • COLORMAP_RAINBOW(レインボー)
  • COLORMAP_SPRING(スプリング)
  • COLORMAP_SUMMER(サマー)
  • COLORMAP_WINTER(ウィンター)

実装例:COLORMAP_PINKを適用するサンプルコード

ここでは、画像を読み込み、COLORMAP_PINKを適用して結果を保存する具体的なコード例を紹介します。

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class CustomColorMaps {
    public static void main(String args[]) {
        // OpenCVのコアライブラリを読み込む
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // ファイルから画像を読み込み、Matオブジェクトに格納する
        String file = "D:\\images\\cat.jpg";
        Mat src = Imgcodecs.imread(file);

        // 結果を格納するための空のMatオブジェクトを作成する
        Mat dst = new Mat();

        // 画像にカラーマップを適用する
        Imgproc.applyColorMap(src, dst, Imgproc.COLORMAP_PINK);

        // 処理結果の画像を書き出す
        Imgcodecs.imwrite("D:\\images\\color_map.jpg", dst);

        System.out.println("Image processed");
    }
}

処理の流れのポイント

  • System.loadLibrary()でOpenCVネイティブライブラリを必ず最初に読み込みます。
  • Imgcodecs.imread()で入力画像をMat形式として取得します。
  • applyColorMap()の第3引数を変更するだけで、別のカラーマップに簡単に切り替えられます。
  • Imgcodecs.imwrite()により、変換後の画像をファイルとして保存します。

入力画像

今回の例では、次の猫の画像を入力として使用しています。

OpenCV×Javaでカスタムカラーマップを適用する方法を徹底解説

実行結果

上記のプログラムを実行すると、ピンク系のカラーマップが適用された以下のような出力画像が生成されます。コンソールには「Image processed」と表示され、処理の完了が確認できます。

OpenCV×Javaでカスタムカラーマップを適用する方法を徹底解説

このように、applyColorMap()メソッドを使えば、わずか数行のコードで画像に多彩な色表現を加えることができます。医療画像やヒートマップの可視化など、さまざまな用途に応じて最適なカラーマップを選択してみてください。

  1. JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法

    カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています

  2. JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法

    OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列