滤波和边缘检测_第1页
滤波和边缘检测_第2页
滤波和边缘检测_第3页
滤波和边缘检测_第4页
滤波和边缘检测_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程实验报告2017 - 2018学年一学期课程名称: 计算机视觉及应用 实验名称: 滤波和边缘检测 班 级: 学生姓名: 学号: 实验日期: 2017.12.3 地点: 指导教师: 成绩评定: 批改日期: 实验目的及要求边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。 这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。 边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。实验仪器设备实验设备为一台装有win10系统的PC,qt+ope

2、ncv软件。实验原理 大量的实验研究发现,由摄像机拍摄得到的图像受离散的脉冲、椒盐噪声和零均值的高斯噪声的影响较严重。噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。椒盐噪声是指两种噪声,一种是盐噪声(salt noise),另一种是胡椒噪声(pepper noise)。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行

3、排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=medf(x-k,y-l),(k,lW) ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。在通过canny算子和sobel算子进行边缘检测。canny算子进行边缘检测的原理(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。 (3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。sobel算子进行边缘检测的原理Sobel算子是一阶导数的边缘检测算子,在算法

4、实现过程中,通常使用3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。实验内容1)通过给定的图像加入椒盐噪声,并通过相应的中值滤波算法过滤掉噪声。2)使用Canny算子提取给定的图像的边缘。3)通过对比Canny算子和Sobel算子在边缘检测上面的应用,比较两则之间的差别。4)在给定的图片上面添加噪声,然后在进行边缘检测。实验步骤及方法1.Canny算子边缘检测的原理1.1对原始图像进行灰度化Canny算法通常处理的图像为灰度图,因此如果摄像机获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RG

5、B格式的彩图为例,通常灰度化采用的方法是Gray=0.299R+0.587G+0.114B。1.2对图像进行高斯滤波 图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。1)高斯核实现K=12* e-x2222)图像高斯滤波通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这回增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。1.3用一阶偏导的有限差分来计算梯度的幅值和方向Sx=-11-11 Sy=11-1-1 其x向、y向的一阶偏导数矩阵,梯度幅值以及梯度方向1.4对梯度幅值进行非极大值抑

6、制图像梯度幅值矩阵中的元素值越大,说明图像中该点的梯度值越大,但这不能说明该点就是边缘(这仅仅是属于图像增强的过程)。在Canny算法中,非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点局部最大值,将非极大值点所对应的灰度值置为0,这样可以剔除掉一大部分非边缘的点。1.5用双阈值算法检测和连接边缘Canny算法中减少假边缘数量的方法是采用双阈值法。选择两个阈值(关于阈值的选取方法在扩展中进行讨论),根据高阈值得到一个边缘图像,这样一个图像含有很少的假边缘,但是由于阈值较高,产生的图像边缘可能不闭合,未解决这样一个问题采用了另外一个低阈值。在高阈值图像中把边缘链接成轮廓,当到达轮廓

7、的端点时,该算法会在断点的8邻域点中寻找满足低阈值的点,再根据此点收集新的边缘,直到整个图像边缘闭合。2.中值滤波原理2.1通过从图像中的某个采样窗口取出奇数个数据进行排序2.2用排序后的中值取代要处理的数据即可实验数据OPENCV程序代码:1)图像的平滑处理int main() Mat image = imread("H:/picture/1.jpg"); imshow("Original picture", image); Mat Salt_Image = addSaltNoise(image, 3000); /添加椒盐噪声 imshow("

8、;addSaltNoise",Salt_Image); Mat image3, image4; MedianFlitering(Salt_Image, image3); imshow("default median filter image", image3); waitKey();2)边缘检测(canny)int main()Mat srcImage = imread("H:/picture/1.jpg"); if (!srcImage.data) return -1; Mat dst; dst.create( srcImage.size()

9、, srcImage.type() ); / 创建与src同类型和大小的矩阵(dst) imshow("dst", dst); imshow("srcImage", srcImage); Mat conver_Image; cvtColor(srcImage, conver_Image, COLOR_BGR2GRAY);/将彩色图转化为灰度图 imshow("coversion image", conver_Image); Mat Gaussian_image; blur( conver_Image, Gaussian_image,

10、Size(3,3) ); imshow("Gaussian blur image", Gaussian_image); Mat edge_image; Canny(conver_Image, edge_image, 30, 90, 3); /原本是150,100 一般情况就是2: imshow("edgeImage",edge_image); dst = Scalar:all(0); /将g_dstImage内的所有元素设置为0 Mat edge_image1 = srcImage.clone(); /将原图片srcImage clone到edge im

11、age edge_image1.copyTo(dst, edge_image); imshow("color edgeImage", dst); waitKey(0); return 0;边缘检测(Sobel)int main( int argc, char* argv ) Mat src, src_gray; Mat grad; char* window_name = "Sobel gussion detecting" int scale = 1;/默认值 int delta = 0;/默认值 int ddepth = CV_16S;/防止输出图像深度

12、溢出 int c; 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 ); /加入高斯白噪声 Mat sobel_src = addGaussianNoise(src_gray); /创建窗口 namedWindow( window_name, CV_WINDOW_AUTOSIZE );

13、 /生成 grad_x and grad_y Mat grad_x, grad_y; Mat abs_grad_x, abs_grad_y; / Gradient X x方向梯度 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 ); / Gradie

14、nt Y y方向梯度 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,

15、grad ); waitKey(0); return 0;实验数据分析及处理示例图片角点检测情况: 图一 图二图一为示例图像加入椒盐噪声的图片。图二是用中值滤波后的图片。 图三 图四 图五 图六图三为将原图像进行灰度化后的图片,图四为在灰度图片上面用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的高斯噪声时效果的边缘提取效果好。主要是因为当加入si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论