OpenCV—图像椒盐噪声生成器

椒盐噪声

椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(salt noise)盐=白色(255),另一种是胡椒噪声(pepper noise),椒=黑色(0)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。对于彩色图像,也有可能表现为在单个像素BGR三个通道随机出现的255或0,加入椒盐噪声的图像如下图所示:

原图

图像加入黑白椒盐噪声后

图像分通道加入椒盐噪声

添加椒盐噪声的函数

函数:

[cpp] view plaincopy
  1. void salt(cv::Mat image, int n)
  2. void pepper(cv::Mat image, int n)

参数:

  • image — 输入图像(输出图像)灰度或彩色模式
  • n — 噪点个数
[cpp] view plaincopy
  1. //盐噪声
  2. void salt(cv::Mat image, int n) {
  3. int i,j;
  4. for (int k=0; k<n/2; k++) {
  5. // rand() is the random number generator
  6. i = std::rand()%image.cols; // % 整除取余数运算符,rand=1022,cols=1000,rand%cols=22
  7. j = std::rand()%image.rows;
  8. if (image.type() == CV_8UC1) { // gray-level image
  9. image.at<uchar>(j,i)= 255; //at方法需要指定Mat变量返回值类型,如uchar等
  10. } else if (image.type() == CV_8UC3) { // color image
  11. image.at<cv::Vec3b>(j,i)[0]= 255; //cv::Vec3b为opencv定义的一个3个值的向量类型
  12. image.at<cv::Vec3b>(j,i)[1]= 255; //[]指定通道,B:0,G:1,R:2
  13. image.at<cv::Vec3b>(j,i)[2]= 255;
  14. }
  15. }
  16. }
  17. //椒噪声
  18. void pepper(cv::Mat image, int n) {
  19. int i,j;
  20. for (int k=0; k<n; k++) {
  21. // rand() is the random number generator
  22. i = std::rand()%image.cols; // % 整除取余数运算符,rand=1022,cols=1000,rand%cols=22
  23. j = std::rand()%image.rows;
  24. if (image.type() == CV_8UC1) { // gray-level image
  25. image.at<uchar>(j,i)= 0; //at方法需要指定Mat变量返回值类型,如uchar等
  26. } else if (image.type() == CV_8UC3) { // color image
  27. image.at<cv::Vec3b>(j,i)[0]= 0; //cv::Vec3b为opencv定义的一个3个值的向量类型
  28. image.at<cv::Vec3b>(j,i)[1]= 0; //[]指定通道,B:0,G:1,R:2
  29. image.at<cv::Vec3b>(j,i)[2]= 0;
  30. }
  31. }
  32. }

想要分通道加入椒盐噪声,只需要在image.at<cv::Vec3b>(j,i)[0]或[1]、[2]三个通道随机加入255或0即可。

转载请注明:iracer的CSDN博客 http://blog.csdn.net/iracer/article/details/49383491
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iracer/article/details/49383491

OpenCV—图像椒盐噪声生成器

椒盐噪声

椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声是指两种噪声,一种是盐噪声(salt noise)盐=白色(255),另一种是胡椒噪声(pepper noise),椒=黑色(0)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。对于彩色图像,也有可能表现为在单个像素BGR三个通道随机出现的255或0,加入椒盐噪声的图像如下图所示:

原图

图像加入黑白椒盐噪声后

图像分通道加入椒盐噪声

添加椒盐噪声的函数

函数:

[cpp] view plaincopy
  1. void salt(cv::Mat image, int n)
  2. void pepper(cv::Mat image, int n)

参数:

  • image — 输入图像(输出图像)灰度或彩色模式
  • n — 噪点个数
[cpp] view plaincopy
  1. //盐噪声
  2. void salt(cv::Mat image, int n) {
  3. int i,j;
  4. for (int k=0; k<n/2; k++) {
  5. // rand() is the random number generator
  6. i = std::rand()%image.cols; // % 整除取余数运算符,rand=1022,cols=1000,rand%cols=22
  7. j = std::rand()%image.rows;
  8. if (image.type() == CV_8UC1) { // gray-level image
  9. image.at<uchar>(j,i)= 255; //at方法需要指定Mat变量返回值类型,如uchar等
  10. } else if (image.type() == CV_8UC3) { // color image
  11. image.at<cv::Vec3b>(j,i)[0]= 255; //cv::Vec3b为opencv定义的一个3个值的向量类型
  12. image.at<cv::Vec3b>(j,i)[1]= 255; //[]指定通道,B:0,G:1,R:2
  13. image.at<cv::Vec3b>(j,i)[2]= 255;
  14. }
  15. }
  16. }
  17. //椒噪声
  18. void pepper(cv::Mat image, int n) {
  19. int i,j;
  20. for (int k=0; k<n; k++) {
  21. // rand() is the random number generator
  22. i = std::rand()%image.cols; // % 整除取余数运算符,rand=1022,cols=1000,rand%cols=22
  23. j = std::rand()%image.rows;
  24. if (image.type() == CV_8UC1) { // gray-level image
  25. image.at<uchar>(j,i)= 0; //at方法需要指定Mat变量返回值类型,如uchar等
  26. } else if (image.type() == CV_8UC3) { // color image
  27. image.at<cv::Vec3b>(j,i)[0]= 0; //cv::Vec3b为opencv定义的一个3个值的向量类型
  28. image.at<cv::Vec3b>(j,i)[1]= 0; //[]指定通道,B:0,G:1,R:2
  29. image.at<cv::Vec3b>(j,i)[2]= 0;
  30. }
  31. }
  32. }

想要分通道加入椒盐噪声,只需要在image.at<cv::Vec3b>(j,i)[0]或[1]、[2]三个通道随机加入255或0即可。

转载请注明:iracer的CSDN博客 http://blog.csdn.net/iracer/article/details/49383491

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iracer/article/details/49383491

OpenCV—图像椒盐噪声生成器相关推荐

  1. 图像椒盐噪声和高斯噪声

    一. 椒盐噪声 在噪声的概念中,通常采用信噪比(Signal-Noise Rate, SNR)衡量图像噪声.通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大. 在信号系统中,计量单位为dB ...

  2. python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声

    同时生成椒盐代码如下: 通过pertotal 设置噪声总数  persalt盐噪声比例 #同时加椒盐 总占比 pertotal ,persalt盐占比image = cv.imread('c:\\me ...

  3. 像素 噪声 matlab,椒盐噪声去噪_matlab 椒盐噪声_椒盐噪声图片

    椒盐噪声去噪 [摘要] [摘 要]本文对中值滤波算法进行了改进,提出了一种基于噪声点检测的椒盐噪声去除方法.椒盐噪声去噪对分布在噪声范围内的点进行噪声点检测,对确定为噪声点的像素点进行中值滤波,其他像 ...

  4. python opencv高斯滤波_【OpenCV】基于Python的图像高斯平滑和椒盐噪声处理 | 学步园...

    最近要做一个Project,是使用TV来对添加了Gaussian和Salt&Pepper噪声的图像进行恢复,前期的任务是生成噪声污染的图像. 噪声图像的生成采用对图像进行高斯平滑,之后在随机的 ...

  5. 24.双边滤波和中值滤波器(自定义中值滤波器去除椒盐噪声、exp含义)-- OpenCV从零开始到图像(人脸 + 物体)识别系列

    本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 简书链接:https://www.jianshu.com/u/45da1fbce7d0 上篇写道模拟噪声,这篇打算利用中值 ...

  6. Opencv——图像添加椒盐噪声、高斯滤波去除噪声原理及手写Python代码实现

    一.噪声 我们将常会听到平滑(去噪),锐化(和平滑是相反的),那我们就会有疑惑?什么是噪声呢?图像噪声是指存在于图像数据中不必要的或多余的干扰信息,噪声的存在严重影响了图像的质量.噪声在理论上是&qu ...

  7. python+OpenCv笔记(八):图像噪声(椒盐噪声、高斯噪声)

    由于图像采集.处理.传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理.常见的图像噪声有高斯噪声.椒盐噪声等. 一.椒盐噪声 椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一 ...

  8. Opencv学习(四)图像的噪声处理(椒盐噪声)

    椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有).椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰 ...

  9. OpenCV学习笔记(十一)——图像噪声的生成(椒盐噪声、高斯噪声)

    目录 1 椒盐噪声 2 高斯噪声 图像在获取和传输过程种会受到随机信号的干扰从而产生噪声,例如电阻引起的热噪声.光子噪声.暗电流噪声以及光响应非均匀性噪声等,由于噪声会影响对图像的理解以及后续的处理工 ...

最新文章

  1. 2022年人工智能全球最具影响力学者榜单AI 2000
  2. 北斗核心器件100%国产化,已接入大部分智能手机
  3. arguments.callee查询调用b函数的是哪个函数
  4. RPM vs SRPM
  5. 控制台当前行显示进度条,不换行
  6. 控制HTML Input只能输入数字和小数点
  7. 工作107:vue调用视频接口
  8. java商城_java开源商城系统的优势是什么?
  9. java final对象_java面向对象基础_final详细介绍
  10. C#使用Windows Service
  11. 教你快速运行谷歌EfficientDet目标检测
  12. GARFIELD@01-04-2005
  13. 杭州电子科技大学考研经验贴
  14. 不拦截Request!基于WKWebView的API实现Hybrid容器
  15. 常微分方程组及高阶常微分方程的数值解法
  16. 路由器无线模式与信道检测
  17. 手机虚拟键盘的设置显示隐藏
  18. 跳马周游c++_C++——跳马问题(广搜)
  19. 新零售mysql设计 订单表 订单详情表
  20. EasyExcel实现excel的导入与导出

热门文章

  1. boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
  2. boost::phoenix::for_each相关的测试程序
  3. boost::interprocess::basic_vectorstream用法的测试程序
  4. boost::hana::id用法的测试程序
  5. boost::graph::distributed::distributed_queue用法的测试程序
  6. boost::function模块实现分配器的测试程序
  7. GDCM:gdcm::Coder的测试程序
  8. boost::core模块检查显式运算符bool测试程序
  9. boost::callable_traits添加member左值引用
  10. Boost:字符串正则表达式的测试程序