Canny 法によるエッジ検出
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_edge_canny( FHANDLE hImgSrc, FHANDLE hImgOut, int iTSwitch, double dTHigh, double dTLow, double dSigma, uint uiMinLen ) |
Visual Basic |
---|
Public Shared Function fnFIE_edge_canny ( hImgSrc As FHANDLE, hImgOut As FHANDLE, iTSwitch As Integer, dTHigh As Double, dTLow As Double, dSigma As Double, uiMinLen As UInteger ) As Integer |
Parameters
- hImgSrc
- Type: fvalgcli..::..FHANDLE
入力画像 ( type: uc8 )
- hImgOut
- Type: fvalgcli..::..FHANDLE
出力画像 ( type: uc8 )
- iTSwitch
- Type: System..::..Int32
閾値のタイプ指定- iTSwitch = 0 :2つの閾値である割合が 0 < threshold < 1
- iTSwitch = 1 :2つの閾値が任意の値
- dTHigh
- Type: System..::..Double
閾値の上限- ( iTSwitch == 0 && 0 < dTLow < 1 && 0 < dTHigh < 1 ) の場合
指定する閾値は割合です - ( iTSwitch == 1 && dTLow ≧ 0 && dTHigh > 0 ) の場合
指定する閾値は任意の値です
2つの閾値ともに 2^16 より小さい値を指定してください - ( iTSwitch == 0 && dTLow == 0 && dTHigh == 0 ) の場合
dTHigh(0.7) 、 dTLow(0.28)のデフォルト値が指定されます
- ( iTSwitch == 0 && 0 < dTLow < 1 && 0 < dTHigh < 1 ) の場合
- dTLow
- Type: System..::..Double
閾値の下限
- dSigma
- Type: System..::..Double
ガウシアンマスクのσ
- uiMinLen
- Type: System..::..UInt32
エッジの最小の長さ
この値より小さい孤立したエッジはノイズと判定して削除されます
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された
|
F_ERR_INVALID_IMAGE | 不正な画像が渡された
|
F_ERR_NOMEMORY | メモリ不足エラー |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using fvalgcli; namespace TC { public partial class FIE { [FvPluginExecute] public void fnFIE_edge_canny() { string filepath = TestImageDir + "/testdata/image_file_8bpp.bmp"; int status = (int)f_err.F_ERR_NONE; FHANDLE hImageSrc = FHANDLE.Zero; FHANDLE hImageDst = FHANDLE.Zero; try { int iTSwitch = 0; double dTLow = 0.2; double dTHigh = 0.7; double dSigma = 0.6; uint uiMinLen = 0; api.fnFIE_load_bmp(filepath, ref hImageSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8); hImageDst = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, api.fnFIE_img_get_channels(hImageSrc), api.fnFIE_img_get_width(hImageSrc), api.fnFIE_img_get_height(hImageSrc)); // エッジ検出実行. status = api.fnFIE_edge_canny(hImageSrc, hImageDst, iTSwitch, dTHigh, dTLow, dSigma, uiMinLen); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_edge_canny: エラーが発生しました。({0}n vvv )", (f_err)status); Console.WriteLine("fnFIE_edge_canny"); } finally { hImageSrc.Dispose(); hImageDst.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports System.Runtime.InteropServices Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_edge_canny() Dim filepath As String = TestImageDir & "/testdata/image_file_8bpp.bmp" Dim status As Integer = CInt(f_err.F_ERR_NONE) Dim hImageSrc As FHANDLE = FHANDLE.Zero Dim hImageDst As FHANDLE = FHANDLE.Zero Try Dim iTSwitch As Integer = 0 Dim dTLow As Double = 0.2 Dim dTHigh As Double = 0.7 Dim dSigma As Double = 0.6 Dim uiMinLen As UInteger = 0 api.fnFIE_load_bmp(filepath, hImageSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8) hImageDst = api.fnFIE_img_root_alloc(CInt(f_imgtype.F_IMG_UC8), api.fnFIE_img_get_channels(hImageSrc), api.fnFIE_img_get_width(hImageSrc), api.fnFIE_img_get_height(hImageSrc)) ' エッジ検出実行. status = api.fnFIE_edge_canny(hImageSrc, hImageDst, iTSwitch, dTHigh, dTLow, dSigma, _ uiMinLen) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_edge_canny: エラーが発生しました。({0}n vvv )", CType(status, f_err)) Console.WriteLine("fnFIE_edge_canny") Finally hImageSrc.Dispose() hImageDst.Dispose() End Try End Sub End Class |