1次元エッジ検出クラス(放射線方向)
namespace FVCL::Edge
指定した円の中心放射上にエッジ検出するクラスです。
- 必要条件:
- ヘッダー: FVCLbasic.h
- 要求する入出力:
-
- 処理対象画像の条件:
- 処理対象の画像は下記の条件を満たしている必要が有ります。
- 解説:
- 指定した円の中心放射上にエッジを検出します。
- 放射状にエッジ計測する方向は、検出ラインの本数によって決定します。 計測開始方向は常に画面右方向(0 度の位置)になり、 一周2π(360度)を m_Number で 設定された個数で割った角度の方向にエッジ検出線を設定します。
- 【サブピクセル値計算】
このクラスでのサブピクセル値計算は、閾値の設定により変化します。
詳しくは、 SetThreshold をご参照ください。
- 閾値が 0~255 の場合
初めて閾値を超えた微分値位置と、その前後2個分の範囲の微分データに対して重み付き平均を求め、 それをサブピクセル位置とします。 但し、この範囲が微分値データの範囲を超えてしまった場合はエラーとなります。
- 閾値が -1 の場合
最大微分位置の前後で、(最大微分値*75/100)を超える部分に、 更に前後2個分のデータを加えた範囲における重み付き平均をサブピクセル値として求めます。 但し、この重み付き平均を求める範囲が、微分データの範囲を超えてしまった場合はエラーとなります。
- 計測位置の設定:
-
- 計測位置が画像領域を超える場合はパラメータエラーとなります。
但し、画像の右端にパディングがある場合は、 画像の水平サイズを僅かに超えてもパラメータエラーとならない場合があります。 その場合は、画像右端とパディングの境界部分を誤検出する可能性があります。
- 計測データ:
- 計測データは SetResult で設定された エッジ検出結果格納用オブジェクト (CFvEdgeResult) に格納されます。 検出結果から 単一の計測データ (CFvEdgeData) を取得するには、 CFvEdgeResult::GetData を使用してください。 エッジを1つも検出できなかった場合は、 FVCL_ErrorCode::NOT_FOUND を通知します。
-
- 処理対象画像の有効性検査:
- 入力画像の有効性検査
このクラスの CheckValidity 関数で入力画像の有効性を検査できます。 この関数はスタティックメンバですので、このクラスのインスタンスを生成せずに直接呼び出す事ができます。
- 入力画像の整合性検査
このクラスの IsValid メソッドで入力画像の整合性を検査できます。 このメソッドが false を返す場合は、前述の処理対象画像の条件を満たしていない為、 実行できない事を意味します。
- 初期値:
- メンバ変数は、下記のように初期化されます。
- サンプルコード:
-
- ソースコード:
void RadialEdge()
{
{
_tprintf(_T("%s: Failed to load image file. code=%d\n"), __TFUNCTION__, status);
return;
}
return;
_tprintf(_T(
"%s: Failed to execute. code=%d\n"), __TFUNCTION__, parser.
GetErrorCode());
{
{
center.SetSize( 3, 3 );
center.GetPen().SetColor(
RGB(0,0,255) );
circle.GetPen().SetColor(
RGB(0,0,255) );
{
}
}
{
position.GetPen().SetColor(
RGB(255,0,0) );
}
}
}
- バグ:
- FVCLbasic v1.2.0.0: 処理対象画像の水平サイズが 4 の倍数でない場合に、不正な検出結果を返す不具合を改修しました。
- バージョン
- FVCLbasic v1.2.0.0: (機能互換に影響) プロジェクションを取る処理の精度向上を行いました。前バージョンとの機能互換に影響があります。
プロジェクションを取るための対象画素の位置を固定小数点で計算していた為、精度向上のため浮動小数点に変更しました。 この変更に伴い、前バージョンとの処理結果に相違が発生する場合があります。
|
| CFvRadialEdge () |
| コンストラクタ [詳解]
|
|
| CFvRadialEdge (const FVCL::Data::CFvImage *src, CFvEdgeResult *result) |
| 初期値指定コンストラクタ [詳解]
|
|
virtual | ~CFvRadialEdge () |
| デストラクタ [詳解]
|
|
virtual bool | Execute () |
| 処理の実行 [詳解]
|
|
virtual bool | IsValid () const |
| 入力画像の有効性検査 [詳解]
|
|
virtual bool | Validate (INT option=0) const |
| 出力画像の有効化 [詳解]
|
|
virtual FVCL::ImageSize | GetValidSize (INT index, INT option=0) const |
| 出力画像の有効サイズの取得 [詳解]
|
|
bool | SetRadial (const FVCL::Data::CFvCircle &radial) |
| 検出線設定円の設定 [詳解]
|
|
const FVCL::Data::CFvCircle & | GetRadial () const |
| 検出線設定円の取得 [詳解]
|
|
bool | SetNumber (INT number) |
| 検出線数の設定 [詳解]
|
|
INT | GetNumber () const |
| 検出線数の取得 [詳解]
|
|
bool | SetScanDirection (INT direction) |
| 検出線方向の設定 [詳解]
|
|
INT | GetScanDirection () const |
| 検出線方向の取得 [詳解]
|
|
bool | SetThreshold (INT threshold) |
| エッジ検出閾値の設定 [詳解]
|
|
INT | GetThreshold () const |
| エッジ検出閾値の取得 [詳解]
|
|
virtual CFvRadialEdge & | operator= (const CFvRadialEdge &src) |
| 代入オペレータ [詳解]
|
|
virtual bool | operator== (const CFvRadialEdge &src) const |
| 比較オペレータ(==) [詳解]
|
|
virtual bool | operator!= (const CFvRadialEdge &src) const |
| 比較オペレータ(!=) [詳解]
|
|
| CFvEdge () |
| コンストラクタ [詳解]
|
|
virtual | ~CFvEdge () |
| デストラクタ [詳解]
|
|
virtual bool | SetResult (CFvEdgeResult *result) |
| エッジ検出結果格納用オブジェクトの設定 [詳解]
|
|
virtual CFvEdgeResult * | GetResult () const |
| エッジ検出結果格納用オブジェクトの取得 [詳解]
|
|
virtual CFvEdge & | operator= (const CFvEdge &src) |
| 代入オペレータ [詳解]
|
|
virtual bool | operator== (const CFvEdge &src) const |
| 比較オペレータ(==) [詳解]
|
|
virtual bool | operator!= (const CFvEdge &src) const |
| 比較オペレータ(!=) [詳解]
|
|
| CFvImageParser () |
| コンストラクタ [詳解]
|
|
virtual | ~CFvImageParser () |
| デストラクタ [詳解]
|
|
bool | SetSrcImage (INT index, const FVCL::Data::CFvImage *image) |
| 入力画像の設定 [詳解]
|
|
const FVCL::Data::CFvImage * | GetSrcImage (INT index) const |
| 入力画像の取得 [詳解]
|
|
INT | GetSrcImageCount () const |
| 入力画像コレクションの許容量の取得 [詳解]
|
|
bool | SetDstImage (INT index, FVCL::Data::CFvImage *image) |
| 出力画像の設定 [詳解]
|
|
FVCL::Data::CFvImage * | GetDstImage (INT index) const |
| 出力画像の取得 [詳解]
|
|
INT | GetDstImageCount () const |
| 出力画像コレクションの許容量の取得 [詳解]
|
|
virtual CFvImageParser & | operator= (const CFvImageParser &src) |
| 代入オペレータ (=) [詳解]
|
|
virtual bool | operator== (const CFvImageParser &src) const |
| 比較オペレータ (==) [詳解]
|
|
virtual bool | operator!= (const CFvImageParser &src) const |
| 比較オペレータ (!=) [詳解]
|
|
| 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 CFvObject & | operator= (const CFvObject &src) |
| 代入オペレータ [詳解]
|
|
virtual bool | operator== (const CFvObject &src) const |
| 比較オペレータ (==) [詳解]
|
|
virtual bool | operator!= (const CFvObject &src) const |
| 比較オペレータ (!=) [詳解]
|
|