OpenCVの026 ---二国間ガウスフィルタ

図1は、知識の前に準備しました

  前の画像コンボリューション処理のいずれかの平均値またはガウスぼかし畳み込み属し、それらは共通の特徴を持っているファジー画像のエッジ情報が消えているか、破壊されて。完全な画像の出力フィルタは、全体的なエッジ(輪郭)の情報を保持した後ながらゴスバイラテラルフィルタは、画像ボケ画像エッジダメージを低減するために処理コンボリューションすることによって達成することができる、我々は、エッジ保存フィルタリングアルゴリズム(EPF)のためのアルゴリズムをフィルタリングのこのタイプを呼び出します。最も一般的なエッジ保存アルゴリズムをフィルタリングは、以下のとおりです。

- バイラテラルガウスぼかし:ガウスぼかし画像は、重量の空間的位置の影響を考慮することであるが、それは画素値の分布の影響を考慮した出力画像畳み込み、両側ボケの画像ピクセルの分布に影響をとらない、画素値が全く異なる空間分布でありますこれは、画像のエッジ情報の完全性を保持するために保持されます。

- Meanshift平均移動ぼかし:TODO

- ローカル分散ファジー:TODO

- エッジ保存フィルタと専門APIのOpenCVの:下記

図2は、主にOpenCVのAPIを使用しました

/ * * @brief画像にバイラテラルフィルタを適用します。
記載のように関数は、入力画像にバイラテラルフィルタを適用
http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 
bilateralFilterかなり鋭いエッジを保持しながら非常に良好に不要なノイズを低減することができます。しかし、それは
ほとんどのフィルタに比べて非常に遅いです。
_Sigmaのvalues_:簡単にするために、あなたが同じになるように2つのシグマ値を設定することができます。彼らは(\小さい場合< 
10)、フィルターはあまり効果がありません。彼らは(\大であるかの一方で、> 150)、彼らは非常にあります
画像の外観「マンガ」を作り、強力な効果を。
_Filter size_:大型フィルター(D \> 5)それはリアルタイムのために使用さd = 5に推奨されますので、非常に遅いです
アプリケーションは、おそらく重いノイズフィルタリングを必要とするオフラインアプリケーションのため= 9日間。
このフィルタは、インプレースを動作しません。
@param SRCソース8ビットまたは浮動小数点、1チャンネル又は3チャンネルの画像。
srcと同じサイズ、同じタイプのデスティネーションイメージDST @param。
フィルタリング時に使用される各画素近傍の@param dの直径。それは非正であれば、
それはsigmaSpaceから計算されます。
色空間におけるsigmaColorフィルタのシグマを@param。ことパラメータ手段の大きい値
の画素近傍内遠い色(sigmaSpaceを参照)、その結果、一緒に混合される
半同じ色の大きな領域に。
座標空間での@param sigmaSpaceフィルタシグマ。そのパラメータ手段の大きい値
遠くのピクセルがある限り、その色が十分に近い(sigmaColorを参照しているように、互いに影響を与えます
)。ときD \> 0、それは関係なく、sigmaSpaceの近傍サイズを指定します。それ以外の場合は、dがあります
sigmaSpaceに比例しました。
外部画像の外挿ピクセルに使用@param borderType境界モード、#BorderTypesを参照
 * / 
CV_EXPORTS_W 空隙 bilateralFilter(InputArray SRC、OutputArray DST、INT D、
                                    ダブル sigmaColor、ダブルsigmaSpace、
                                    INT borderType = BORDER_DEFAULT)。

3プログラムコード

書式#include <opencv2 / opencv.hpp> 
の#include <iostreamの> 使用して名前空間の品種;
使用して名前空間はstdを、INTメイン(int型 ARTC、チャー ** ARGV){ 
    マットSRC =関数imread(" 画像/ Demo.jpg " )。
    もし(src.empty()){ 
        のprintf(" イメージをロードできませんでした... \ n " );
        リターン - 1 
    } 
    namedWindow(" 入力" 、CV_WINDOW_AUTOSIZE)。
    imshowを("

  

入力"SRC); 
    マットDST; 
    bilateralFilter(SRC、DST、0100104 ); 
    関数imshow(" 結果、DST); 
    waitKey(0 );
     戻り0 ; 
}

 

4つの実行結果

わずかに

5拡張および注意事項

無し

6 *現在は、おそらく理解して、このアルゴリズムを知っている、特定の使用のその後の詳細な分析を行うには

おすすめ

転載: www.cnblogs.com/Vince-Wu/p/11846886.html