11. 对一幅灰度图像增加高频噪声,再对其进行频域低通滤波。

2023-10-20 01:20

本文主要是介绍11. 对一幅灰度图像增加高频噪声,再对其进行频域低通滤波。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <cv.h>
#include <highgui.h> //图像视频输出/输入头文件
using namespace std;
IplImage* AddGuassianNoise(IplImage* src)    //添加高斯噪声
{
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage* noise = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
CvRNG rng = cvRNG(-1);
cvRandArr(&rng, noise, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(15));
cvAdd(src, noise, dst);
return dst;
}
IplImage* AddPepperNoise(IplImage* src)      //添加胡椒噪声,随机黑色点
{
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvCopy(src, dst);
for (int k = 0; k<8000; k++)
{
int i = rand() % src->height;
int j = rand() % src->width;
CvScalar s = cvGet2D(src, i, j);
if (src->nChannels == 1)
{
s.val[0] = 0;
}
else if (src->nChannels == 3)
{
s.val[0] = 0;
s.val[1] = 0;
s.val[2] = 0;
}
cvSet2D(dst, i, j, s);
}
return dst;
}
IplImage* AddSaltNoise(IplImage* src)       //添加盐噪声,随机白色点
{
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvCopy(src, dst);
for (int k = 0; k<8000; k++)
{
int i = rand() % src->height;
int j = rand() % src->width;
CvScalar s = cvGet2D(src, i, j);
if (src->nChannels == 1)
{
s.val[0] = 255;
}
else if (src->nChannels == 3)
{
s.val[0] = 255;
s.val[1] = 255;
s.val[2] = 255;
}
cvSet2D(dst, i, j, s);
}
return dst;
}
IplImage* AddPepperSaltNoise(IplImage* src)    //添加椒盐噪声,随机黑白点
{
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvCopy(src, dst);
for (int k = 0; k<8000; k++)
{
int i = rand() % src->height;
int j = rand() % src->width;
int m = rand() % 2;
CvScalar s = cvGet2D(src, i, j);
if (src->nChannels == 1)
{
if (m == 0)
{
s.val[0] = 255;
}
else
{
s.val[0] = 0;
}
}
else if (src->nChannels == 3)
{
if (m == 0)
{
s.val[0] = 255;
s.val[1] = 255;
s.val[2] = 255;
}
else
{
s.val[0] = 0;
s.val[1] = 0;
s.val[2] = 0;
}
}
cvSet2D(dst, i, j, s);
}
return dst;
}
//算术均值滤波器——模板大小5*5
IplImage* ArithmeticMeanFilter(IplImage* src)
{
IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvSmooth(src, dst, CV_BLUR, 5);
return dst;
}
int main()
{
IplImage * test, *test_1, *test_2;
test = cvLoadImage("6013202130.jpg",0);//图片路径是 ConsoleApplication4 文件夹里,同时实验要求转为灰度图片
test_1 = cvCreateImage(cvSize((test->width), (test->height)), IPL_DEPTH_8U, 1); //创建图像,给指针赋值
test_2 = cvCreateImage(cvSize((test->width), (test->height)), IPL_DEPTH_8U, 1); //创建图像,给指针赋值
test_2 = AddGuassianNoise(test);
test_1 = ArithmeticMeanFilter(test_2);
cvNamedWindow("原图", CV_WINDOW_AUTOSIZE);
cvShowImage("原图", test);
cvNamedWindow("滤波后", CV_WINDOW_AUTOSIZE);
cvShowImage("滤波后", test_1);
cvNamedWindow("噪声后", CV_WINDOW_AUTOSIZE);
cvShowImage("噪声后", test_2);
cvWaitKey(0);//等待按键
cvDestroyWindow("zhang_fei_1");
cvDestroyWindow("zhang_fei_2");
cvDestroyWindow("zhang_fei_3");
cvReleaseImage(&test);//释放内存。 
cvReleaseImage(&test_1);
cvReleaseImage(&test_2);
return 0;
}

这篇关于11. 对一幅灰度图像增加高频噪声,再对其进行频域低通滤波。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243657

相关文章

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);

使用 GoPhish 和 DigitalOcean 进行网络钓鱼

配置环境 数字海洋VPS 我创建的丢弃物被分配了一个 IP 地址68.183.113.176 让我们登录VPS并安装邮件传递代理: ssh root@68.183.113.176apt-get install postfix 后缀配置中的点变量到我们在 DigitalOcean 中分配的 IP:mynetworks nano /etc/postfix/main.cf

自动驾驶规划中使用 OSQP 进行二次规划 代码原理详细解读

目录 1 问题描述 什么是稀疏矩阵 CSC 形式 QP Path Planning 问题 1. Cost function 1.1 The first term: 1.2 The second term: 1.3 The thrid term: 1.4 The forth term: 对 Qx''' 矩阵公式的验证 整体 Q 矩阵(就是 P 矩阵,二次项的权重矩阵)

使用obdumper对oceanbase进行备份,指定2881端口

1.安装obdumper (1)下载软件 OceanBase分布式数据库-海量数据 笔笔算数https://www.oceanbase.com/softwarecenter (2)安装软件 参考:https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000000628759https://www.oceanb

音视频开发基础知识(1)——图像基本概念

像素 **像素是图像的基本单元,一个个像素就组成了图像。你可以认为像素就是图像中的一个点。**在下面这张图中,你可以看到一个个方块,这些方块就是像素。 分辨率 图像(或视频)的分辨率是指图像的大小或尺寸。我们一般用像素个数来表示图像的尺寸。比如说一张1920x1080的图像,前者1920指的是该图像的宽度方向上有1920个像素点,而后者1080指的是图像的高 度方向上有1080个像素点。