1

OpenCVで偽色フィルターを見つけようとしていますが、ドキュメントを無駄にしました。フレームワークに実装するのに十分一般的であるように見えるので、OpenCVで別の名前で呼ばれているのではないかと思います。

このフィルターをどのように適用できますか?

4

4 に答える 4

2

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);

それらは、利用可能な多くの偽色マップです。

于 2013-10-22T09:14:36.303 に答える
0

これは、熱画像装置からの入力を使用して温度変化をうまく区別するために使用した疑似カラー/偽色のカラーマップを適用するプロジェクトから取り出した 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)
于 2016-06-06T11:54:18.793 に答える
0

偽着色にはいくつかの方法があります。通常、画像は 3 つの強度画像を合成したものです。

  1. 表示したい値を含む 3 つの 1 チャネル マトリックスを作成します。既存の行列からチャネルを再利用するには、 を使用しますcv::split()
  2. 各マトリックスに適切な正規化を適用します(ステップ4にも依存します)
  3. で 3 チャネル マトリックスを作成します。cv::merge()
  4. オプション:cv::cvtColor()これらのチャネルの意味を変更するために使用します。例: HSV から RGB に変換して、最初の入力変数が色相、2 番目が彩度、3 番目が疑似カラー画像の値になるようにします。

グレースケール画像が連続パレットを使用して 3 色に拡大されるもう 1 つのケースは、疑似カラーと呼ばれます。@melnibon の回答を参照してください。

于 2013-10-22T09:32:44.390 に答える