cvSobelやcvLaplaceなど

void cv::Sobel( InputArray _src, OutputArray _dst, int ddepth, int dx, int dy, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT );

Sobelフィルタを画像にかけてエッジ抽出をする

引数

  • _src:cv::Mat型 の入力画像
  • _dst:cv::Mat型 の出力画像
  • ddepth:出力画像のビット深度。負数を指定すると入力と同じビット深度を意味する。
  • dx:x軸方向の微分回数.抽出されるのは縦エッジ
  • dy:y軸方向の微分回数.抽出されるのは横エッジ
  • ksize:フィルタのサイズ.デフォルト3で省略可
  • scale:処理後の画素値を定数倍する係数。デフォルト1で省略可
  • delta:処理後の画素値に加算される定数。デフォルト0で省略可
  • borderType:画面端での処理を指定するenum型。デフォルトBORDER_DEFAULT (4)で省略可

解説

  • OpenCV1.0時代のcvSobel関数に相当する
  • 各引数の対応は以下の通り
    OpenCV 1.0 (C Interface)OpenCV 2.4.8 (C++ Interface)
    src_src
    dst_dst
    存在しないddepth
    xorderdx
    yorderyx
    aperture_sizeksize
    存在しないscale
    存在しないdelta
    存在しないborderType
  • 指定したパラメータに対応するカーネル(フィルタ)を、getDerivKernelsで生成する
  • 生成したカーネルを sepFilter2D で画像に適用する
  • Tegra 用の最適化に関して
    • Tegra 用の最適化が有効な場合 (HAVE_TEGRA_OPTIMIZATION)
    • scaleが1.0
    • deltaが0
    • ksizeが3の場合
      • tegra::sobel3x3関数を使う
    • ksizeか-1の場合
      • tegra::scharr関数を使う
  • IPPの最適化に関して
    • IPP 用の最適化が有効な場合 (HAVE_IPP)
    • dx が 3未満
    • dy が 3未満
    • src のチャンネル数が1
    • borderType が1(BORDER_REPLICATE)
    • IPPDeriv関数を使う

画面端での指定enum

imgproc.hpp内での宣言実際の値対応するIPL互換な定数
BORDER_REPLICATE1IPL_BORDER_REPLICATE
BORDER_CONSTANT0IPL_BORDER_CONSTANT
BORDER_REFLECT2IPL_BORDER_REFLECT
BORDER_WRAP3IPL_BORDER_WRAP
BORDER_REFLECT_1014IPL_BORDER_REFLECT_101
BORDER_REFLECT1014BORDER_REFLECT_101
BORDER_TRANSPARENT5IPL_BORDER_TRANSPARENT
BORDER_DEFAULT4BORDER_REFLECT_101
BORDER_ISOLATED16無し
  • IPL_BORDER_ 定数群はtypes_c.hで宣言されている

void cv::getDerivKernels( OutputArray kx, OutputArray ky, int dx, int dy, int ksize, bool normalize=false, int ktype=CV_32F );

TBW

void cvSobel( const IplImage* src, IplImage* dst, int xorder, int yorder, int aperture_size=3 );

Sobelフィルタを画像にかけてエッジ抽出をする

引数

  • src:IplImage*型の入力画像
  • dst:IplImage*型の出力画像.抽出されたエッジ成分が入っている.
  • xorder:x軸方向の微分回数.抽出されるのは縦エッジ
  • yorder:y軸方向の微分回数.抽出されるのは横エッジ
  • aperture_size:フィルタのサイズ.デフォルト3で省略可

返り値

  • voidなのでなし

解説

サンプルコード

実体ファイル

  • OpenCV 2.4.8
    • sources/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
    • sources/modules/imgproc/src/filter.cpp (sepFilter2D)
    • sources/modules/imgproc/src/deriv.cpp (sobel, Scharr, getDerivKernels)
    • sources/modules/core/include/opencv2/core/types_c.h (IPL_BORDER_REFLECT_101 など)
  • OpenCV 1.0
    • cv/include/cv.h
    • cv/src/cvderiv.cpp

ジャンル:OpenCV:OpenCV 1.0:OpenCV 2.4準拠


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-16 (水) 23:17:31 (1318d)