滤波和边缘检测.docx

上传人:b****4 文档编号:3130049 上传时间:2022-11-17 格式:DOCX 页数:12 大小:1.12MB
下载 相关 举报
滤波和边缘检测.docx_第1页
第1页 / 共12页
滤波和边缘检测.docx_第2页
第2页 / 共12页
滤波和边缘检测.docx_第3页
第3页 / 共12页
滤波和边缘检测.docx_第4页
第4页 / 共12页
滤波和边缘检测.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

滤波和边缘检测.docx

《滤波和边缘检测.docx》由会员分享,可在线阅读,更多相关《滤波和边缘检测.docx(12页珍藏版)》请在冰豆网上搜索。

滤波和边缘检测.docx

滤波和边缘检测

 

课程实验报告

2017-2018学年一学期

课程名称:

计算机视觉及应用

实验名称:

滤波和边缘检测

班级:

学生:

学号:

实验日期:

2017.12.3地点:

指导教师:

成绩评定:

批改日期:

的及要求

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。

图像属性中的显著变化通常反映了属性的重要事件和变化。

这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。

边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。

实验仪器设备

实验设备为一台装有win10系统的PC,qt+opencv软件。

实验原理

大量的实验研究发现,由摄像机拍摄得到的图像受离散的脉冲、椒盐噪声和零均值的高斯噪声的影响较严重。

噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。

椒盐噪声是指两种噪声,一种是盐噪声(saltnoise),另一种是胡椒噪声(peppernoise)。

盐=白色,椒=黑色。

前者是高灰度噪声,后者属于低灰度噪声。

一般两种噪声同时出现,呈现在图像上就是黑白杂点

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

方法是用某种结构的二维滑动模板,将板像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。

二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)},其中,f(x,y),g(x,y)分别为原始图像和处理后图像。

在通过canny算子和sobel算子进行边缘检测。

canny算子进行边缘检测的原理

(1)图象边缘检测必须满足两个条件:

一能有效地抑制噪声;二必须尽量精确确定边缘的位置。

(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。

这就是Canny边缘检测算子。

 (3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。

sobel算子进行边缘检测的原理

Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通常使用3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。

实验容

1)通过给定的图像加入椒盐噪声,并通过相应的中值滤波算法过滤掉噪声。

2)使用Canny算子提取给定的图像的边缘。

3)通过对比Canny算子和Sobel算子在边缘检测上面的应用,比较两则之间的差别。

4)在给定的图片上面添加噪声,然后在进行边缘检测。

实验步骤及方法

1.Canny算子边缘检测的原理

1.1对原始图像进行灰度化

Canny算法通常处理的图像为灰度图,因此如果摄像机获取的是彩色图像,那首先就得进行灰度化。

对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。

以RGB格式的彩图为例,通常灰度化采用的方法是Gray=0.299R+0.587G+0.114B。

1.2对图像进行高斯滤波

 图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。

1)高斯核实现

2)图像高斯滤波

通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这回增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。

1.3用一阶偏导的有限差分来计算梯度的幅值和方向

 其x向、y向的一阶偏导数矩阵,梯度幅值以及梯度方向

1.4对梯度幅值进行非极大值抑制

图像梯度幅值矩阵中的元素值越大,说明图像中该点的梯度值越大,但这不能说明该点就是边缘(这仅仅是属于图像增强的过程)。

在Canny算法中,非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点局部最大值,将非极大值点所对应的灰度值置为0,这样可以剔除掉一大部分非边缘的点。

1.5用双阈值算法检测和连接边缘

Canny算法中减少假边缘数量的方法是采用双阈值法。

选择两个阈值(关于阈值的选取方法在扩展中进行讨论),根据高阈值得到一个边缘图像,这样一个图像含有很少的假边缘,但是由于阈值较高,产生的图像边缘可能不闭合,未解决这样一个问题采用了另外一个低阈值。

在高阈值图像中把边缘成轮廓,当到达轮廓的端点时,该算法会在断点的8邻域点中寻找满足低阈值的点,再根据此点收集新的边缘,直到整个图像边缘闭合。

2.中值滤波原理

2.1通过从图像中的某个采样窗口取出奇数个数据进行排序

2.2用排序后的中值取代要处理的数据即可

实验数据

OPENCV程序代码:

1)图像的平滑处理

intmain(){

Matimage=imread("H:

/picture/1.jpg");

imshow("Originalpicture",image);

MatSalt_Image=addSaltNoise(image,3000);//添加椒盐噪声

imshow("addSaltNoise",Salt_Image);

Matimage3,image4;

MedianFlitering(Salt_Image,image3);

imshow("defaultmedianfilterimage",image3);

waitKey();

}

2)边缘检测(canny)

intmain()

{

MatsrcImage=imread("H:

/picture/1.jpg");

if(!

srcImage.data)

return-1;

Matdst;

dst.create(srcImage.size(),srcImage.type());//创建与src同类型和大小的矩阵(dst)

imshow("dst",dst);

imshow("srcImage",srcImage);

Matconver_Image;

cvtColor(srcImage,conver_Image,COLOR_BGR2GRAY);//将彩色图转化为灰度图

imshow("coversionimage",conver_Image);

MatGaussian_image;

blur(conver_Image,Gaussian_image,Size(3,3));

imshow("Gaussianblurimage",Gaussian_image);

Matedge_image;

Canny(conver_Image,edge_image,30,90,3);//原本是150,100一般情况就是2:

imshow("edgeImage",edge_image);

dst=Scalar:

:

all(0);//将g_dstImage的所有元素设置为0

Matedge_image1=srcImage.clone();//将原图片srcImageclone到edgeimage

edge_image1.copyTo(dst,edge_image);

imshow("coloredgeImage",dst);

waitKey(0);

return0;

}

边缘检测(Sobel)

intmain(intargc,char**argv)

{

Matsrc,src_gray;

Matgrad;

char*window_name="Sobelgussiondetecting";

intscale=1;//默认值

intdelta=0;//默认值

intddepth=CV_16S;//防止输出图像深度溢出

intc;

src=imread("H:

/picture/1.jpg");

if(!

src.data)

{return-1;}

//高斯模糊

GaussianBlur(src,src,Size(3,3),0,0,BORDER_DEFAULT);

//变换为灰度图

cvtColor(src,src_gray,CV_RGB2GRAY);

//加入高斯白噪声

Matsobel_src=addGaussianNoise(src_gray);

//创建窗口

namedWindow(window_name,CV_WINDOW_AUTOSIZE);

//生成grad_xandgrad_y

Matgrad_x,grad_y;

Matabs_grad_x,abs_grad_y;

//GradientXx方向梯度1,0:

x方向计算微分即导数

//Scharr(src_gray,grad_x,ddepth,1,0,scale,delta,BORDER_DEFAULT);

Sobel(sobel_src,grad_x,ddepth,2,0,3,scale,delta,BORDER_DEFAULT);

convertScaleAbs(grad_x,abs_grad_x);

//GradientYy方向梯度0,1:

y方向计算微分即导数

//Scharr(src_gray,grad_y,ddepth,0,1,scale,delta,BORDER_DEFAULT);

Sobel(sobel_src,grad_y,ddepth,0,2,3,scale,delta,BORDER_DEFAULT);

convertScaleAbs(grad_y,abs_grad_y);

//近似总的梯度

addWeighted(abs_grad_x,0.9,abs_grad_y,0.9,0,grad);

imshow(window_name,grad);

waitKey(0);

return0;

}

 

实验数据分析及处理

示例图片角点检测情况:

图一图二

图一为示例图像加入椒盐噪声的图片。

图二是用中值滤波后的图片。

图三图四

图五图六

图三为将原图像进行灰度化后的图片,图四为在灰度图片上面用canny算子进行边缘提取的图片

图五为将在灰度图片上面进行边缘提取后的图片夹到原图像的结果,图六为使用了sobel算子进行边缘提取的结果

图七图八

图九

图七为加入sigma=0.1的高斯白噪声后,利用canny算子进行的轮廓提取。

图八为加入sigma=0.5的高斯白噪声后,利用canny算子进行的轮廓提取。

图九为加入sigma=0.1的高斯白噪声后,利用sobel算子进行的轮廓提取

 

实验结果分析

(1)通过这次实验,我们能够看出中值滤波对过滤椒盐噪声的效果很好,主要是因为椒盐噪声的黑白的值为255和0,通过中值滤波能够较好的过滤出里面的噪声。

(2)通过使用canny算子和sobel算子对所给的图像进行边缘提取,我们能够看到canny算子在边缘提取中,效果比使用sobel算子进行边缘提取的效果好。

(3)通过这次实验,我们能够看出当加入sigma=0.1的高斯噪声时效果比加入sigma=0.5的高斯噪声时效果的边缘提取效果好。

主要是因为当加入sigma大的高斯噪声的时候,在进行边缘提取时,会将噪声当成图像提取出来。

同样加入sigma=0.1的

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1