opencv图像去噪实验Word格式.docx

上传人:b****2 文档编号:5279145 上传时间:2023-05-04 格式:DOCX 页数:30 大小:3.10MB
下载 相关 举报
opencv图像去噪实验Word格式.docx_第1页
第1页 / 共30页
opencv图像去噪实验Word格式.docx_第2页
第2页 / 共30页
opencv图像去噪实验Word格式.docx_第3页
第3页 / 共30页
opencv图像去噪实验Word格式.docx_第4页
第4页 / 共30页
opencv图像去噪实验Word格式.docx_第5页
第5页 / 共30页
opencv图像去噪实验Word格式.docx_第6页
第6页 / 共30页
opencv图像去噪实验Word格式.docx_第7页
第7页 / 共30页
opencv图像去噪实验Word格式.docx_第8页
第8页 / 共30页
opencv图像去噪实验Word格式.docx_第9页
第9页 / 共30页
opencv图像去噪实验Word格式.docx_第10页
第10页 / 共30页
opencv图像去噪实验Word格式.docx_第11页
第11页 / 共30页
opencv图像去噪实验Word格式.docx_第12页
第12页 / 共30页
opencv图像去噪实验Word格式.docx_第13页
第13页 / 共30页
opencv图像去噪实验Word格式.docx_第14页
第14页 / 共30页
opencv图像去噪实验Word格式.docx_第15页
第15页 / 共30页
opencv图像去噪实验Word格式.docx_第16页
第16页 / 共30页
opencv图像去噪实验Word格式.docx_第17页
第17页 / 共30页
opencv图像去噪实验Word格式.docx_第18页
第18页 / 共30页
opencv图像去噪实验Word格式.docx_第19页
第19页 / 共30页
opencv图像去噪实验Word格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

opencv图像去噪实验Word格式.docx

《opencv图像去噪实验Word格式.docx》由会员分享,可在线阅读,更多相关《opencv图像去噪实验Word格式.docx(30页珍藏版)》请在冰点文库上搜索。

opencv图像去噪实验Word格式.docx

模板大小7*7(对比中值滤波器的效果)

5、彩色图像均值滤波

利用OpenCV对彩色图像RGB三个通道的像素进行操作,利用算术均值滤波器和几何均值滤波器进行彩色图像去噪。

模板大小为5*5。

实验完成情况

1、实验步骤:

先为灰度图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声,再分别利用算术均值滤波器、几何均值滤波器、谐波和逆谐波均值滤波器进行图像去噪。

核心代码如下:

添加各类噪声:

IplImage*AddGuassianNoise(IplImage*src)//添加高斯噪声

{

IplImage*dst=cvCreateImage(cvGetSize(src),src->

depth,src->

nChannels);

IplImage*noise=cvCreateImage(cvGetSize(src),src->

CvRNGrng=cvRNG(-1);

cvRandArr(&

rng,noise,CV_RAND_NORMAL,cvScalarAll(0),cvScalarAll(15));

cvAdd(src,noise,dst);

returndst;

}

IplImage*AddPepperNoise(IplImage*src)//添加胡椒噪声,随机黑色点

cvCopy(src,dst);

for(intk=0;

k<

8000;

k++)

{

inti=rand()%src->

height;

intj=rand()%src->

width;

CvScalars=cvGet2D(src,i,j);

if(src->

nChannels==1)

s.val[0]=0;

}

elseif(src->

nChannels==3)

s.val[0]=0;

s.val[1]=0;

s.val[2]=0;

cvSet2D(dst,i,j,s);

IplImage*AddSaltNoise(IplImage*src)//添加盐噪声,随机白色点

s.val[0]=255;

s.val[0]=255;

s.val[1]=255;

s.val[2]=255;

IplImage*AddPepperSaltNoise(IplImage*src)//添加椒盐噪声,随机黑白点

intm=rand()%2;

if(m==0)

s.val[0]=255;

}

else

s.val[0]=0;

}

s.val[1]=0;

s.val[2]=0;

各类滤波器实现:

//算术均值滤波器——模板大小5*5

IplImage*ArithmeticMeanFilter(IplImage*src)

cvSmooth(src,dst,CV_BLUR,5);

//几何均值滤波器——模板大小5*5

IplImage*GeometryMeanFilter(IplImage*src)

introw,col;

inth=src->

intw=src->

doublemul[3];

doubledc[3];

intmn;

//计算每个像素的去噪后color值

for(inti=0;

i<

src->

i++){

for(intj=0;

j<

j++){

mul[0]=1.0;

mn=0;

//统计邻域内的几何平均值,邻域大小5*5

for(intm=-2;

m<

=2;

m++){

row=i+m;

for(intn=-2;

n<

n++){

col=j+n;

if(row>

=0&

&

row<

h&

col>

=0&

col<

w){

CvScalars=cvGet2D(src,row,col);

mul[0]=mul[0]*(s.val[0]==0?

1:

s.val[0]);

//邻域内的非零像素点相乘

mn++;

}

}

}

//计算1/mn次方

CvScalard;

dc[0]=pow(mul[0],1.0/mn);

d.val[0]=dc[0];

//统计成功赋给去噪后图像。

cvSet2D(dst,i,j,d);

//谐波均值滤波器——模板大小5*5

IplImage*HarmonicMeanFilter(IplImage*src)

doublesum[3];

sum[0]=0.0;

//统计邻域,5*5模板

sum[0]=sum[0]+(s.val[0]==0?

255:

255/s.val[0]);

dc[0]=mn*255/sum[0];

//逆谐波均值大小滤波器——模板大小5*5

IplImage*InverseHarmonicMeanFilter(IplImage*src)

//cvSmooth(src,dst,CV_BLUR,5);

doublesum1[3];

doubleQ=2;

sum1[0]=0.0;

//统计邻域

sum[0]=sum[0]+pow(s.val[0]/255,Q+1);

sum1[0]=sum1[0]+pow(s.val[0]/255,Q);

dc[0]=(sum1[0]==0?

0:

(sum[0]/sum1[0]))*255;

实验结果如图所示:

(从左至右,从上至下分别为原图像、加噪图像、算术均值处理图像、几何均值处理图像、谐波均值处理图像、逆谐波均值处理图像)

(1)高斯噪声:

(2)胡椒噪声:

(3)盐噪声

(4)椒盐噪声

 

2、实验步骤:

先为灰度图像添加胡椒噪声、盐噪声和椒盐噪声,再分别利用5*5和9*9尺寸的模板对图像进行中值滤波。

IplImage*MedianFilter_5_5(IplImage*src){

cvSmooth(src,dst,CV_MEDIAN,5);

IplImage*MedianFilter_9_9(IplImage*src){

cvSmooth(src,dst,CV_MEDIAN,9);

实验结果如下图(灰度图像和加噪图像第一问中已给出,下面只列出分别利用5*5和9*9尺寸的模板对图像进行中值滤波后的图像):

灰度图像加胡椒噪声,分别利用5*5和9*9尺寸的模板对图像进行中值滤波。

灰度图像加盐噪声,分别利用5*5和9*9尺寸的模板对图像进行中值滤波。

灰度图像加椒盐噪声,分别利用5*5和9*9尺寸的模板对图像进行中值滤波。

3、实验步骤:

自适应均值滤波(以高斯噪声为例),先为灰度图像添加高斯噪声,再利用7*7尺寸的模板对图像进行自适应均值滤波。

IplImage*SelfAdaptMeanFilter(IplImage*src){

cvSmooth(src,dst,CV_BLUR,7);

doubleZxy;

doubleZmed;

doubleSxy;

doubleSl;

doubleSn=100;

CvScalarxy=cvGet2D(src,i,j);

Zxy=xy.val[0];

CvScalardxy=cvGet2D(dst,i,j);

Zmed=dxy.val[0];

Sl=0;

for(intm=-3;

=3;

for(intn=-3;

Sxy=s.val[0];

Sl=Sl+pow(Sxy-Zmed,2);

Sl=Sl/mn;

d.val[0]=Zxy-Sn/Sl*(Zxy-Zmed);

实验结果如图:

4、实验步骤:

自适应中值滤波(以椒盐噪声为例),先为灰度图像添加椒盐噪声,再利用7*7尺寸的模板对图像进行自适应中值滤波。

IplImage*SelfAdaptMedianFilter(IplImage*src){

doubleZmin,Zmax,Zmed,Zxy,Smax=7;

intwsize;

wsize=1;

while(wsize<

=3){

Zmin=255.0;

Zmax=0.0;

Zmed=0.0;

CvScalarxy=cvGet2D(src,i,j);

Zxy=xy.val[0];

intmn=0;

for(intm=-wsize;

=wsize;

row=i+m;

for(intn=-wsize;

col=j+n;

if(row>

CvScalars=cvGet2D(src,row,col);

if(s.val[0]>

Zmax){

Zmax=s.val[0];

}

if(s.val[0]<

Zmin){

Zmin=s.val[0];

Zmed=Zmed+s.val[0];

mn++;

}

Zmed=Zmed/mn;

CvScalard;

if((Zmed-Zmin)>

0&

(Zmed-Zmax)<

0){

if((Zxy-Zmin)>

(Zxy-Zmax)<

d.val[0]=Zxy;

}else{

d.val[0]=Zmed;

cvSet2D(dst,i,j,d);

break;

}else{

wsize++;

if(wsize>

3){

CvScalard;

cvSet2D(dst,i,j,d);

break;

5、实验步骤:

实验代码参照问题一,选择彩色图片、算术均值滤波器和几何均值滤波器进行彩色图像去噪。

实验结果如下图(以椒盐噪声为例):

利用算术均值滤波器:

利用几何均值滤波器:

实验中的问题

实验问题:

几何均值滤波以及谐波、逆谐波滤波没有对应的库函数

解决方法:

通过学习书本对应章节,根据公式写出程序

实验结果

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2