【python-openCV】白黒画像を疑似カラー画像に変換する方法!

この記事では以下のような白黒画像を、

f:id:yshgs_elec:20210403223033j:plain

このような疑似カラー画像に変換する方法をご紹介していきます。

f:id:yshgs_elec:20210402200735j:plain

白黒ではわかりにくい微妙な輝度の差でも、疑似カラー化すれば違いが分かりやすくなるはずです。

実験画像なんかによく適用されているものですね。

 

あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。

※この作業をpythonというプログラミング言語を用いて実行していきます。

 

それでは早速やっていきます!

スポンサーリンク

必要なライブラリ

◆openCV

◆numpy

どちらのライブラリも、pythonを勉強していくうえで欠かせないものですので、インストールしていなければぜひインストールしておきましょう。

スポンサーリンク

疑似カラー画像の作り方

pythonで白黒画像を疑似カラーに変更するには、

openCVのapplyColorMapというスキルを用います。

 

◆applyColorMapの使い方

A= cv2.applyColorMap(B, C)

ここで使われているA,B,Cは以下の通りです。

A:疑似カラー後の画像配列の変数名

B:もともとの白黒画像の配列の変数名

C:どのような疑似カラーに変換するかを指定

※以下がCのサンプルです。

〇cv2.COLORMAP_JET

〇cv2.COLORMAP_HOT

〇cv2.COLORMAP_HSV

〇cv2.COLORMAP_RAINBOW

 

これらを適用した際に白黒画像がどのように変化するのかは、後程ご紹介します。

また、今回はうえの4つの疑似カラーしか紹介しませんが、他にも様々な疑似カラーを適用することができます。

興味があれば調べてみましょう。

(まぁここで紹介する4つ以外は正直使うことはないとは思います。)

 

基礎スキル解説はこのくらいにして、次は実際にコードを書いていきましょう。

スポンサーリンク

画像を疑似カラー化するサンプルコード

以下が冒頭に紹介したような白黒画像を疑似カラー化するサンプルコードです。

※コードを実行するフォルダにoriginal.jpgという名前で元画像を配置しています。

また、変更後の画像ファイルはpseudo_color***.jpgという名前で同じフォルダに出力されます。

◆pythonサンプルコード

#ライブラリインポート
import cv2
import numpy as np
#ベース画像の読み込み
pic=cv2.imread('original.jpg', cv2.IMREAD_GRAYSCALE)
#疑似カラー化_JET
pseudo_color = cv2.applyColorMap(pic, cv2.COLORMAP_JET)
cv2.imwrite('pseudo_color_jet.jpg',np.array(pseudo_color))
#疑似カラー化_HOT
pseudo_color = cv2.applyColorMap(pic, cv2.COLORMAP_HOT)
cv2.imwrite('pseudo_color_hot.jpg',np.array(pseudo_color))
#疑似カラー化_HSV
pseudo_color = cv2.applyColorMap(pic, cv2.COLORMAP_HSV)
cv2.imwrite('pseudo_color_hsv.jpg',np.array(pseudo_color))
#疑似カラー化_RAINBOW
pseudo_color = cv2.applyColorMap(pic, cv2.COLORMAP_RAINBOW)
cv2.imwrite('pseudo_color_rainbow.jpg',np.array(pseudo_color))

今回は一気に4つの疑似カラーパターンの画像を作成していますので少々コードが長くなっていますが、やっていることは先ほど紹介したapplyColorMapを使って白黒画像の配列を疑似カラーに変換⇒変換後の画像を保存という作業を行っているだけです。

 

このコードを実行すると以下の画像のように、もともとの白黒画像とは別に4つのカラー画像が新たに生成されているはずです。

f:id:yshgs_elec:20210403224907j:plain

※一番左のテキストファイルがpythonコードを記述しているファイル、その右の白黒画像がもともとの画像です。

 

上の画像では、各疑似カラー画像が最終的にどのように表示されるのか少しわかりにくいと思いますので、大きい画像も載せておきましょう。

◆もとの画像

f:id:yshgs_elec:20210403223033j:plain

◆JET(これが一番イメージしやすいですかね。)

f:id:yshgs_elec:20210403225131j:plain

◆HOT(これもまぁ使えそう。ゼロが黒になるのが良いですね。)

f:id:yshgs_elec:20210403225226j:plain

◆HSV(大きい数値と小さい数値が赤になる。中間輝度を見分けやすい。)

f:id:yshgs_elec:20210403225322j:plain

◆RAINBOW(これ使うくらいならJETでいいかも・・・。)

f:id:yshgs_elec:20210403225424j:plain

まぁよく使うのは、JETとHOTでしょうな。

スポンサーリンク

おわりに

というわけで今回はpython-openCVを使って、白黒画像の輝度値から疑似カラー画像に変換する方法をご紹介しました。

あなたの業務に少しでもお役に立てていれば幸いです。

 

このように、私のブログでは様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました