パタンオブジェクト

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

Syntax

C#
[SerializableAttribute]
public class CFviPattern : CFviImage
Visual Basic
<SerializableAttribute>
Public Class CFviPattern
	Inherits CFviImage

Remarks

パタン画像情報を保有するクラスです。

パタンオブジェクトは、パタン画像、マスク情報、登録位置の矩形情報、基準点から成り立ちます。 パタン画像は CFviImage を継承して、一般的な画像情報として保有しています。 その他の情報は、このクラスで実装したものです。


トピック


初期値と範囲 (パタンオブジェクトの固有情報):
プロパティ初期値範囲変更
RegistRect0,0-0,0範囲なしMakePattern(CFviImage, CFviRectangle, CFviPoint) で指定、または、当プロパティで変更可能です。
CenterMark0,0範囲なしMakePattern(CFviImage, CFviRectangle, CFviPoint) で指定、または、当プロパティで変更可能です。
Captionnull任意の文字列当プロパティで変更可能です。
FilePathnull有効なファイルパス当プロパティで変更可能です。
Option0範囲なし当プロパティで変更可能です。
MaskImageTypeFVIL.ImageType.UC8ImageType に定義された定数SetSize(Int32, Int32, ImageType, Int32) で決定します。
MaskHorzByte640 (byte)HorzSizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
MaskMemSize307,200 (byte)SizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。

[↑戻る]


初期値と範囲 (パタン画像部分):
プロパティ初期値範囲変更
HorzSize640 (pixel)1~SetSize(Int32, Int32, ImageType, Int32) で決定します。
VertSize480 (pixel)1~SetSize(Int32, Int32, ImageType, Int32) で決定します。
ImageTypeFVIL.ImageType.UC8FVIL.ImageType に定義された定数SetSize(Int32, Int32, ImageType, Int32) で決定します。
Channel1 (チャネル)1~16SetSize(Int32, Int32, ImageType, Int32) で決定します。
Bpp8 (bit)ImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
HorzByte640 (byte)HorzSizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
MemSize307,200 (byte)SizeImageType に依存します。SetSize(Int32, Int32, ImageType, Int32) で決定します。
Depth8 (bit)ImageType に依存します。当プロパティから変更可能です。
ImageInfoFVIL.ImageInfo.GRAYFVIL.ImageInfo に定義された定数当プロパティから変更可能です。
WindowX=0,Y=0,Width=640,Height=480X: 0~HorzSize-1、Y: 0~VertSize-1当プロパティから変更可能です。

[↑戻る]


登録位置と基準点:

登録位置の矩形情報は、登録時に使用した画像の左上を 0,0 とする絶対値です。 基準点(center_mark)は、登録位置の左上からの相対値を表します。

関連:
MakePattern(CFviImage, CFviRectangle, CFviPoint)
RegistRect
CenterMark


[↑戻る]


パタンファイル構成:

パタンファイルは、下記のように複数のファイルで構成されます。 表中の PatternName は任意の文字列です。

ファイル内容形式
PatternName.patパタン画像非圧縮のビットマップ または Raw 形式
PatternName.pat_MSKマスク情報非圧縮のビットマップ
PatternName.pat_INF登録位置の矩形と基準点iniファイル

関連:
Load(String)
Save(String)


[↑戻る]


マスクビット:

パタン画像のマスク情報を示すビットフィールド定数です。
パタン画像は、各画素に 1byte(8bit) のマスク画素が対応しており、 1つのマスク画素に8種のマスク情報を保有できるようになっています。 現在は、ここに定義される2種のマスク情報が使用されています。

名称内容
FVIL.Data.Pattern.MaskBit.None0x00マスクなし
FVIL.Data.Pattern.MaskBit.MASK0x01マスク部分
FVIL.Data.Pattern.MaskBit.ESSENTIAL0x02不可欠部分
FVIL.Data.Pattern.MaskBit.ALL0x03すべての有効なビット

関連:
SetMaskPixel(Int32, Int32, CFviPixel)
GetMaskPixel(Int32, Int32)


[↑戻る]


マスク指標:

パタン画像のマスク情報を示す定数です。
配列指標などに用いられる事を想定していますが、現在、使用されていません。

名称内容
FVIL.Data.Pattern.MaskIndex.MASK0マスク部分
FVIL.Data.Pattern.MaskIndex.ESSENTIAL1不可欠部分

[↑戻る]

Examples

下記コードは、元画像(下図)の中央付近のクリップをパタン画像として生成する例です。
パタン画像を生成するには、このクラスの MakePattern(CFviImage, CFviRectangle, CFviPoint) メソッドを使用します。 指定する座標は、矩形と基準点です。これらは共に元画像の左上を原点(0,0)とする絶対位置を指定します。 登録位置の矩形は、このクラスの RegistRect に保存されます。 基準点は、登録位置の矩形の左上からの相対位置に変換され CenterMark に保存されます。


元画像:


パタン画像:


出力結果:
User.SampleCode.Basic.MakePattern
rect=134.00,74.00,181.00,169.00
mark=33.00,65.00

ソースコード:
C# Copy imageCopy
//    $Revision: 1.3 $

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

namespace User.SampleCode
{
    public partial class Basic
    {
        /// <summary>
        /// サーチパタンの作成.
        /// </summary>
        [FvPluginExecute]
        public void MakePattern()
        {
            System.Reflection.MethodBase method = System.Reflection.MethodBase.GetCurrentMethod();
            Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name);

            // 1) インスタンスの準備.
            FVIL.Data.CFviImage src = new FVIL.Data.CFviImage();

            // 2) 処理対象画像の取り込み.
            FVIL.File.Function.LoadImageFile(Defs.TestImageDir + "/clip_UC8_M.png", src, FVIL.PixelMode.Unpacking);

            // 3) パタン生成.
            FVIL.Data.CFviPattern pattern = new FVIL.Data.CFviPattern();
            FVIL.Data.CFviRectangle rect = new FVIL.Data.CFviRectangle( 134, 74, 181, 169 );
            FVIL.Data.CFviPoint mark = new FVIL.Data.CFviPoint( 167, 139 );
            pattern.MakePattern( src, rect, mark );

            // 4) ファイル保存.
            pattern.Save(Defs.ResultDir + "/Basic.MakePattern.pat");

            // 5) ファイル読み込み.
            FVIL.Data.CFviPattern    work = new FVIL.Data.CFviPattern();
            work.Load(Defs.ResultDir + "/Basic.MakePattern.pat");

            FVIL.Data.CFviRectangle _rect = work.RegistRect;
            FVIL.Data.CFviPoint _mark = work.CenterMark;

            Console.WriteLine("rect={0:F},{1:F},{2:F},{3:F}", _rect.St.X, _rect.St.Y, _rect.Ed.X, _rect.Ed.Y);
            Console.WriteLine("mark={0:F},{1:F}", _mark.X, _mark.Y);
        }
    };
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports fvalgcli
' FvPluginXXXX attribute requires fvalgcli
Namespace SampleCode
    Public Partial Class Basic
        ''' <summary>
        ''' サーチパタンの作成.
        ''' </summary>
        <FvPluginExecute> _
        Public Sub MakePattern()
            Dim method As System.Reflection.MethodBase = System.Reflection.MethodBase.GetCurrentMethod()
            Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name)

            ' 1) インスタンスの準備.
            Dim src As New FVIL.Data.CFviImage()

            ' 2) 処理対象画像の取り込み.
            FVIL.File.[Function].LoadImageFile(Defs.TestImageDir & "/clip_UC8_M.png", src, FVIL.PixelMode.Unpacking)

            ' 3) パタン生成.
            Dim pattern As New FVIL.Data.CFviPattern()
            Dim rect As New FVIL.Data.CFviRectangle(134, 74, 181, 169)
            Dim mark As New FVIL.Data.CFviPoint(167, 139)
            pattern.MakePattern(src, rect, mark)

            ' 4) ファイル保存.
            pattern.Save(Defs.ResultDir & "/Basic.MakePattern.pat")

            ' 5) ファイル読み込み.
            Dim work As New FVIL.Data.CFviPattern()
            work.Load(Defs.ResultDir & "/Basic.MakePattern.pat")

            Dim _rect As FVIL.Data.CFviRectangle = work.RegistRect
            Dim _mark As FVIL.Data.CFviPoint = work.CenterMark

            Console.WriteLine("rect={0:F},{1:F},{2:F},{3:F}", _rect.St.X, _rect.St.Y, _rect.Ed.X, _rect.Ed.Y)
            Console.WriteLine("mark={0:F},{1:F}", _mark.X, _mark.Y)
        End Sub
    End Class
End Namespace

Inheritance Hierarchy

See Also