- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。
如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!!
Good better best, never let it rest, until good is better, and better best.
近期会把自己本科阶段的一些课程设计、实验报告等分享出来,供大家参考,希望对大家有帮助。
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html
1、 掌握图像邻域的概念。
2、 掌握邻域平均法的原理、滤波过程。
3、 掌握在给定阈值时,邻域平均法的滤波过程(又叫做超限邻域平均法)。
4、 掌握灰度空间域运算的基本算法。
利用邻域平均法,对图像进行滤波给定阈值时利用邻域平均法,对图像进行滤波。完成取阈值的邻域平均法算法,并不断测试阈值,给出测试结果及阈值数值。
1) 原理
邻域平均法的思想是用像素及其指定邻域内像素的平均值或加权平均值作为该像素的新值,以便去除突变的像素点,从而滤除一定的噪声。为了解决邻域平均法造成的图像模糊问题,采用阈值法(又叫做超限邻域平均法,如果某个像素的灰度值大于其邻域像素的平均值,且达到一定水平,则判断该像素为噪声,继而用邻域像素的均值取代这一像素值;否则,认为该像素不是噪声点,不予取代),给定阈值设输入图像为
,那么 ,
其中mn表示以 为中心的含M个像素的邻域的平均灰度值,其中s表示以(I,j)为中心的邻域,那么
若
则取平均值否则就取原始值,这样T为事先给定的一个阈值,需要不断的测试。其中,当结构体元素越大,则平滑效果越好,而T越大,图像就越清晰。
2) 流程
(1) 打开VC++,打开工作空间,在ResourceView中菜单中添加邻域平均法按钮;
(2) 取结构元素为9x9,阈值为一个可变变量,然后对原始图像lpDIBBits进行循环,为了防止越界,循环的ij元素都从4开始,然后循环过程中,使用临时变量sum存储9x9的结构元素的和,将sum除以81,得到一个灰度平均值;
(3) 将平均值进行防止越界的判断,在然后使用条件
,满足则将对应点的值赋值为阈值T否则还是保持原有灰度值不变,最后完成对图像的取阈值的邻域平均处理。
3) 数据输出
分析:当阈值不同时,总是小的噪声先被过滤掉,而大的噪声点需要的阈值减小;当阈值和结构元素都调高时,噪声过滤效果很好,但是同时也损失了原图的部分细节。
void CAView::OnLinyupingjun()
{
BackForUndo(GetDocument()->GetHDIB());
// 获取文档
CADoc* pDoc = GetDocument();
// 指向DIB的指针
LPSTR lpDIB;
// 锁定DIB
lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
// 源图像的宽度和高度
LONG lWidth;
LONG lHeight;
lWidth=::DIBWidth(lpDIB);/* 获取图像的"宽度"(4的倍数)*/
lHeight=::DIBHeight(lpDIB)/*获取图像的高度*/;
// 指向DIB象素的指针
LPBYTE lpDIBBits;
// 找到源DIB图像象素起始位置
lpDIBBits = (LPBYTE)::FindDIBBits(lpDIB);
// 创建新DIB
HDIB hNewDIB = NULL;
// 更改光标形状
BeginWaitCursor();
LPBYTE lpSrc;//每个像素点的指针
LONG lLineBytes;
lLineBytes=WIDTHBYTES(lWidth *8);
long i,j; // 循环需要的变量
lpSrc=new unsigned char[lWidth*lHeight];//开辟新的临时空间
memset(lpSrc,(unsigned char)255,sizeof(unsigned char)*lWidth*lHeight);//初始化
double sum=0;//灰度值
double count=81;//要除以的因子
double Threshold=50;//阈值
/现在开始在下面编写图像平滑的算法---------------------用非加权算法/
for( i=4;i<lWidth-4;i++){
for(int j=4;j<lHeight-4;j++){
sum=0;//每次将sum清空
for(int m=-4;m<=4;m++){
//9x9的结构元素
for(int n=-4;n<=4;n++){
sum+=1*(*(lpDIBBits+i*lWidth+j+m*lWidth+n));
}
}
//这里得到平均值
double temp=sum/count;
if(temp>=255){temp=255;}//保证在计算的过程中不越界
else if(temp<=0){temp=0;}
else{
temp=temp;
}
//这里开始引入阈值进行判断
if( fabs( temp-(*(lpDIBBits+i*lWidth+j)) )>Threshold ) {
*(lpSrc+i*lWidth+j)=(unsigned char)temp;
}
else
{
*(lpSrc+i*lWidth+j)=*(lpDIBBits+i*lWidth+j);
}
}
}
memcpy(lpDIBBits, lpSrc, sizeof(unsigned char)*lWidth*lHeight);
// 设置脏标记
pDoc->SetModifiedFlag(TRUE);
// 更新视图
pDoc->UpdateAllViews(NULL);
// 解除锁定
::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
// 恢复光标
EndWaitCursor();
}
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html
我在 MySQL 中有以下数据,我想求和(总计)然后除以行数。 例子: 我想对 AcctSessionTime 列中的所有数字求和并将其除以项目数,所以在我们的例子中 6+4+3+31=44 将它们除
我试图找出一个值在列中出现的平均次数,根据另一列对其进行分组,然后对其进行计算。 我有 3 张 table ,有点像这样 DVD ID | NAME 1 | 1 2 | 1 3
好吧,我完全被困在这里,如果这给你们带来任何不便,我深表歉意,但我需要你们的帮助。 我目前正在自学 C,并且从昨天开始慢慢地达到目标。所以我想给自己一个任务,让用户输入 3 个数字,程序必须找到这三个
我在使用 subAverage 类时遇到困难。当我使用 main 方法时,它似乎无法正常运行。基本上,subAverage 对数组中包含开始索引和结束索引的项进行平均。但是,当我运行它时,我得到了 3
像这样平均一个表不是问题 table = [[1,2,3,0],[1,2,3,0],[1,2,3,4]] 你可以 print numpy.average(table,axis=0) 但是如果我有不均匀
问题 -开发一个类平均脚本,每次运行时都会处理任意数量的结果。提示用户输入每个结果,直到他/她输入 -1。 (哨兵)确定类(class)平均值并将其写入页面。如果未输入结果(第一个输入为 -1),则显
我有 2 个包含以下数据的数组: Array1 = [A, A, A, A, B, B, B, C, C, C, C, C]; Array2 = [4, 2, 4, 6, 3, 9, 6, 5,
我有一个如下所示的文本文件: Mike 5 7 9 Terry 3 7 4 Ste 8 2 3 我写了下面的程序 从文本文件中检索数据 将文本分成由空格分隔的列 将每个名字后面的分数按顺序排序(最低在
我试图找到范围内数字的平均值(即找到 1-1000 范围内所有数字的平均值)。我编写了以下代码来执行此操作,但由于 if 语句,在运行时,代码会生成多个数字。然后我尝试使用 while-loop 代替
我有一系列事件。 1 是好的,0 是坏的。寻找寻找 1 个序列的最大、最小和平均长度的最 Pythonic 方式。 例如: seq ="00100000000000110100100000000011
我有一个包含类似于以下数据的表格: Group TimePoint Value 1 0 1 1 0 2
假设我有一个类 C,它具有属性 a。 从 Python 中的 C 列表中获取 a 总和的最佳方法是什么? 我已经尝试了以下代码,但我知道这不是正确的做法: for c in c_list: t
我有一个看起来像的数据: AAA_1 AAA_2 AAA_3 BBB_1 BBB_2 BBB_3 CCC 1 1 1 1 2 2
对于分色算法,我需要对 std::vector 中的颜色值 (QRgb) 进行平均。 您建议如何做?分别对 3 个分量求和然后取平均值?不然呢? 最佳答案 自 QRgb只是一个 ARGB 格式的 32
在this问题中,我要求对精度调用曲线进行澄清。 特别是,我问我们是否必须考虑一定数量的排名才能画出曲线,还是我们可以合理地选择自己。根据answer,第二个是正确的。 但是,现在我对平均精度(AP)
我想在 UDP 数据包丢失(或丢失)问题上获得其他 SO'ers 的经验。 最初我的理解是,给定直接点对点连接,其中网卡通过交叉电缆连接,网卡上有充足的缓冲区并及时处理所述缓冲区,“应该”没有数据包丢
我有一系列数据,这些数据是通过分子动力学模拟获得的,因此在时间上是连续的,并且在某种程度上是相关的。我可以将平均值计算为数据的平均值,我想估计与以这种方式计算的平均值相关的误差。 根据 this bo
我正在使用以下averageIf公式 =AVERAGEIF('Backend Data - Aerospace'!D:D, "Total",'Backend Data - Aerospace'!E:E
我想列出所有收入超过平均工资的员工。我对此有点迷茫。我需要将所有薪水加起来然后取平均,只显示收入高于平均水平的薪水。在这方面我需要很多帮助。 我的查询不起作用 SQL> select empno,
我正在运行一些音频压缩测试并尝试 Skype's Silk .在他们的测试应用程序中,我看到压缩率为 94%。这似乎很高,这是 Silk 的典型比率吗?这与其他音频压缩编解码器有可比性吗? 最佳答案
我是一名优秀的程序员,十分优秀!