- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理课程设计
——最大值、最小值滤波图像增强
实验目的:熟悉了解、学习C、C++语言;
学习VC++在图像处理中的应用;
深入了解图像的增强处理;
深入了解用最大值滤波、最小值滤波增强处理图像的基本知识;
掌握图像处理的基本方法掌握最大值、最小值滤波的程序编写及其它图像增强处理的程序编写的了解。
实验仪器:
TestVC软件,计算机,photoshop软件。
实验原理:
图像增强就是采用某些技术把质量低的图像进行计算机处理, 有选择地加强或抑制图像中的某些信息, 改善图像质量, 提高人或机器对图像的分析与判读能力。
图像的增强处理方法一共有两种,分别是空间域方法和频域方法。空间域方法主要是运用空间滤波对图像增强进行处理,所谓滤波,就是过滤掉图像中的一些“成分”,对数字图像的直接滤波就是空间滤波(相对于频率域滤波)。空间滤波主要包括平均滤波、中值滤波、最大值滤波、最小值滤波等。空间滤波是通过空间滤波器实现。空间滤波器就是在一个邻域(如包围该像素的一个小矩形区域)里,对该邻域包围的像素的进行操作。空间滤波器包括线性滤波器如:线性操作,如加、减、乘运算;非线性滤波器如:非线性操作。空间滤波器又叫模板,类似于矩阵,大小有3*3模板、5*5模板、9*9模板等。
如:9*9模板:
空间滤波对图像的增强处理主要是通过模板运算实现的,按照指定的模板进行运算。
如右图,是对模板运算的
的图示解释。
模版运算实现的主要步骤:
1、将模板在图中遍历,并将模板中心与图中某个像素位置重合;
2、将模板上的各个系数与模板下的各对应像素的灰度值相乘;
3、将所有乘积相加;
4、将上述运算结果赋给模板中心位置的像素。
最大值滤波、最小值滤波的原理:设输出的图像为g(x,y),
(s-1,t-1) (s-1,t) (s-1,t+1) (s,t-1) (s,t) (s,t+1) (s+1,t-1) (s+1,t) (s+1,t+1)
最大值滤波
最小值滤波
实验内容:
1,在百度图库中寻找一张图片:
2,在Photoshop中,将图片改为宽300像素,高300像素的图片,模式保存为RGB,8位/通道,格式为bmp,保存在D盘中,命名为:myimge;
3,打开TestVC.dsw工程文件,再打开mytest.cpp文件,在指定位置输入程序
4,编译,调试,运行。
实验结果:
利用for循环编写代码;
1.1最大值滤波for循环主要代码:
void CTestVCView::test(BYTE inimage[300][300],BYTE outimage[300][300])
{
int i,j,max;
for(i=1;i300;i++)
{
for(j=1;j300;j++)
{
max=inimage[1000][1000];
if(inimage[i][j]max)
{
max=inimage[i][j];
}
outimage[i][j]=max;
}
}
}
1.2代码截图:
1.3 输入图像(左),输出图像(右);
2.1最小值滤波for循环主要代码;
void CTestVCView::test(BYTE inimage[300][300],BYTE outimage[300][300])
{
int i,j,min;
for(i=1;i300;i++)
{
for(j=1;j300;j++)
{
min=inimage[1000][1000];
if(inimage[i][j]min)
{
min=inimage[i][j];
}
outimage[i][j]=min;
}
}
}
2.2代码截图;
2.3实验的输入图像如下图左,处理图像如下图右:
二、利用for、、、if判断语句进行编码;
1.1 最大值滤波的主要编码;
void CTestVCView::test(BYTE inimage[300][300],BYTE outimage[300][300])
{
int i,j,max;
for(i=1;i300;i++)
{
for(j=1;j300;j++)
{
max=inimage[i][j];
if(inimage[i-1][j]max)
{
max=inimage[i-1][j];
}
if(inimage[i-1][j-1]max)
{
max=inimage[i-1][j-1];
}
if (inimage[i-1][j+1]max)
{
文档评论(0)