边缘检测与 Hough 变换 实验目的:写一段代码实现一幅图像,其中分为以下两个步骤 1. 使用 Matlab 中的 canny 算子进行边缘检测,可以让使用者交互式的输入不同的 Sigma 的值实现边缘检测。 2. 运用 Hough 变换来找到最突出的边缘,在图像中找到并画出最长的直线。 实验原理: canny 算子边缘检测的基本原理是:采用二维高斯函数的任一方向上的一阶方向导数为噪声滤波器,通过与图像 f(x,y)卷积进行滤波,然后对滤波后的图像寻找图像梯度的局部极大值,以确定图像边缘。 Canny 边缘检测算子是一种最优边缘检测算子。其实现步骤如下: 1) 用高斯滤波器平滑图像 2) 计算滤波后图像梯度的幅值和方向 3) 对梯度幅值应用非极大值抑制,其过程为找出图像梯度中的局部极大值点,把其他非局部极大值置零,以得到细化的边缘; 4) 再用双阈值算法检测和连接边缘; 使用 canny 算子的 edge 函数调用格式为 BW=edge(I,'canny'); BW=edge(I,'canny',thresh,sigma); BW=edge(I,'canny',thresh); [BW,threshold]=edge(I,'canny',…); 2.Hough 变换时最常用的直线提取方法,它的基本思想是:将直线上每一个数据点变换为参数平面中的一条直线或曲线,利用共线的数据点对应的参数曲线相交于参数空间中一点的关系,使得直线提取问题转化为计数问题。Hough 变换提取直线的主要优点是受直线中的间隙和噪声影响较小。 Hough 检测直线的 Matlab 实现:在 Matlab 图像处理工具箱中提供了3 个与Hough 变换有关的函数,分别为 hough 函数,houghpeaks 函数和 houghlines函数。 hough 函数的调用格式为[H,theta,rho]=hough(BW);其中 BW 为二值图像,H 为 Hough 变换矩阵,theta 为变换轴间隔θ,rho 为元素个数。 Houghpeaks 函数是用来提取Hough 变换后参数平面上的峰值点。其调用格式为 peaks=houghpeaks(H,numpeaks),其中,H 为 Hough 函数的输出,参数平面的技术结果矩阵,参数 numpeaks 为指定要提取的峰值数目,默认值为 1;输出参数 peaks 为 Q*2 维峰值位置矩阵,其中 Q 为提取的峰值数目,peaks的第 q 行分别存储第 q 个峰值的行和列坐标。 Hough 函数用于在图像中提取参数平面上的峰值点对应的直线。其调用格式为 lines=houghlines(BW,theta,rho,peaks) Lines=houghlines(…,param1,val1,param2,val2) 其中,BW 与 Hough 函数的 BW 相同,为二值图象。...