[32/64bit] Primal-dualアルゴリズムは,特殊な変分問題(ある関数を最小化するための関数を求める問題)を解くためのアルゴリズムです.特に、画像のノイズ除去は、変分問題と見なすことができるので、プライマル・デュアル・アルゴリズムを使ってノイズ除去を行うことができ、まさにそれを実現しています。
photo_denoise_TVL1 p1,p2,p3,p4,p5
p1 = sptr : IntPtr[] observations p2 = int : int observationsSize p3 = sptr : IntPtr result p4 = double : double lambda p5 = int : int niters
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この実装は、2013年7月のブログエントリ[177]から取ったもので、Pythonですぐに使えるソースコードも含まれていたことに注意してください。その後,2013年7月末にVadim PisarevskyによってopenCVを用いてC++に書き直され,最終的には後続の著者によって若干の改良が加えられました.このアルゴリズムの詳細な議論と正当性は[42]に記載されていますが,ここでは[177]に倣ってざっと目を通すのがよいでしょう.まず,1バイトのグレイレベル画像を,画素の矩形領域からの関数と考えます(これは,集合 ??? -? ??? ????)。1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\このように考えて、同じ大きさの画像\(x\)が与えられたとき、ノイズ化された画像を\(f_i\)とします。どれくらいひどいかを式で表すと、[??>?<?>?<?>]ということになります。最初の付記は,画像が滑らかであること(理想的には,勾配がゼロであること,つまり,一定であること)を示し,2番目の付記は,結果が我々が得た観測値に近いものであることを示しています。????? ) ????? ) ????? ) ????? ) ????? ) ????? ) ????? ) ????? ) ????? ) ????? ) 元関数名(C#): photo_denoise_TVL1 元DLLエクスポート名: photo_denoise_TVL1 参照元CSファイル: Internal\PInvoke\NativeMethods\photo\NativeMethods_photo.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) photo_denoise_TVL1( cv::Mat **observations, int observationsSize, cv::Mat *result, double lambda, int niters) { BEGIN_WRAP std::vector<cv::Mat> observationsVec(observationsSize); for (int i = 0; i < observationsSize; i++) { observationsVec[i] = *observations[i]; } cv::denoise_TVL1(observationsVec, *result, lambda, niters); END_WRAP }
プラグイン / モジュール | OpenCvSharpExtern.dll |
バージョン | 1.00 |
作成日 | 2021/11/30 |
著作者 | inovia |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_photo |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |