[解決済み] fastNlMeansDenoising() はノイズをフィルタリングしない
質問
opencvのfastNlMeansDenoising()関数でノイズを除去しようとしています。 しかし、私の出力画像は、元のノイズの入った画像と同じです。
入力画像
コード
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main() {
Mat img = imread("noisy.jpg");
if (!img.data) {
cout << "File not found" << endl;
return -1;
}
// first copy the image
Mat img_gray = img.clone();
cvtColor(img, img_gray, CV_RGB2GRAY);
Mat img1;
//fastNlMeansDenoising(img_gray, img1, 3.0, 7, 21);
cv::fastNlMeansDenoising(img_gray, img1, 3.0, 7, 21);
imshow("img1", img1);
waitKey();
return 0;
}
出力画像です。
スムージングの効果が見られません。理由がわかりません。 ノイズを除去するためにこの関数を使用する方法を教えてください。
解決方法は?
OpenCVでは、この関数は次のように定義されています。
void fastNlMeansDenoising(InputArray src, OutputArray dst, float h=3, int templateWindowSize=7, int searchWindowSize=21 )
ここで
パラメータ: src - 入力 8 ビット,1 チャンネル,2 チャンネル,または 3 チャンネル.
dst - src と同じサイズ,同じ型の出力画像.
templateWindowSize - テンプレートパッチのピクセル単位でのサイズ. を使用して重みを計算する。奇数でなければならない。推奨値 7ピクセル
searchWindowSize - 探索ウィンドウのサイズ(ピクセル). 指定されたピクセルの加重平均を計算する。奇数でなければならない。影響 性能は直線的:大きい
searchWindowsSize - ノイズ除去が大きい。 の時間を短縮することができます。推奨値 21ピクセル
h - フィルタを制御するパラメータ の強さです。h 値が大きいとノイズは完全に除去されますが、画像も除去されます。 h値を小さくすると、ディテールは維持されるが、いくつかのディテールも維持される。 ノイズ
そのため、ノイズを除去するためには、フィルター強度のパラメーターを大きくする必要がありました
h
h値を大きくするとノイズが完全に除去されますが、h値を小さくするとディテールが保たれ、ノイズもある程度保たれます。
そこで、このような関数を使ってノイズを完全に除去してみました。
fastNlMeansDenoising(img_gray, img1, 30.0, 7, 21);
出力します。
注 この関数は、デバッグモードでは実行時間がかかりすぎます。少しでも早く実行したい場合は、リリースモードで実行することをお勧めします。
関連
-
[解決済み】coutはstdのメンバではない
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】'cout'は型名ではない
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】'std::cout'への未定義の参照