core_dct

[32/64bit] 1次元あるいは2次元の配列に対して,離散コサイン変換(順変換,逆変換)を行います.

core_dct p1,p2,p3

p1 = sptr : IntPtr src
p2 = sptr : IntPtr dst
p3 = int : int flags

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

関数 cv::dct は,1次元あるいは2次元の浮動小数点型配列に対して,離散コサイン変換(DCT)を行います: N 個の要素を持つ 1 次元ベクトルに対するコサイン変換.


\Y = C^{(N)} \cdot X\] となります.





 ここで


\[C^{(N)}_{jk}= \sqrt{\alpha_j/N}\C^{(N)}_{jk}= C^{(N)}_{jk}= C^{(N)}_{jk}= C^{(N)}_{k+1)j}{2N}\右)になります。]





 となり、j > 0では、\\0=1\、\\j=2?となります。


N個の要素を持つ1次元ベクトルの逆コサイン変換です。


\♪ X = ♪ left (C^{(N)})\¶X = ¶left (C^{(N)} ¶right )^{-1} ¶cdot Y = ¶left (C^{(N)} ¶right )^T ¶C\♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪]





 (C^{(N)}\)は直交行列なので、\(C^{(N)})(C^{(N)}\\left(C^{(N)}\right)^T = I\) )


M x N 行列の2次元コサイン変換を行います。


\Y = C^{(N)} \cdot X \cdot left (C^{(N)} \right )^T\]となります。








M×N行列の逆2次元コサイン変換です。


\この関数は,入力配列のフラグとサイズを考慮して処理モードを決定します: (flags & DCT_INVERSE) == 0 の場合,この関数は 1 次元または 2 次元の順変換を行います。それ以外の場合は,1次元または2次元の逆変換を行います。


(flags & DCT_ROWS) != 0 の場合,この関数は各行に対して1次元変換を行います。


配列が1つの列,あるいは1つの行である場合,この関数は1次元の変換を行います。


注意現在のdctは,偶数サイズの配列(2, 4, 6 ...)をサポートしています.データ解析や近似のために,必要に応じて配列をパディングすることができます.また,関数の性能は,配列のサイズに大きく依存し,単調ではありません( getOptimalDFTSize を参照してください).現在の実装では,サイズ N のベクトルに対する DCT は,サイズ N/2 のベクトルに対する DFT を介して計算されます.したがって,最適な DCT サイズ N1 >= N は次のように計算されます: size_t getOptimalDCTSize(size_t N) { return 2*getOptimalDFTSize((N+1)/2); }N1 = getOptimalDCTSize(N);See alsodft , getOptimalDFTSize , idct

元関数名(C#): core_dct
元DLLエクスポート名: core_dct
参照元CSファイル: Internal\PInvoke\NativeMethods\core\NativeMethods_core.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) core_dct(cv::_InputArray *src, cv::_OutputArray *dst, int flags)
{
    BEGIN_WRAP
    cv::dct(*src, *dst, flags); 
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_core
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs