画像処理

cv::gpu::meanShiftFiltering

Comments from the Wiki

void meanShiftFiltering(const GpuMat& src, GpuMat& dst, int sp, int sr, TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1))

入力画像の各点に対して,mean-shift フィルタリングを行います.これにより入力画像中の各点が,別の点にマップされ,各点の新しい色,新しい位置が得られます.

パラメタ:
  • src – 入力画像.現在は, CV_8UC4 画像のみをサポートします.
  • dst – 出力画像.マップされた点の色が格納されます. src と同じサイズ,同じ型になります.
  • sp – 空間の探索窓半径.
  • sr – 色の探索窓半径.
  • criteria – 停止基準. cv::TermCriteria を参照してください.

cv::gpu::meanShiftProc

Comments from the Wiki

void meanShiftProc(const GpuMat& src, GpuMat& dstr, GpuMat& dstsp, int sp, int sr, TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1))

mean-shift を実行し,処理した点に関する情報(つまり,色と位置)を2つの画像に保存します.

パラメタ:
  • src – 入力画像.現在は, CV_8UC4 画像のみをサポートします.
  • dstr – 出力画像.マップされた点の色が格納されます. src と同じサイズ,同じ型になります.
  • dstsp – 出力画像.マップされた点の位置が格納されます. src と同じサイズで, CV_16SC2 型になります.
  • sp – 空間の探索窓半径.
  • sr – 色の探索窓半径.
  • criteria – 停止基準. cv::TermCriteria を参照してください.

参考: gpu::meanShiftFiltering() .

cv::gpu::meanShiftSegmentation

Comments from the Wiki

void meanShiftSegmentation(const GpuMat& src, Mat& dst, int sp, int sr, int minsize, TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 5, 1))

入力画像に対してmean-shift セグメンテーションを行い,小さなセグメントを削除します.

パラメタ:
  • src – 入力画像.現在は, CV_8UC4 画像のみをサポートします.
  • dst – セグメンテーションされた画像. src と同じサイズ,同じ型になります.
  • sp – 空間の探索窓半径.
  • sr – 色の探索窓半径.
  • minsize – セグメントの最小サイズ.これより小さいセグメントは別のセグメントに統合されます.
  • criteria – 停止基準. cv::TermCriteria を参照してください.

cv::gpu::integral

Comments from the Wiki

void integral(const GpuMat& src, GpuMat& sum)
void integral(const GpuMat& src, GpuMat& sum, GpuMat& sqsum)

積分画像,2乗の積分画像を求めます.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 画像のみをサポートします.
  • sum – 積分画像.32ビット,符号なし整数値が, CV_32SC1 にパックされます.
  • sqsum – 2乗の積分画像. CV_32FC1 型になります.

参考: integral() .

cv::gpu::sqrIntegral

Comments from the Wiki

void sqrIntegral(const GpuMat& src, GpuMat& sqsum)

2乗の積分画像を求めます.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 画像のみをサポートします.
  • sqsum – 2乗の積分画像.64ビット,符号なし整数値が, CV_64FC1 にパックされます.

cv::gpu::columnSum

Comments from the Wiki

void columnSum(const GpuMat& src, GpuMat& sum)

垂直方向(列方向)の合計を求めます.

パラメタ:
  • src – 入力画像.現在は, CV_32FC1 画像のみをサポートします.
  • sum – 出力画像. CV_32FC1 型になります.

cv::gpu::cornerHarris

Comments from the Wiki

void cornerHarris(const GpuMat& src, GpuMat& dst, int blockSize, int ksize, double k, int borderType=BORDER_REFLECT101)

各ピクセルにおける Harris コーナー基準値を求めます.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 および CV_32FC1 画像のみをサポートします.
  • dst – 出力画像. src と同じサイズで, CV_32FC1 型になります.コーナー度合いを表す数値が入ります.
  • blockSize – 近傍サイズ.
  • ksize – Sobel オペレータに対するアパーチャパラメータ.
  • k – Harris 検出器のフリーパラメータ.
  • borderType – ピクセル外挿手法.現在は, BORDER_REFLECT101 および BORDER_REPLICATE のみがサポートされます.

参考: cornerHarris() .

cv::gpu::cornerMinEigenVal

Comments from the Wiki

void cornerMinEigenVal(const GpuMat& src, GpuMat& dst, int blockSize, int ksize, int borderType=BORDER_REFLECT101)

微分画像の各ピクセルにおいて,2x2の分散共分散行列の最小固有値 -コーナー度合いを表基準値- を求めます.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 および CV_32FC1 画像のみをサポートします.
  • dst – 出力画像. src と同じサイズで, CV_32FC1 型になります.コーナー度合いを表す数値が入ります.
  • blockSize – 近傍サイズ.
  • ksize – Sobel オペレータに対するアパーチャパラメータ.
  • k – Harris 検出器のフリーパラメータ.
  • borderType – ピクセル外挿手法.現在は, BORDER_REFLECT101 および BORDER_REPLICATE のみがサポートされます.

参考: cornerMinEigenValue() .

cv::gpu::mulSpectrums

Comments from the Wiki

void mulSpectrums(const GpuMat& a, const GpuMat& b, GpuMat& c, int flags, bool conjB=false)

2つのフーリエスペクトルの要素毎の積を求めます.

パラメタ:
  • a – 1番目のスペクトル.
  • b – 2番目のスペクトル. a と同じサイズ,同じ型でなければいけません.
  • c – 出力スペクトル.
  • flags – CPU/GPUインタフェースを同一に保つための単なるモックパラメータ.
  • conjB – オプションフラグ.掛け算の前に,2番目のスペクトルの共役をとることを示します.

現在は,インタリーブフォーマットで格納された,完全な(つまり,パックされていない) CV_32FC2 型の複素数スペクトルのみをサポートしています.

参考: mulSpectrums() .

cv::gpu::mulAndScaleSpectrums

Comments from the Wiki

void mulAndScaleSpectrums(const GpuMat& a, const GpuMat& b, GpuMat& c, int flags, float scale, bool conjB=false)

2つのフーリエスペクトルの要素毎の積を計算し,その結果をスケーリングします.

パラメタ:
  • a – 1番目のスペクトル.
  • b – 2番目のスペクトル. a と同じサイズ,同じ型でなければいけません.
  • c – 出力スペクトル.
  • flags – CPU/GPUインタフェースを同一に保つための単なるモックパラメータ.
  • scale – スケール定数.
  • conjB – オプションフラグ.掛け算の前に,2番目のスペクトルの共役をとることを示します.

現在は,インタリーブフォーマットで格納された,完全な(つまり,パックされていない) CV_32FC2 型の複素数スペクトルのみをサポートしています.

参考: mulSpectrums() .

cv::gpu::dft

Comments from the Wiki

_ _

void dft(const GpuMat& src, GpuMat& dst, Size dft_size, int flags=0)

浮動小数点型の行列に対して,(1次元または2次元の)フーリエ順変換または逆変換を行います.実行列( CV32FC1)および,インタリーブフォーマットの複素行列( CV32FC2)を扱うことができます.

パラメタ:
  • src – 入力行列(実行列,または複素行列).
  • dst – 出力行列(実,または複素行列).
  • dft_size – 離散フーリエ変換のサイズ.
  • flags

    オプションフラグ:

    • DFT_ROWS 入力行列の各行を個別に変換します.
    • DFT_SCALE 結果のスケーリングを行います:変換時に,結果を要素の個数で割ります(これは dft_size から得ます).
    • DFT_INVERSE 逆DFTを行えるのは,複素行列-複素行列の場合です(実行列-複素行列,複素行列-実行列の場合は,それぞれ常に順変換,逆変換になります).
    • DFT_REAL_OUTPUT この場合の,実行列-複素行列変換の結果なので,出力行列は必ず実数型でなければいけません.

入力行列は,連続である必要があり,そうでない場合は,再割り当てとデータのコピーが行われます.この関数の処理モードは,フラグ,入力行列のサイズ,チャンネルにに依存します:

  • 入力行列が複素行列で,出力行列に実行列が指定されていない場合,出力行列は dft_size サイズで CV_32FC2 型の複素行列になります.ここには,DFT(順変換または逆変換)の完全な結果が格納されます.
  • 入力行列が複素行列で,出力行列に実行列が指定されている場合,この関数は,入力行列が順変換の結果であると見なします(次項を参照してください).出力行列は, dft_size サイズで CV_32FC1 型になります.ここには,逆DFTの結果が格納されます.
  • 入力行列が実行列(つまり, CV_32FC1 型)である場合,DFT(順変換)が行われます.DFTの結果は,複素数型( CV_32FC2 )の行列にパックされ,その幅は dft_size.width / 2 + 1 になります.ただし,入力行列が1列である場合は,幅の代わりに高さが縮小されます.

確認: dft() .

cv::gpu::convolve

Comments from the Wiki

void convolve(const GpuMat& image, const GpuMat& templ, GpuMat& result, bool ccorr=false)
void convolve(const GpuMat& image, const GpuMat& templ, GpuMat& result, bool ccorr, ConvolveBuf& buf)

2つの画像の畳み込み(または,相関)演算を行います.

パラメタ:
  • src – 入力画像.現在は, CV_32FC1 画像のみをサポートします.
  • templ – テンプレート画像.これは image サイズよりも小さく, image と同じ型でなければいけません.
  • result – 結果画像. image と同じサイズ,同じ型になります.
  • ccorr – 畳み込みではなく相関を求めることを指示するフラグ.
  • buf – メモリの割り当て処理を避けるためのオプションバッファ(同一サイズでの呼び出しが多数行われます).

gpu::ConvolveBuf

Comments from the Wiki

gpu::ConvolveBuf

gpu::convolve() 関数のためのメモリバッファ.

struct CV_EXPORTS ConvolveBuf
{
    ConvolveBuf() {}
    ConvolveBuf(Size image_size, Size templ_size)
        { create(image_size, templ_size); }
    void create(Size image_size, Size templ_size);

private:
    // Hidden
};

cv::gpu::ConvolveBuf::ConvolveBuf

Comments from the Wiki

ConvolveBuf::ConvolveBuf()

空のバッファを作成します.これは,最初に畳み込み関数を呼び出した後に,適切にリサイズされます.

ConvolveBuf::ConvolveBuf(Size image_size, Size templ_size)

与えられた引数を利用して,畳み込み関数用のバッファを作成します.

cv::gpu::matchTemplate

Comments from the Wiki

void matchTemplate(const GpuMat& image, const GpuMat& templ, GpuMat& result, int method)

ラスタテンプレート画像と,それを用いて走査される画像との,類似度マップを求めます.

パラメタ:
  • src – 入力画像.現在は,ビット深度が CV_32F および CV_8U の(1..4チャンネル)画像のみをサポートします.
  • templ – テンプレート画像. image と同じ型でなければいけません.
  • result – 比較結果( CV_32FC1 )が格納されるマップ. imageW \times Htemplw \times h なので, result(W-w+1) \times (H-h+1) でなければいけません.
  • method – テンプレートと画像を比較する手法を指定します.

現在は,ビット深度 CV_8U の画像に対して,以下の手法がサポートされています:

  • CV _ TM _ SQDIFF
  • CV _ TM _ SQDIFF _ NORMED
  • CV _ TM _ CCORR
  • CV _ TM _ CCORR _ NORMED
  • CV _ TM _ CCOEFF
  • CV _ TM _ CCOEFF _ NORMED

また,ビット深度 CV_32F の画像に対しては,以下の手法がサポートされています:

  • CV _ TM _ SQDIFF
  • CV _ TM _ CCORR

参考: matchTemplate() .

cv::gpu::remap

Comments from the Wiki

void remap(const GpuMat& src, GpuMat& dst, const GpuMat& xmap, const GpuMat& ymap)

画像に対して,一般的な幾何変換を行います.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 および CV_8UC3 画像のみをサポートします.
  • dst – 出力画像. xmap と同じサイズで, src と同じ型になります.
  • xmap – X 値. CV_32FC1 型のみがサポートされます.
  • ymap – Y 値. CV_32FC1 型のみがサポートされます.

この関数は,指定されたマップを用いて入力画像を変換します:

\texttt{dst} (x,y) =  \texttt{src} (xmap(x,y), ymap(x,y))

非整数座標のピクセル値は,バイリニア補間を用いて計算されます.

参考: remap() .

cv::gpu::cvtColor

Comments from the Wiki

void cvtColor(const GpuMat& src, GpuMat& dst, int code, int dcn = 0)
void cvtColor(const GpuMat& src, GpuMat& dst, int code, int dcn, const Stream& stream)

ある色空間から別の色空間へ,画像を変換します.

パラメタ:
  • src – 入力画像.ビット深度 CV_8UCV_16U または CV_32F の,1,3,4 チャンネル画像です.
  • dst – 出力画像. src と同じサイズ,同じビット深度になります.
  • code – 色空間の変換コード.詳細は, cvtColor() を参照してください.Luv と Bayer カラーとの間の変換はサポートされていません.
  • dcn – 出力画像のチャンネル数.このパラメータが 0 の場合, src および code から,自動的にチャンネル数が求められます.
  • stream – 非同期バージョン用のストリーム.

3-チャンネルの色空間( HSVXYZ など)画像を,4-チャンネル画像に格納することでパフォーマンスが向上します.

参考: cvtColor() .

cv::gpu::threshold

Comments from the Wiki

double threshold(const GpuMat& src, GpuMat& dst, double thresh, double maxval, int type)
double threshold(const GpuMat& src, GpuMat& dst, double thresh, double maxval, int type, const Stream& stream)

配列の各要素を,固定閾値により2値化します.

パラメタ:
  • src – 入力配列(シングルチャンネル.ただし, CV_64F はサポートされていません).
  • dst – 出力配列. src と同じサイズ,同じ型になります.
  • thresh – 閾値.
  • maxVal – 閾値の種類が THRESH_BINARYTHRESH_BINARY_INV である場合に利用される最大値.
  • thresholdType – 閾値の種類.詳細は, threshold() を参照してください. THRESH_OTSU はサポートされていません.
  • stream – 非同期バージョン用のストリーム.

参考: threshold() .

cv::gpu::resize

Comments from the Wiki

void resize(const GpuMat& src, GpuMat& dst, Size dsize, double fx=0, double fy=0, int interpolation = INTER_LINEAR)

画像をリサイズします.

パラメタ:
  • src – 入力画像.現在は, CV_8UC1 および CV_8UC4 型をサポートします.
  • dst – 出力画像.このサイズは, dsize (0以外の場合),または src.size()fx および fy から算出される値になります.また, dst の型は, src と同じになります.
  • dsize

    出力画像のサイズ.これが 0 の場合,サイズは次の様に計算されます:

    \texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}

    dsize ,または fxfy のどちらかは,必ず0以外の値でなければいけません.

  • fx

    水平軸方向のスケールファクタ.0の場合,次の様に計算されます:

    \texttt{(double)dsize.width/src.cols}

  • fy

    垂直軸方向のスケールファクタ.0の場合,次の様に計算されます:

    \texttt{(double)dsize.height/src.rows}

  • interpolation – 補間手法. INTER_NEAREST および INTER_LINEAR のみがサポートされます.

参考: resize() .

cv::gpu::warpAffine

Comments from the Wiki

void warpAffine(const GpuMat& src, GpuMat& dst, const Mat& M, Size dsize, int flags = INTER_LINEAR)

画像をアフィン変換します.

パラメタ:
  • src – 入力画像.ビット深度 CV_8UCV_16U または CV_32F の,1,3,4 チャンネル画像です.
  • dst – 出力画像.サイズは dsize ,型は src と同じになります.
  • M2\times 3 変換行列.
  • dsize – 出力画像のサイズ.
  • flags – 補間手法の組み合わせ. resize() を参照してください.また,オプションフラグ WARP_INVERSE_MAP を指定すると, M を逆変換( \texttt{dst}\rightarrow\texttt{src} )と見なします.補間手法としては, INTER_NEAREST , INTER_LINEAR および INTER_CUBIC がサポートされます.

参考: warpAffine() .

cv::gpu::warpPerspective

Comments from the Wiki

void warpPerspective(const GpuMat& src, GpuMat& dst, const Mat& M, Size dsize, int flags = INTER_LINEAR)

画像を透視変換します.

パラメタ:
  • src – 入力画像.ビット深度 CV_8UCV_16U または CV_32F の,1,3,4 チャンネル画像です.
  • dst – 出力画像.サイズは dsize ,型は src と同じになります.
  • M2\times 3 変換行列.
  • dsize – 出力画像のサイズ.
  • flags – 補間手法の組み合わせ. resize() を参照してください.また,オプションフラグ WARP_INVERSE_MAP を指定すると, M を逆変換( \texttt{dst}\rightarrow\texttt{src} )と見なします.補間手法としては, INTER_NEAREST , INTER_LINEAR および INTER_CUBIC がサポートされます.

参考: warpPerspective() .

cv::gpu::rotate

Comments from the Wiki

void rotate(const GpuMat& src, GpuMat& dst, Size dsize, double angle, double xShift = 0, double yShift = 0, int interpolation = INTER_LINEAR)

原点 (0,0) 周りに画像を回転し,それを並進移動します.

パラメタ:
  • src – 入力画像. CV_8UC1 および CV_8UC4 型をサポートします.
  • dst – 出力画像.サイズは dsize ,型は src と同じになります.
  • dsize – 出力画像のサイズ.
  • angle – 度単位で表現される回転角度.
  • xShift – 水平軸方向の並進量.
  • yShift – 垂直軸方向の並進量.
  • interpolation – 補間手法. INTER_NEAREST , INTER_LINEAR および INTER_CUBIC のみがサポートされます.

参考: gpu::warpAffine() .

cv::gpu::copyMakeBorder

Comments from the Wiki

void copyMakeBorder(const GpuMat& src, GpuMat& dst, int top, int bottom, int left, int right, const Scalar& value = Scalar())

2次元配列をより大きな配列にコピーし,その境界空間を与えられた定数で埋めます.

パラメタ:
  • src – 入力画像. CV_8UC1 , CV_8UC4 , CV_32SC1 および CV_32FC1 型をサポートします.
  • dst – 出力画像. src と同じ型で,サイズは Size(src.cols+left+right, src.rows+top+bottom) となります.
  • bottom, left, right (top,) – 入力画像矩形の周りに,各方向にどれだけのピクセル分外挿する必要があるかを指定します.例えば, top=1, bottom=1, left=1, right=1 の場合,幅1ピクセルの境界が必要となります.
  • value – 境界を埋める値.

参考: copyMakeBorder()

cv::gpu::rectStdDev

Comments from the Wiki

void rectStdDev(const GpuMat& src, const GpuMat& sqr, GpuMat& dst, const Rect& rect)

積分画像の標準偏差を求めます.

パラメタ:
  • src – 入力画像. CV_32SC1 型のみをサポートします.
  • sqr – 2乗された入力画像. CV_32SC1 型のみをサポートします.
  • dst – 出力画像. src と同じ型,同じサイズになります.
  • rect – 矩形窓.

cv::gpu::evenLevels

Comments from the Wiki

void evenLevels(GpuMat& levels, int nLevels, int lowerLevel, int upperLevel)

一様に分布するレベル値を求めます.

パラメタ:
  • levels – 出力配列. levels は,1行 nLevels 列で, CV_32SC1 型の配列になります.
  • nLevels – 求めるレベル値の個数. nLevels は,少なくとも2以上でなければいけません.
  • lowerLevel – 最低レベル値に対する下限値.
  • upperLevel – 最高レベル値に対する上限値.

cv::gpu::histEven

Comments from the Wiki

void histEven(const GpuMat& src, GpuMat& hist, int histSize, int lowerLevel, int upperLevel)
void histEven(const GpuMat& src, GpuMat hist[4], int histSize[4], int lowerLevel[4], int upperLevel[4])

ビンが一様に分布するヒストグラムを計算します.

パラメタ:
  • src – 入力画像.ビット深度 CV_8UCV_16U または CV_16S の,1,4 チャンネル画像です.4チャンネル画像では,すべてのチャンネルが個別に処理されます.
  • hist – 出力ヒストグラム. 1行 histSize 列で, CV_32S 型になります.
  • histSize – ヒストグラムのサイズ.
  • lowerLevel – 最低レベルのビンの下限.
  • upperLevel – 最高レベルのビンの上限.

cv::gpu::histRange

Comments from the Wiki

void histRange(const GpuMat& src, GpuMat& hist, const GpuMat& levels)
void histRange(const GpuMat& src, GpuMat hist[4], const GpuMat levels[4])

レベル値の配列によって決定されたビンを使って,ヒストグラムを計算します.

パラメタ:
  • src – 入力画像.ビット深度 CV_8UCV_16U または CV_16S の,1,4 チャンネル画像です.4チャンネル画像では,すべてのチャンネルが個別に処理されます.
  • hist – 出力ヒストグラム.1行 (levels.cols-1) 列で, CV_32SC1 型の行列になります.
  • levels – ヒストグラム内のレベル値の個数.