擬似カラー化クラス

Namespace: FVIL.Conversion
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
[SerializableAttribute]
public class CFviPseudoColor : CFviConversion
Visual Basic
<SerializableAttribute>
Public Class CFviPseudoColor
	Inherits CFviConversion

Remarks

濃淡画像を疑似カラーに変換するクラスです。

実行前にカラー変換テーブル(Table)を生成してください。
カラー変換テーブルは、 初期値指定コンストラクタ または Create メソッド で生成できます。

変換は下記の式で行われます。

出力画像の濃度値 = 変換テーブル[ 入力画像の濃度値 + オフセット値 ]

オフセット値は、入力画像の型が UC8, US16 の時は 0 、 S16, D64 の時は TableSize / 2 です。

『入力画像の濃度値 + オフセット値』で計算した指標が変換テーブルの範囲外になる場合は正規化されます。 0 未満は 0 に、範囲を超える場合は TableSize - 1 に正規化されます。

変換テーブルのカラーコンポーネントは出力画像に以下のように格納されます。

  • 出力画像がアンパッキング(UC8,US16,S16,D64)の場合:
    • 出力画像のチャネル0 = 変換テーブルの rgbRed
    • 出力画像のチャネル1 = 変換テーブルの rgbGreen
    • 出力画像のチャネル2 = 変換テーブルの rgbBlue
  • 出力画像がパッキング(RGB24)の場合:
    • 出力画像の R = 変換テーブルの rgbRed
    • 出力画像の G = 変換テーブルの rgbGreen
    • 出力画像の B = 変換テーブルの rgbBlue
  • 出力画像がパッキング(RGB32)の場合:
    • 出力画像の R = 変換テーブルの rgbRed
    • 出力画像の G = 変換テーブルの rgbGreen
    • 出力画像の B = 変換テーブルの rgbBlue
    • 出力画像の A = 変換テーブルの rgbReserved


要求する入出力画像数:
項目定数
入力画像1SrcImageCount フィールド
出力画像1DstImageCount フィールド

処理対象画像の条件:

処理対象の画像は下記の条件を満たしている必要が有ります。

  • 入力画像と出力画像の処理範囲の幅と高さが等しい事 -
  • 入力画像の画像種別とチャネル数が以下の何れか -
  • 出力画像の画像種別とチャネル数が以下の何れか -


関連する FIE 関数:

fnFIE_make_pseudo_colormap

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using fvalgcli;    // FvPluginXXXX attribute requires fvalgcli

namespace User.SampleCode
{
    public partial class Conversion
    {
        // ============================================================
        /// <summary>
        /// 擬似カラー化クラス.
        /// </summary>
        [FvPluginExecute]
        public void PseudoColor()
        {
            // (1) 入力画像の読み込み.
            FVIL.Data.CFviImage    src = new FVIL.Data.CFviImage(Defs.TestImageDir + "/palette_UC8.png");

            // --- 有効化オプションに対応する出力画像のサイズ情報.
            FVIL.ImageSize[] sizes = new FVIL.ImageSize[]
            {
                new FVIL.ImageSize(160, 120, FVIL.ImageType.UC8, 3),
                new FVIL.ImageSize(160, 120, FVIL.ImageType.US16, 3),
                new FVIL.ImageSize(160, 120, FVIL.ImageType.RGB32, 1),
                new FVIL.ImageSize(160, 120, FVIL.ImageType.RGB24, 1),
                new FVIL.ImageSize(160, 120, FVIL.ImageType.S16, 3),
                new FVIL.ImageSize(160, 120, FVIL.ImageType.D64, 3),
            };

            // --- カラー変換テーブルの種別.
            f_colormap_type[] types = new f_colormap_type[]
            {
                f_colormap_type.F_COLORMAP_GRAY, 
                f_colormap_type.F_COLORMAP_RED, 
                f_colormap_type.F_COLORMAP_GREEN, 
                f_colormap_type.F_COLORMAP_BLUE, 
                f_colormap_type.F_COLORMAP_RAINBOW_CYCLIC, 
                f_colormap_type.F_COLORMAP_RAINBOW7, 
                f_colormap_type.F_COLORMAP_RAINBOW4, 
                f_colormap_type.F_COLORMAP_RAINBOW, 
                f_colormap_type.F_COLORMAP_LAND, 
                f_colormap_type.F_COLORMAP_HOTCOLD, 
                f_colormap_type.F_COLORMAP_LEAF, 
                f_colormap_type.F_COLORMAP_KAKI, 
                f_colormap_type.F_COLORMAP_OCEAN,
            };

            // (2) 実行.
            for(int valid_option=0 ; valid_option<sizes.Length ; valid_option++)
            {
                for(int index=0 ; index<types.Length ; index++)
                {
                    // (2-1) インスタンス準備.
                    FVIL.Data.CFviImage    dst = new FVIL.Data.CFviImage();
                    FVIL.Conversion.CFviPseudoColor parser = new FVIL.Conversion.CFviPseudoColor(src, dst, types[index], 0, 255);

                    // (2-2) 出力画像の有効化.
                    parser.Validate(valid_option);

                    // (2-3) 実行.
                    parser.Execute();

                    // (2-4) 視覚的な確認の為のファイル保存.
                    string    filename = "";
                    switch(valid_option)
                    {
                        case 0:
                        case 1:
                        case 2:
                            filename = Defs.ResultDir + string.Format("/Conversion.PseudoColor.{0:00}.{1:00}.png", valid_option, index);
                            break;
                        case 3:
                            filename = Defs.ResultDir + string.Format("/Conversion.PseudoColor.{0:00}.{1:00}.bmp", valid_option, index);
                            break;
                        case 4:
                        case 5:
                            filename = Defs.ResultDir + string.Format("/Conversion.PseudoColor.{0:00}.{1:00}.tiff", valid_option, index);
                            break;
                    }
                    dst.Save(filename);
                }
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports fvalgcli
' FvPluginXXXX attribute requires fvalgcli
Namespace SampleCode
    Partial Public Class Conversion
        ' ============================================================
        ''' <summary>
        ''' 擬似カラー化クラス.
        ''' </summary>
        <FvPluginExecute()> _
        Public Sub PseudoColor()
            ' (1) 入力画像の読み込み.
            Dim src As New FVIL.Data.CFviImage(Defs.TestImageDir + "/palette_UC8.png")

            ' --- 有効化オプションに対応する出力画像のサイズ情報.
            Dim sizes As FVIL.ImageSize() = New FVIL.ImageSize() _
            { _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.UC8, 3), _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.US16, 3), _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.RGB32, 1), _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.RGB24, 1), _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.S16, 3), _
             New FVIL.ImageSize(160, 120, FVIL.ImageType.D64, 3) _
            }

            ' --- カラー変換テーブルの種別.
            Dim types As f_colormap_type() = New f_colormap_type() _
            { _
             f_colormap_type.F_COLORMAP_GRAY, _
             f_colormap_type.F_COLORMAP_RED, _
             f_colormap_type.F_COLORMAP_GREEN, _
             f_colormap_type.F_COLORMAP_BLUE, _
             f_colormap_type.F_COLORMAP_RAINBOW_CYCLIC, _
             f_colormap_type.F_COLORMAP_RAINBOW7, _
             f_colormap_type.F_COLORMAP_RAINBOW4, _
             f_colormap_type.F_COLORMAP_RAINBOW, _
             f_colormap_type.F_COLORMAP_LAND, _
             f_colormap_type.F_COLORMAP_HOTCOLD, _
             f_colormap_type.F_COLORMAP_LEAF, _
             f_colormap_type.F_COLORMAP_KAKI, _
             f_colormap_type.F_COLORMAP_OCEAN _
            }

            ' (2) 実行.
            For valid_option As Integer = 0 To sizes.Length - 1
                For index As Integer = 0 To types.Length - 1
                    ' (2-1) インスタンス準備.
                    Dim dst As New FVIL.Data.CFviImage()
                    Dim parser As New FVIL.Conversion.CFviPseudoColor(src, dst, types(index), 0, 255)

                    ' (2-2) 出力画像の有効化.
                    parser.Validate(valid_option)

                    ' (2-3) 実行.
                    parser.Execute()

                    ' (2-4) 視覚的な確認の為のファイル保存.
                    Dim filename As String = ""
                    Select Case valid_option
                        Case 0, 1, 2
                            filename = Defs.ResultDir + String.Format("/Conversion.PseudoColor.{0:00}.{1:00}.png", valid_option, index)
                            Exit Select
                        Case 3
                            filename = Defs.ResultDir + String.Format("/Conversion.PseudoColor.{0:00}.{1:00}.bmp", valid_option, index)
                            Exit Select
                        Case 4, 5
                            filename = Defs.ResultDir + String.Format("/Conversion.PseudoColor.{0:00}.{1:00}.tiff", valid_option, index)
                            Exit Select
                    End Select
                    dst.Save(filename)
                Next
            Next
        End Sub
    End Class
End Namespace


元画像
F_COLORMAP_GRAY
(濃淡)
F_COLORMAP_RED
(赤色)
F_COLORMAP_GREEN
(緑色)
F_COLORMAP_BLUE
(青色)
F_COLORMAP_RAINBOW_CYCLIC
(虹色サイクリック)
F_COLORMAP_RAINBOW7
(虹色7色)
F_COLORMAP_RAINBOW4
(虹色4色)
F_COLORMAP_RAINBOW
(虹色)
F_COLORMAP_LAND
(地形図)
F_COLORMAP_HOTCOLD
(赤青)
F_COLORMAP_LEAF
(葉色)
F_COLORMAP_KAKI
(柿色)
F_COLORMAP_OCEAN
(海色)

Inheritance Hierarchy

System..::..Object
FVIL..::..CFviObject
FVIL..::..CFviImageParser
FVIL.Conversion..::..CFviConversion
FVIL.Conversion..::..CFviPseudoColor

See Also