【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

公開日: : OpenCV, 画像処理

スポンサーリンク

OpenCVで画像にノイズを付け足したいと思って調べたところ、Python版のサンプルは見つかるのですが、C++版のものは見つけられなかったので自分で作りました。Pythonだと配列操作の関係でかなり楽に作れるのですが、C++だと各画素を走査する必要があります。(たぶん)

今回のノイズは「Salt-and-pepper noise」と呼ばれるもので、画像に対してランダムに白色もしくは黒色の点のノイズを加えるものとなります。別名「インパルスノイズ」というそうです。

サンプル

ヘッダやリンクの記述は省略します。

//画像にインパルスノイズを加える関数
cv::Mat AddNoise(const cv::Mat& src){
	double amount = 0.004;	//0.4%にノイズを加える
	cv::Mat dst = src.clone();
	int width = dst.size().width;
	int height = dst.size().height;
	for (int y = 0; y < height; y++){
		cv::Vec3b *src = dst.ptr<cv::Vec3b>(y);
		for (int x = 0; x < width; x++){
			if ((double)rand() / RAND_MAX <= amount){
				src[x][0] = 255;
				src[x][1] = 255;
				src[x][2] = 255;
			}
			if ((double)rand() / RAND_MAX <= amount){
				src[x][0] = 0;
				src[x][1] = 0;
				src[x][2] = 0;
			}
		}
	}
	return dst;
}

int main(int argc, char* argv[])
{
	cv::Mat img = cv::imread("lenna.png");
	cv::Mat dst = AddNoise(img);
	cv::imshow("sample", dst);
	cv::waitKey();
	return 1;
}

途中の「amount」という変数にノイズを加える確率が設定されています。この場合は0.4%です。戻り値でノイズが付加された画像が吐き出されるようになっています。

結果

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

OpenCV3.1のTracking APIでトラッキングを試す

はじめに 先日OpenCV3.1をopencv_contrib付きでインストールしてTrackin

記事を読む

【3DCG・MMD】カメラレンズによる見え方シミュレータ作成について

カメラのレンズが違うことでどのくらい出来上がる写真に差が出てくるのかを確かめることのできるシミュレー

記事を読む

Canvasの画像をリサイズする簡単な方法【HTML5・javascript】

調べてみるとCanvasをリサイズするようなjavascriptの関数は存在しないようなので自前で作

記事を読む

【ImgToAA】画像をAA化するツール

指定の画像を読み込ませてAA化するツールです。サンプルはこちら。 (使い方) 画像ファイ

記事を読む

【javascript】RGB⇔カラーコード変換ライブラリ

RGBをカラーコードに変換、または、カラーコードをRGBに変換したい場合が出てきたのでどういうも

記事を読む

OpenCVで矢印を描画する

OpenCVで矢印を描画するという関数が無いみたいだったので作りました。書いていることは参考リンク先

記事を読む

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業が立ち上げたVPNサービスとい

記事を読む

【OpenCV】画素値が取得できない??

IplImageに格納された画素値を利用してフィルター処理を行おうとしましたが、なぜか画素値が取得さ

記事を読む

javascriptで画像処理をする【HTML5】

HTML5でjavascriptを使って画像処理をしてみました。このページでは手始めにグレースケール

記事を読む

チェスボード画像自動生成ツール

1マスのサイズ(ピクセル) マスの数× 左上が白 枠をつけるか 枠の色白黒

記事を読む

【Laravel5】既存のDBからデータを取得して表示する

はじめに 今まで作ったWebサイトをLaravel5で見れるようにし

【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

OpenCVで画像にノイズを付け足したいと思って調べたところ、Pyth

Intel Corei7-7700TでHTC Viveの動作確認

はじめに HTC ViveというVRヘッドセットで遊んでみたのでその

【Python】フォルダ内のカッコ付き数字ファイルを一括でリネームするスクリプト

はじめに タイトルどおりなのですが、指定フォルダ内のファイルのファイ

OpenCV3.1のTracking APIでトラッキングを試す

はじめに 先日OpenCV3.1をopencv_contrib付きで

パソコンを複数台使う際便利なツール

はじめに 先日、機械学習用にGPUを積んだBTOパソコンを購入しまし

OpenCV3.1をopencv_contrib付きでVisual Studio2013でビルドしてインストールする

はじめに OpenCV3.1でトラッキングがしたいと思いインストーラ

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑