LoginSignup
6
0

疑似カラー変換とは

モノクロの画像を画素の濃淡で色を当てはめてカラーにする変換する処理
カラーの画像をモノクロ画像に変換するなどして使うと写真の加工フィルターとしても使えます

イメージとしてはこちらのサイトのグレースケールと色の関係を示すカラーバーがわかりやすいかもしれません
http://home.u08.itscom.net/makoigkn/pseudo_color.html

実装

AndroidへのOpenCVの入れ方については省略
下記がコードになります。

// BitmapをMatに変換
val mat = Mat()
Utils.bitmapToMat(bitmap, mat) // 対象となるbitmapを入力

// グレースケールに変換
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_BGR2GRAY)

// 疑似カラー変換
val colorMap = Mat()
Imgproc.applyColorMap(mat, colorMap, Imgproc.COLORMAP_JET)

// MatをBitmapに変換
val pseudoColorBitmap = Bitmap.createBitmap(colorMap.cols(), colorMap.rows(), Bitmap.Config.ARGB_8888)
Utils.matToBitmap(colorMap, pseudoColorBitmap)

// ImageViewに表示
val imageView: ImageView = findViewById(R.id.imageView)
imageView.setImageBitmap(pseudoColorBitmap)

疑似カラー変換のために、まずはグレースケールに変換
グレースケールとなった画像をImgproc.applyColorMapにて疑似カラー変換
第三引数には適用したいカラーマップを指定する、サンプルとしてCOLORMAP_JETを指定

Imgproc.applyColorMapには以下のふたつの関数があり

public static void applyColorMap(Mat src, Mat dst, int colormap)
public static void applyColorMap(Mat src, Mat dst, Mat userColor)

上はあらかじめ用意されたカラーマップを指定
下は自分で用意したカラーマップを使用することができる(Matで作成)


公式よりカラーマップタイプが確認できる(22種類ある)
https://docs.opencv.org/4.x/d3/d50/group__imgproc__colormap.html

サンプルとして何種類かのカラーマップタイプで変換した画像を掲載

  • COLORMAP_JET
  • COLORMAP_JET.png

  • COLORMAP_SPRING
    COLORMAP_SPRING.png

  • COLORMAP_TWILIGHT
    COLORMAP_TWILIGHT.png

  • COLORMAP_DEEPGREEN
    COLORMAP_DEEPGREEN.png

終わり

OpenCVを用いることで簡単に画像処理をすることができる
カメラから入力した画像をそのまま変換などしても面白いかもしれない

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0