图像噪声和去噪

图 像 噪 声 和 去 噪 图像噪声和去噪

1.视频教程:
B站、网易云课堂、腾讯课堂
2.代码地址:
Gitee
Github
3.存储地址:
Google云
百度云:
提取码:

1.图像噪声

## 1.1 噪声类型

1.椒盐噪声
在这里插入图片描述
2.高斯噪声
在这里插入图片描述
3.其他噪声

void add_salt_and_pepper_noise(Mat &image);
void add_gaussion_noise(Mat &image);

void add_salt_and_pepper_noise(Mat &image) {
	RNG rng(12345);
	int h = image.rows;
	int w = image.cols;
	int nums = 10000;
	for (int i = 0; i < nums; i++) {
		int x = rng.uniform(0, w);
		int y = rng.uniform(0, h);
		if (i % 2 == 1) {
			image.at<Vec3b>(y, x) = Vec3b(255, 255, 255);

		}
		else {
			image.at<Vec3b>(y, x) = Vec3b(0, 0, 0);
		}
	}
	imshow("salt and pepper noise", image);
}

void add_gaussion_noise(Mat &image) {
	// 高斯噪声
	Mat noise = Mat::zeros(image.size(), image.type());
	randn(noise, Scalar(15, 15, 15), Scalar(30, 30, 30));
	Mat dst;
	add(image, noise, dst);
	imshow("gaussian noise", dst);
	dst.copyTo(image);

}

1.2 噪声生成

椒盐噪声

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	imshow("src", src);

	// 椒盐噪声
	RNG rng(12345);
	int h = src.rows;
	int w = src.cols;
	int nums = 10000;
	for (int i = 0; i < nums; i++) {
		int x = rng.uniform(0, w);
		int y = rng.uniform(0, h);
		if (i % 2 == 1) {
			src.at<Vec3b>(y, x) = Vec3b(255, 255, 255);

		}
		else {
			src.at<Vec3b>(y, x) = Vec3b(0, 0, 0);
		}
	}
	imshow("salt and pepper noise", src);

	waitKey(0);
	destroyAllWindows();
	return 0;
}


在这里插入图片描述

高斯噪声

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	imshow("src", src);

	// 高斯噪声
	Mat noise = Mat::zeros(src.size(), src.type());
	randn(noise, Scalar(15, 15, 15), Scalar(30, 30, 30));
	Mat dst;
	add(src, noise, dst);
	imshow("gaussian noise", dst);

	waitKey(0);
	destroyAllWindows();
	return 0;
}


在这里插入图片描述

2.图像去噪

中值滤波(对椒盐噪声的效果好)

在这里插入图片描述

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {

	Mat src = imread("E:/cats.jpg", IMREAD_COLOR);

	if (src.empty()) {
		printf("image is empty!!!");
		return -1;
	}
	imshow("src", src);

	// 加椒盐噪声
	RNG rng(12345);
	int h = src.rows;
	int w = src.cols;
	int nums = 10000;
	for (int i = 0; i < nums; i++) {
		int x = rng.uniform(0, w);
		int y = rng.uniform(0, h);
		if (i % 2 == 1) {
			src.at<Vec3b>(y, x) = Vec3b(255, 255, 255);

		}
		else {
			src.at<Vec3b>(y, x) = Vec3b(0, 0, 0);
		}
	}
	imshow("salt and pepper noise", src);

	Mat dst;
	medianBlur(src, dst, 5);
	imshow("medianBlur denoise ", dst);
	waitKey(0);
	destroyAllWindows();
	return 0;
}


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值