[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 |
| URL | https://hsp.moe/ |
| 備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
| タイプ | OpenCVSharpラッパーDLL |
| グループ | NativeMethods_core |
| 対応環境 |
|
| hs ファイル | hsphelp\OpenCvSharpExtern.hs |