OpenCVで偽色フィルターを見つけようとしていますが、ドキュメントを無駄にしました。フレームワークに実装するのに十分一般的であるように見えるので、OpenCVで別の名前で呼ばれているのではないかと思います。
このフィルターをどのように適用できますか?
applyColorMap を使用できます: http://docs.opencv.org/trunk/modules/contrib/doc/facerec/colormaps.html
#include <opencv2/contrib/contrib.hpp>
cv::Mat grayImage...
cv::falseColored;
cv::applyColorMap(grayImage, falseColored, cv::COLORMAP_JET);
それらは、利用可能な多くの偽色マップです。
これは、熱画像装置からの入力を使用して温度変化をうまく区別するために使用した疑似カラー/偽色のカラーマップを適用するプロジェクトから取り出した Python で作成した便利な関数です。この機能は、好きなように後付けできます。
コードは、すべての異なる OpenCV フィルターを切り替えるメカニズムと、カスタム カラーマップを使用するオプションを提供します。
OpenCV フィルターを適用するには、filter_mode を 0 ~ 11 に設定します。それ以外の場合は、filter_mode を 12 に設定するか、13 に設定してカスタム 1x256 RGB イメージ グラデーションをフィルターとして使用し、グレースケール イメージを変換します。
以下の使用法を参照してください...
import cv2 # import OpenCV
...
def apply_colormap_filter(cv2_image, filter_mode) :
# A colormap for psudocolors/false color to distinguish hot spots in image
# input: [cv2_image] the greyscale input, [filter_mode] filter selection (0-13)
if filter_mode >= 12 : # lut image constraint: image has to be RGB of size 1x256
###### custom colormaps ######
if filter_mode == 12 :
lut = cv2.imread('thermal-colormap.png') # 1x256 RGB image
elif filter_mode == 13 :
lut = cv2.imread('lut_sky.png') # 1x256 RGB image
else :
lut = cv2.imread('lut_sky.png') # 1x256 RGB image
# APPLY CUSTOM FILTER
cv2_image = cv2.cvtColor(cv2_image, cv2.COLOR_GRAY2BGR);
final = cv2.LUT(cv2_image, lut)
###### custom colormaps ######
elif filter_mode < 12 :
###### Utilise OpenCL inbuilt filters ######
final = cv2.applyColorMap(cv2_image, filter_mode)
###### Utilise OpenCL inbuilt filters ######
return final # return the resultant False-colored image
gray = cv2.imread('grayscale-image.png') # some grayscale image of variable dimensions
thermal = apply_colormap_filter(gray, 12) # Use custom filter
cv2.imshow('Thermal Image', thermal)
偽着色にはいくつかの方法があります。通常、画像は 3 つの強度画像を合成したものです。
cv::split()
。cv::merge()
cv::cvtColor()
これらのチャネルの意味を変更するために使用します。例: HSV から RGB に変換して、最初の入力変数が色相、2 番目が彩度、3 番目が疑似カラー画像の値になるようにします。グレースケール画像が連続パレットを使用して 3 色に拡大されるもう 1 つのケースは、疑似カラーと呼ばれます。@melnibon の回答を参照してください。