WIL説明書(C++)  3.1.0
全メンバ一覧 | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開変数類
FVCL::Filter::CFvNms クラス

非極大値の抑制(エッジ勾配を利用) [詳解]

詳解

非極大値の抑制(エッジ勾配を利用)

namespace FVCL::Filter

非極大抑制は、画像に対して1次微分を施した後に実行されます。 注目画素の勾配を、勾配方向に隣接した2つの画素の勾配と比較します。 注目画素の勾配が隣接した画素の勾配より大きかった場合、局所的な最大値となり勾配強度は保持されて後の処理に利用されます。 そうでない場合は、0が設定されます。

非極大抑制は、細線化のような効果があります。 しかしながら、勾配方向を考慮しており、処理結果は必ずしも1画素の幅の線になるとは限りません。

なお、出力画像の周囲1画素は0になります。 また、 与えられたx方向とy方向のエッジ勾配強度は、互いに絶対値演算がなされて、エッジ勾配強度として処理に利用されます。

Threshold は勾配の非常に小さい値を取り除くために利用されます。 1以上の値を与えてください。

必要条件:
ヘッダー: FVCLbasic.h
FIE:
fnFIE_nms
要求する入出力:
項目 定数
入力画像 2 SrcImageCount
出力画像 1 DstImageCount
  • 入力画像1 : X方向のエッジ勾配強度画像
  • 入力画像2 : Y方向のエッジ勾配強度画像
  • 出力画像 : エッジ勾配強度画像

処理対象画像の条件:
入力画像と出力画像は下記の条件を全て満たしていなければなりません。
  • 入力画像と出力画像の処理範囲サイズ、チャネル数が等しい事
  • 画像サイズの横縦ともに 3 画素以上ある事
  • 入力画像の画像種別
    • FVCL::ImageType::S16
    • FVCL::ImageType::D64

  • 出力画像の画像種別
    • FVCL::ImageType::US16
    • FVCL::ImageType::D64


※入力画像 が S16 型の場合、 出力画像は US16 型 または D64 型となります。
※入力画像 が D64 型の場合、 出力画像は D64 型となります。
+ FVCL::Filter::CFvNms の継承関係図

公開型

enum  {
  SrcImageCount = 2,
  DstImageCount = 1
}
 

公開メンバ関数

 CFvNms ()
 コンストラクタ [詳解]
 
 CFvNms (const FVCL::Data::CFvImage *magx, const FVCL::Data::CFvImage *magy, FVCL::Data::CFvImage *dst)
 初期値指定コンストラクタ [詳解]
 
 CFvNms (const FVCL::Data::CFvImage *magx, const FVCL::Data::CFvImage *magy, FVCL::Data::CFvImage *dst, DOUBLE threshold)
 初期値指定コンストラクタ [詳解]
 
virtual ~CFvNms ()
 デストラクタ [詳解]
 
virtual bool Execute ()
 処理の実行 [詳解]
 
virtual bool IsValid () const
 入出力画像の有効性検査 [詳解]
 
virtual bool Validate (INT option=0) const
 出力画像の有効化 [詳解]
 
virtual FVCL::ImageSize GetValidSize (INT index, INT option=0) const
 出力画像の有効サイズの取得 [詳解]
 
virtual CFvNmsoperator= (const CFvNms &src)
 代入オペレータ (=) [詳解]
 
virtual bool operator== (const CFvNms &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvNms &src) const
 比較オペレータ (!=) [詳解]
 
virtual bool SetThreshold (DOUBLE value)
 閾値の設定 [詳解]
 
virtual DOUBLE GetThreshold () const
 閾値の取得 [詳解]
 
- 基底クラス FVCL::CFvImageParser に属する継承公開メンバ関数
 CFvImageParser ()
 コンストラクタ [詳解]
 
virtual ~CFvImageParser ()
 デストラクタ [詳解]
 
bool SetSrcImage (INT index, const FVCL::Data::CFvImage *image)
 入力画像の設定 [詳解]
 
const FVCL::Data::CFvImageGetSrcImage (INT index) const
 入力画像の取得 [詳解]
 
INT GetSrcImageCount () const
 入力画像コレクションの許容量の取得 [詳解]
 
bool SetDstImage (INT index, FVCL::Data::CFvImage *image)
 出力画像の設定 [詳解]
 
FVCL::Data::CFvImageGetDstImage (INT index) const
 出力画像の取得 [詳解]
 
INT GetDstImageCount () const
 出力画像コレクションの許容量の取得 [詳解]
 
virtual CFvImageParseroperator= (const CFvImageParser &src)
 代入オペレータ (=) [詳解]
 
virtual bool operator== (const CFvImageParser &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvImageParser &src) const
 比較オペレータ (!=) [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承公開メンバ関数
 CFvObject ()
 標準のコンストラクタ [詳解]
 
virtual ~CFvObject ()
 デストラクタ [詳解]
 
INT SetErrorCode (INT err)
 エラーコードの設定 [詳解]
 
INT SetErrorCode (INT err) const
 エラーコードの設定 [詳解]
 
INT GetErrorCode () const
 エラーコードの取得 [詳解]
 
bool SetAllocateOption (INT value)
 画像領域確保時のオプションの設定 [詳解]
 
INT GetAllocateOption () const
 画像領域確保時のオプションの取得 [詳解]
 
void * operator new (size_t uiSize)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject)
 delete[] オペレータ [詳解]
 
void * operator new (size_t uiSize, LPCSTR szFileName, INT iLine)
 new オペレータ [詳解]
 
void * operator new[] (size_t uiSize, LPCSTR szFileName, INT iLine)
 new[] オペレータ [詳解]
 
void operator delete (void *pvObject, LPCSTR szFileName, INT iLine)
 delete オペレータ [詳解]
 
void operator delete[] (void *pvObject, LPCSTR szFileName, INT iLine)
 delete[] オペレータ [詳解]
 
virtual CFvObjectoperator= (const CFvObject &src)
 代入オペレータ [詳解]
 
virtual bool operator== (const CFvObject &src) const
 比較オペレータ (==) [詳解]
 
virtual bool operator!= (const CFvObject &src) const
 比較オペレータ (!=) [詳解]
 

静的公開メンバ関数

static INT CheckValidity (const FVCL::Data::CFvImage &src)
 入力画像の有効性検査 [詳解]
 
static INT CheckValidityDst (const FVCL::Data::CFvImage &dst)
 出力画像の有効性検査 [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承静的公開メンバ関数
static bool SetDefaultAllocateOption (INT value)
 既定の画像領域確保時のオプションの設定 [詳解]
 
static INT GetDefaultAllocateOption ()
 既定の画像領域確保時のオプションの取得 [詳解]
 

限定公開変数類

DOUBLE m_Threshold
 閾値 [詳解]
 
- 基底クラス FVCL::CFvImageParser に属する継承限定公開変数類
INT m_cpu_mode
 CPUモード [詳解]
 
CFvArray< FVCL::Data::CFvImage const * > m_SrcImages
 入力画像コレクション [詳解]
 
CFvArray< FVCL::Data::CFvImage * > m_DstImages
 出力画像コレクション [詳解]
 
- 基底クラス FVCL::CFvObject に属する継承限定公開変数類
INT m_ErrorCode
 エラーコード [詳解]
 
INT m_AllocateOption
 画像領域確保時のオプション [詳解]
 

その他の継承メンバ

- 基底クラス FVCL::CFvObject に属する継承限定公開メンバ関数
INT fnCPUCheck ()
 CPU情報の取得 [詳解]
 

列挙型メンバ詳解

anonymous enum
列挙値
SrcImageCount 

入力画像の許容数

このクラスが受け付ける入力画像数を示します。

DstImageCount 

出力画像の許容数

このクラスが受け付ける出力画像数を示します。

構築子と解体子

FVCL::Filter::CFvNms::CFvNms ( )

コンストラクタ

標準のコンストラクタです。

FVCL::Filter::CFvNms::CFvNms ( const FVCL::Data::CFvImage magx,
const FVCL::Data::CFvImage magy,
FVCL::Data::CFvImage dst 
)

初期値指定コンストラクタ

初期値を指定してオブジェクトを構築します。

引数
[in]magx入力画像(X方向のエッジ勾配強度画像)
[in]magy入力画像(Y方向のエッジ勾配強度画像)
[in]dst出力画像(エッジ勾配強度画像)
FVCL::Filter::CFvNms::CFvNms ( const FVCL::Data::CFvImage magx,
const FVCL::Data::CFvImage magy,
FVCL::Data::CFvImage dst,
DOUBLE  threshold 
)

初期値指定コンストラクタ

初期値を指定してオブジェクトを構築します。

引数
[in]magx入力画像(X方向のエッジ勾配強度画像)
[in]magy入力画像(Y方向のエッジ勾配強度画像)
[in]dst出力画像(エッジ勾配強度画像)
[in]threshold非常に小さい勾配を取り除くための閾値 [初期値:0、範囲:0~]
例外
CFveBadParamExceptionパラメータに誤りが有ります。
FVCL::Filter::CFvNms::~CFvNms ( )
virtual

デストラクタ

関数詳解

FVCL::Filter::CFvNms::Execute ( )
virtual

処理の実行

現在、メンバ変数に設定されている入力画像を処理し、結果を出力画像へ格納します。

戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスエラー
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE 領域の確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER パラメータに誤りがあります。
12 FVCL_ErrorCode::INVALID_OBJECT 指定された画像オブジェクトが無効です。
その他 入出力画像が有効でなければ IsValid のエラーコードが設定されます。

FVCL::CFvImageParserを実装しています。

FVCL::Filter::CFvNms::IsValid ( ) const
virtual

入出力画像の有効性検査

現在、メンバ変数に設定されている入力画像と出力画像の有効性を確認します。

戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード:
定数 内容
81 FVCL_ErrorCode::HAVE_NOT_IMAGE 画像オブジェクトが設定されていません。
91 FVCL_ErrorCode::INVALID_SRC_IMAGETYPE 入力側の画像種別が不正です。
92 FVCL_ErrorCode::INVALID_DST_IMAGETYPE 出力側の画像種別が不正です。
93 FVCL_ErrorCode::NOMATCH_IMAGETYPE 入力画像と出力画像の画像種別が一致していません。
99 FVCL_ErrorCode::NOMATCH_CHANNEL 入力画像と出力画像のチャネル数が一致していません。
19 FVCL_ErrorCode::INVALID_PROCAREA 画像オブジェクトの処理範囲が許容値外です。
その他 入力画像が有効でなければ CheckValidity の戻り値が設定されます。
参照
CheckValidity

FVCL::CFvImageParserを実装しています。

FVCL::Filter::CFvNms::Validate ( INT  option = 0) const
virtual

出力画像の有効化

現在、メンバ変数に設定されている出力画像を有効化します。

引数
[in]option挙動制御オプション
  • 0 : 入力側の型に合わせます。
  • 1 : D64 にします。

戻り値
true正常
false異常
GetErrorCodeメソッドによりエラーコードを取得できます。
エラーコード:
定数 内容
81 FVCL_ErrorCode::HAVE_NOT_IMAGE 入力画像または出力画像が設定されていません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE 処理の途中でメモリ確保に失敗しました。メモリが不足しています。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
その他 入力画像が有効でなければ CheckValidity の戻り値が設定されます。
解説:
このメソッドを実行すると、現在の出力画像の有効性に関わらず、 強制的に領域の再確保が行われます。 出力画像の領域サイズは、入力画像の処理範囲に合わせられます。
参照
CheckValidity

FVCL::CFvImageParserを実装しています。

virtual FVCL::ImageSize FVCL::Filter::CFvNms::GetValidSize ( INT  index,
INT  option = 0 
) const
virtual

出力画像の有効サイズの取得

現在設定されている入力画像を処理する為に必要な出力画像のサイズを取得します。
出力画像を必要としない画像処理の場合は例外(FVCL_ErrorCode::NOT_SUPPORTED)を発行します。

引数
[in]index出力画像の配列指標 [0~(GetDstImageCount-1)] ※複数の出力が有る場合、指標によって取得される情報が異なる場合があります。
[in]option挙動制御オプション [0:既定の動作] ※指定できる範囲は派生クラスにより異なります。派生クラスの Validate の説明を参照ください。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
21 FVCL_ErrorCode::NOT_SUPPORTED サポートされていません。
11 FVCL_ErrorCode::INVALID_PARAMETER 指定された引数に誤りがあります。
81 FVCL_ErrorCode::HAVE_NOT_IMAGE 画像オブジェクトが設定されていません。
91 FVCL_ErrorCode::INVALID_SRC_IMAGETYPE 入力側の画像種別が不正です。
94 FVCL_ErrorCode::INVALID_SRC_IMAGESIZE 入力側の画像のサイズが無効です。
97 FVCL_ErrorCode::INVALID_SRC_CHANNEL 入力側の画像のチャネル数が無効です。
19 FVCL_ErrorCode::INVALID_PROCAREA 処理範囲に誤りがあります。
解説:
このメソッドの仕様は派生クラスによって異なります。 詳しくは、派生クラスの説明及び Validate メソッドの説明を参照ください。
基本的な仕様は以下の通りです。

幅及び高さ: 現在設定されている入力画像の処理範囲サイズに合わせます。
※1) CFvEnhance の場合は、画像サイズに合わせます。
※2) 幾何変換の場合は option に 1 を指定すると変換後のサイズを取得できます。

画像種別: 現在設定されている入力画像の画像種別に合わせます。
入出力画像の型が異なる画像処理の場合はその限りではなく処理可能な型に合わせます。
※1) 派生クラスによって option により変換後の画像種別を指定できるものがあります。

チャネル数: 現在設定されている入力画像のチャネル数に合わせます。
入出力画像のチャネル数が異なる画像処理の場合はその限りではなく処理可能なチャネル数に合わせます。

FVCL::CFvImageParserを再実装しています。

FVCL::Filter::CFvNms::CheckValidity ( const FVCL::Data::CFvImage src)
static

入力画像の有効性検査

引数に指定された画像オブジェクトが、この画像処理クラスで処理可能か否かを検査します。

引数
[in]src検査対象の画像オブジェクトへの参照
戻り値
FVCL_ErrorCode::_SUCCESS有効な画像です。
FVCL_ErrorCode::INVALID_SRC_IMAGETYPE画像種別が不正です。
参照
IsValid
Validate
FVCL::Filter::CFvNms::CheckValidityDst ( const FVCL::Data::CFvImage dst)
static

出力画像の有効性検査

引数に指定された画像オブジェクトが、この画像処理クラスで処理可能か否かを検査します。

引数
[in]dst検査対象の画像オブジェクトへの参照
戻り値
FVCL_ErrorCode::_SUCCESS有効な画像です。
FVCL_ErrorCode::INVALID_DST_IMAGETYPE画像種別が不正です。
参照
IsValid
Validate
FVCL::Filter::CFvNms::operator= ( const CFvNms src)
virtual

代入オペレータ (=)

同一クラスのオブジェクトの内容を自身に代入します。

引数
[in]src代入するオブジェクトへの参照
戻り値
このオブジェクトへの参照を返します。
FVCL::Filter::CFvNms::operator== ( const CFvNms src) const
virtual

比較オペレータ (==)

同一クラスのオブジェクトの内容と自身を比較します。

引数
[in]src比較対象のオブジェクトへの参照
戻り値
true一致
false不一致
FVCL::Filter::CFvNms::operator!= ( const CFvNms src) const
virtual

比較オペレータ (!=)

同一クラスのオブジェクトの内容と自身を比較します。

引数
[in]src比較対象のオブジェクトへの参照
戻り値
true不一致
false一致
FVCL::Filter::CFvNms::SetThreshold ( DOUBLE  value)
virtual

閾値の設定

非常に小さい勾配を取り除くための閾値を設定します。

引数
[in]value閾値 [初期値:0、範囲:0~]
戻り値
true正常
false異常
FVCL::Filter::CFvNms::GetThreshold ( ) const
virtual

閾値の取得

戻り値
現在設定されている値を返します。

メンバ詳解

FVCL::Filter::CFvNms::m_Threshold
protected

閾値

参照
SetThreshold
GetThreshold

Documentation copyright © 2007 Tokyo Electron Device Limited. [B-001864]
Generated on 2025年11月17日(月) 08時44分10秒 for WIL説明書(C++) by doxygen 1.8.11