圧縮特徴量の取得(マスターパタンの特徴量)
Namespace: FVIL.FPM2Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public static void GetCompressedTemplateEdges( CFviFPM2Template templ, CFviEdgeResultD64 edges ) |
Visual Basic |
---|
Public Shared Sub GetCompressedTemplateEdges ( templ As CFviFPM2Template, edges As CFviEdgeResultD64 ) |
Parameters
- templ
- Type: FVIL.FPM2..::..CFviFPM2Template
特徴量オブジェクト (テンプレート)
- edges
- Type: FVIL.Edge..::..CFviEdgeResultD64
取得した特徴量を格納するオブジェクト(内部で再確保されます。)
Remarks
マスターパタンの特徴量から圧縮特徴量を取得します。
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | 処理の途中でメモリ確保に失敗しました。メモリが不足しています。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータが不正です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | 特徴量オブジェクトが異常です。 |
52 | FVIL.ErrorCode.UNEXPECTED_ERROR | 特徴量が見つかりません。 |
関連する FIE 関数:
fnFIE_fpm_get_compressed_feature_edges
Examples
ソースコード:
出力結果:
ソースコード:
出力結果:
C# | Copy |
---|---|
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using fvalgcli; // FvPluginXXXX attribute requires fvalgcli namespace User.SampleCode { public partial class FPM2 { /// <summary> /// 圧縮特徴量の取得. /// </summary> [FvPluginExecute] public void GetCompressedEdges() { System.Reflection.MethodBase method = System.Reflection.MethodBase.GetCurrentMethod(); Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name); var timer = new FVIL.CFviTimeCounter(); double msec; // 1) インスタンスの準備. using (var matching = new FVIL.FPM2.CFviFPM2Matching()) using (var src = new FVIL.Data.CFviImage()) using (var pattern = new FVIL.Data.CFviPattern()) { // 2-1) 処理対象画像の取り込み. src.Load(Defs.TestImageDir + "/key_UC8_M.png"); // 2-2) パタン画像の読み込み. pattern.Load(Defs.TestImageDir + "/key1.pat"); // 3) パラメータ準備. // 3-1) (FPM2) 基本パラメータ設定. var param = matching.Param; param.Count = 10; param.AngleMin = new FVIL.Data.CFviAngle(-180); param.AngleMax = new FVIL.Data.CFviAngle(180); param.ScaleMin = 100; param.ScaleMax = 100; param.CompressionLevel = 3; param.ErrorRange = 1; param.ScoreThresholdL = 50; param.ScoreThresholdH = 50; // 3-4) (FPM2) 特徴量. var edge_param = new FVIL.Edge.CFviEdge2DSobelParam(); edge_param.EdgeThreshold = 120; edge_param.NmsLength = 3; // 3-4-1) (FPM2) 特徴量(テンプレート) 生成. var templ = new FVIL.FPM2.CFviFPM2Template(pattern, FVIL.FPM2.MatchMode.Normal, edge_param); // 3-4-2) (FPM2) 特徴量(処理対象画像) 生成. var target = new FVIL.FPM2.CFviFPM2Feature(src, FVIL.FPM2.MatchMode.Normal, edge_param, false); // 4) パラメータ設定. matching.Param = param; matching.Target = target; matching.Template = templ; matching.EnableAreaScore = false; matching.EnableEssential = false; // 5) 画像処理実行. timer.Start(); matching.Execute(); msec = timer.Stop(); Console.WriteLine("execute. {0} msec, count={1} ", msec.ToString("0.###"), matching.ResultSize); // 確認用) パタンのエッジ点. { var edges_pattern = templ.GetFeatureEdges(); Console.WriteLine("edges={0}", edges_pattern.Count); } // 確認用) 処理対象画像のエッジ点. { var edges_image = target.GetFeatureEdges(); Console.WriteLine("edges={0}", edges_image.Count); } // 圧縮特徴量の取得 (マスターパタンの特徴量) { var edges = new FVIL.Edge.CFviEdgeResultD64(); FVIL.FPM2.Function.GetCompressedTemplateEdges(templ, edges); Console.WriteLine("GetCompressedTemplateEdges: edges={0}", edges.Count); } // 圧縮特徴量の取得 (最後にマッチングに使用した特徴量) { var edges = new FVIL.Edge.CFviEdgeResultD64(); FVIL.FPM2.Function.GetCompressedMatchingEdges(templ, edges); Console.WriteLine("GetCompressedMatchingEdges: edges={0}", edges.Count); } // 圧縮特徴量の取得 (マッチング対象の特徴量オブジェクト) { var edges = new FVIL.Edge.CFviEdgeResultD64(); FVIL.FPM2.Function.GetCompressedFeatureEdges(templ, target, edges); Console.WriteLine("GetCompressedFeatureEdges: edges={0}", edges.Count); } } } } } |
出力結果:
Copy | |
---|---|
User.SampleCode.FPM2.GetCompressedEdges execute. 2.861 msec, count=3 edges=396 edges=1888 GetCompressedTemplateEdges: edges=51 GetCompressedMatchingEdges: edges=301 GetCompressedFeatureEdges: edges=301 |
ソースコード:
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports System.Drawing Imports fvalgcli ' FvPluginXXXX attribute requires fvalgcli Namespace SampleCode Public Partial Class FPM2 ''' <summary> ''' 圧縮特徴量の取得. ''' </summary> <FvPluginExecute> _ Public Sub GetCompressedEdges() Dim method As System.Reflection.MethodBase = System.Reflection.MethodBase.GetCurrentMethod() Console.WriteLine("{0}.{1}", method.DeclaringType.FullName, method.Name) Dim timer As New FVIL.CFviTimeCounter() Dim msec As Double ' 1) インスタンスの準備. Dim matching As New FVIL.FPM2.CFviFPM2Matching() Dim src As New FVIL.Data.CFviImage() Dim pattern As New FVIL.Data.CFviPattern() ' 2-1) 処理対象画像の取り込み. src.Load(Defs.TestImageDir & "/key_UC8_M.png") ' 2-2) パタン画像の読み込み. pattern.Load(Defs.TestImageDir & "/key1.pat") ' 3) パラメータ準備. ' 3-1) (FPM2) 基本パラメータ設定. Dim param As FVIL.FPM2.CFviFPM2Param = matching.Param param.Count = 10 param.AngleMin = New FVIL.Data.CFviAngle(-180) param.AngleMax = New FVIL.Data.CFviAngle(180) param.ScaleMin = 100 param.ScaleMax = 100 param.CompressionLevel = 3 param.ErrorRange = 1 param.ScoreThresholdL = 50 param.ScoreThresholdH = 50 ' 3-4) (FPM2) 特徴量. Dim edge_param As New FVIL.Edge.CFviEdge2DSobelParam() edge_param.EdgeThreshold = 120 edge_param.NmsLength = 3 ' 3-4-1) (FPM2) 特徴量(テンプレート) 生成. Dim templ As New FVIL.FPM2.CFviFPM2Template(pattern, FVIL.FPM2.MatchMode.Normal, edge_param) ' 3-4-2) (FPM2) 特徴量(処理対象画像) 生成. Dim target As New FVIL.FPM2.CFviFPM2Feature(src, FVIL.FPM2.MatchMode.Normal, edge_param, False) ' 4) パラメータ設定. matching.Param = param matching.Target = target matching.Template = templ matching.EnableAreaScore = False matching.EnableEssential = False ' 5) 画像処理実行. timer.Start() matching.Execute() msec = timer.[Stop]() Console.WriteLine("execute. {0} msec, count={1} ", msec.ToString("0.###"), matching.ResultSize) ' 確認用) パタンのエッジ点. If True Then Dim edges_pattern = templ.GetFeatureEdges() Console.WriteLine("edges={0}", edges_pattern.Count) End If ' 確認用) 処理対象画像のエッジ点. If True Then Dim edges_image = target.GetFeatureEdges() Console.WriteLine("edges={0}", edges_image.Count) End If ' 圧縮特徴量の取得 (マスターパタンの特徴量) If True Then Dim edges As New FVIL.Edge.CFviEdgeResultD64() FVIL.FPM2.[Function].GetCompressedTemplateEdges(templ, edges) Console.WriteLine("GetCompressedTemplateEdges: edges={0}", edges.Count) End If ' 圧縮特徴量の取得 (最後にマッチングに使用した特徴量) If True Then Dim edges As New FVIL.Edge.CFviEdgeResultD64() FVIL.FPM2.[Function].GetCompressedMatchingEdges(templ, edges) Console.WriteLine("GetCompressedMatchingEdges: edges={0}", edges.Count) End If ' 圧縮特徴量の取得 (マッチング対象の特徴量オブジェクト) If True Then Dim edges As New FVIL.Edge.CFviEdgeResultD64() FVIL.FPM2.[Function].GetCompressedFeatureEdges(templ, target, edges) Console.WriteLine("GetCompressedFeatureEdges: edges={0}", edges.Count) End If End Sub End Class End Namespace |
出力結果:
Copy | |
---|---|
User.SampleCode.FPM2.GetCompressedEdges execute. 2.861 msec, count=3 edges=396 edges=1888 GetCompressedTemplateEdges: edges=51 GetCompressedMatchingEdges: edges=301 GetCompressedFeatureEdges: edges=301 |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |