图像处理作业-hough变换的边缘提取

合集下载

hough变换方法

hough变换方法

hough变换方法Hough变换方法引言Hough变换是一种图像处理方法,主要用于检测和提取图像中的几何形状,如直线、圆等。

它在计算机视觉和模式识别领域有着广泛的应用。

本文将介绍Hough变换的原理、算法和应用,并探讨其优缺点以及未来的发展方向。

一、Hough变换的原理Hough变换的核心思想是将图像中的几何形状转化为参数空间中的曲线或点的形式,从而简化形状检测的问题。

对于直线检测来说,Hough变换可以将直线表示为参数空间中的一个点,通过在参数空间中进行累加操作,找到曲线交点最多的点,从而确定图像中的直线。

二、Hough变换的算法1. 边缘检测:在进行Hough变换之前,需要对图像进行边缘检测,以提取形状的边缘信息。

常用的边缘检测算法包括Sobel、Canny 等。

2. 构建参数空间:对于直线检测来说,参数空间可以理解为直线在参数空间中的表示形式。

通常使用极坐标系表示直线,即每个直线由一个长度和一个角度唯一确定。

3. 累加操作:对于图像中的每个边缘点,计算其在参数空间中的曲线或点,并进行累加操作。

通过累加操作,可以找到曲线交点最多的点,从而确定图像中的直线。

4. 阈值判断:根据累加结果,可以设置一个阈值,只有当累加值超过该阈值时,才认为该点对应的直线存在。

5. 参数反变换:将参数空间中的曲线或点反变换回图像空间,得到检测到的直线。

三、Hough变换的应用1. 直线检测:Hough变换最常见的应用就是直线检测。

在工业检测、路标检测等领域中,直线的检测是一项基础任务,Hough变换可以实现准确地直线检测,从而为后续处理提供便利。

2. 圆检测:除了直线检测,Hough变换还可以用于圆的检测。

通过在参数空间中寻找曲线交点最多的点,可以确定图像中的圆的位置和半径。

3. 图像分割:Hough变换可以将图像中的不同几何形状分割出来,从而实现图像的分割处理。

在医学图像处理、目标跟踪等领域中,图像分割是一项重要的任务。

hough 变换检测圆的一般步骤

hough 变换检测圆的一般步骤

hough 变换检测圆的一般步骤霍夫变换是一种图像处理算法,可用于检测图像中的圆形。

下面是霍夫变换检测圆的一般步骤:1.导入图像:首先,将要检测圆的图像导入到计算机中。

图像可以来自于摄像机、存储设备或是从其他算法的输出中获得。

2.灰度化处理:将彩色图像转换为灰度图像。

这是因为灰度图像只有一个通道,可以简化后续处理步骤。

3. 边缘检测:使用边缘检测算法(如Canny算子)对灰度图像进行处理,提取图像中的边缘。

这一步骤可以帮助找到圆形的边界。

4.霍夫变换:将边缘图像输入到霍夫变换中。

霍夫变换将边缘点从笛卡尔坐标系转换到霍夫空间,形成二维投票器矩阵。

在投票器矩阵中,每个圆形都有一个对应的概率值,用于表示该圆形的可能性。

5.阈值设置:在霍夫变换之后,需要设置一个阈值来确定哪些圆形应被认为是检测到的圆形。

根据应用的需求和图像的噪声程度,可以调整阈值的大小。

较高的阈值会产生较少的圆形,而较低的阈值会产生较多的圆形。

6.圆形检测:根据阈值从投票器矩阵中选择可能的圆形。

这些圆形可能包含噪声或重叠的圆形。

因此,需要进行圆形重叠或去噪的处理。

7.圆形参数提取:从霍夫空间中获取每个候选圆形的参数,如圆心的坐标和半径长度。

8.绘制圆形:根据提取的参数,在原始图像上绘制检测到的圆形。

这样一来,圆形就会在图像中展示出来。

9.输出结果:最后,将包含检测到的圆形的图像保存或显示出来。

可以使用不同的颜色或标记形式来区分不同的圆形。

霍夫变换是一种广泛应用于图像处理和计算机视觉领域的算法。

通过这一变换,我们可以快速准确地检测图像中的圆形,为后续的分析和应用提供基础。

hough变换检测圆的一般步骤

hough变换检测圆的一般步骤

hough变换检测圆的一般步骤Hough变换是一种图像处理算法,可用于检测图像中的几何形状,如直线、圆等。

它最早于1962年由Paul Hough提出,用于在图像中检测直线。

之后,Hough变换被扩展用于检测圆。

下面是检测圆的Hough变换的一般步骤。

1.预处理:首先,需要对图像进行预处理,以去除噪声和增强有用的特征。

这可以通过应用图像滤波器、边缘检测等技术来完成。

常用的滤波器有高斯滤波器和中值滤波器。

2. 边缘检测:通过应用边缘检测算法,如Canny边缘检测算法,可以从图像中提取出边缘信息。

3. 参数空间构建:Hough变换通过在参数空间中对每个可能的圆心点和半径进行计数来检测圆。

参数空间是一个二维坐标系统,其中一个轴表示圆心点的x坐标,另一个轴表示圆心点的y坐标。

所有的点在参数空间内都对应着可能的圆。

4.参数空间转换:为了在参数空间中进行计数,需要将每个边缘点转换为在参数空间中的可能圆心点和半径的集合。

5.累加计数:对于每个转换后的边缘点,将其映射到参数空间中的可能圆心点和半径,并对相应的计数器进行累加。

6.阈值化:根据累加计数器的结果,在参数空间中找到可能的圆。

通过设置适当的阈值,可以筛选出累加计数器高于阈值的圆。

7.圆心和半径提取:在参数空间中找到累加计数器高于阈值的圆之后,可以通过从参数空间中提取出圆心坐标和半径的方式来还原检测到的圆。

8.圆检测:通过对检测到的圆进行验证和过滤,可以排除掉一些错误检测的圆。

以上是检测圆的Hough变换的一般步骤。

这些步骤可以作为基础,根据具体需求进行一定的修改和优化。

例如,可以通过设置不同的阈值、调整参数空间的分辨率等方式来改进圆的检测效果。

另外,为了提高效率,还可以使用一些加速技术,如局部累加器、投票框架等。

HOG特征提取必读

HOG特征提取必读

HOG特征提取必读HOG(Histogram of Oriented Gradients)特征提取算法是一种有效的图像特征描述方法,广泛应用于计算机视觉领域。

本文将介绍HOG特征提取的原理和步骤,并结合实例进行详细说明。

一、HOG特征提取原理HOG特征提取算法基于以下观察:图像的边缘和纹理信息往往由局部梯度方向组成,而且人类视觉系统对于这些梯度方向的变化很敏感。

因此,通过提取图像中的局部梯度方向和计算其直方图,可以得到一种有效的图像特征描述方法。

二、HOG特征提取步骤1. 计算图像梯度:首先,对输入图像进行灰度化处理,然后使用一阶差分滤波器(如Sobel算子)计算图像的梯度幅值和方向。

梯度幅值用于后续计算梯度方向的强度。

2.划分图像为小块:将图像划分为若干个小块,通常为16x16像素大小的小块。

这样可以保证每个小块中有足够多的局部梯度方向信息,以便于后续计算直方图。

3.统计每个小块的梯度方向直方图:对于每个小块,统计其中所有像素的梯度方向,并将其分配到若干个方向区间(如9个方向区间)。

然后,统计每个方向区间内像素数量,并得到梯度方向的直方图。

4.归一化特征:对于每个小块,将其梯度方向直方图进行归一化处理,以消除光照变化等因素对特征的影响。

常用的归一化方法包括L2范数归一化和L1范数归一化。

5.特征向量拼接:将所有小块的归一化特征向量按顺序拼接成一维向量,作为整个图像的特征向量表示。

三、HOG特征提取实例下面通过一个实例来演示HOG特征提取的过程。

假设我们有一张大小为128x128像素的图像。

首先,将图像进行灰度化处理。

然后,将图像划分为8x8像素的小块,共有16个小块(8行x8列)。

接下来,计算每个小块中像素的梯度幅值和方向。

然后,统计每个小块的梯度方向直方图。

假设我们将梯度方向划分为9个方向区间(0°-20°,20°-40°,...,160°-180°),并统计每个方向区间内像素数量。

图像处理作业hough变换的边缘提取

图像处理作业hough变换的边缘提取

图像处理期末作业姓名: 学号:97院系:信自院通信系专业:信号与信息处理用Hough变换提取边界直线Hough变换是1962年山Paul Hough提出来的。

它所实现的是一种从图像空间到参数空间的映射关系。

它具有一系列的优点。

例如,山于根据局部度量来计算全面描述参数,因而对于区域边界被噪声干扰或者其他LI标遮盖而引起边界发生瞬间间断的情况,它具有很好的容错性和鲁棒性。

•原理Hough变换是图像处理中从图像中识别儿何形状的基本方法之一。

Hough变换是一种利用表决原理的参数佔计技术。

其基本原理在于利用图像空间和Hough参数空间的点与线的对偶性,把图像空间中的检测问题转换到参数空间。

通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻找累加器峰值的方法检测直线cHough变换的实质是将图像空间内具有一定关系的像元进行聚类,寻找能把这些像元用某一解析形势联系起来的参数空间累讣对应点。

在参数空间不超过二维的情况下,这种变换效果理想。

将原始图像空间的给定的曲线表达形式变为参数空间的一个点,这样就把原始图像中给定曲线的检测问题转化为寻找参数空间的峰值问题,也即是把检测整体特性转化为检测局部特性。

比如直线、椭圆、圆、弧线等。

简而言之,Hough变换思想是:在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。

这样在原始坐标系下的各个点的投影到参数坐标系下之后,看参数坐标系下没有聚集点,这样的聚集点就对应了原始坐标系下的直线。

如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大,从而是计算复杂程度过大,为解决这一问题,釆用极坐标方程,变换方程如图1所示。

p = xcos&+ ysinO根据这个方程,原图像空间中的点对应新参数空间中的一条正弦曲线,即点-正弦曲线对偶。

HOG特征以及提取算法的实现过程

HOG特征以及提取算法的实现过程

HOG特征以及提取算法的实现过程HOG(Histogram of Oriented Gradients,方向梯度直方图)特征是一种用于图像识别或目标检测的特征描述子。

它广泛应用于视觉计算领域,可用于人脸识别、行人检测等任务。

HOG特征的提取算法分为三个主要步骤:图像预处理、计算梯度和构建特征向量。

首先,需要对图像进行预处理。

通常,图像需要调整尺寸和大小,以便后续处理。

在这个过程中,会对图像进行统一缩放,使其具有相同的尺寸。

此外,还可以采用gamma校正等技术对图像进行增强,以提高特征提取的准确性。

接下来,需要计算图像的梯度。

这一步骤是HOG特征的核心。

梯度表示图像中的边缘信息,通过计算图像像素点的梯度大小和方向来获得。

一种常用的方法是使用Sobel算子,分别对图像进行水平和垂直方向的滤波操作,然后计算每个像素点的梯度大小和方向。

然后,将图像分割为多个小的区域(cell)。

每个小区域内,将像素点的梯度方向划分为几个不同的角度,例如0°到180°,并统计每个角度范围内的梯度强度。

这样可以获得每个小区域内的梯度直方图。

接下来,将相邻的小区域进行组合,形成更大的图像区域(block)。

每个block内包含多个小区域,将所有小区域内的梯度直方图串联起来,获得block内的特征向量。

通过将相邻block的特征向量合并起来,即可得到整个图像的HOG特征向量。

最后,为了进一步提高对光照和形变的鲁棒性,需要对HOG特征进行归一化。

常用的归一化方法是通过计算每个block内所有特征向量的范数,并将其除以范数的平方根。

这样可以使得特征向量的模保持相对一致,减少光照变化的影响。

```pythonimport cv2from skimage.feature import hog#读取图像image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)#图像预处理,如调整尺寸和大小image = cv2.resize(image, (64, 128))#计算梯度gradient_x = cv2.Sobel(image, cv2.CV_32F, 1, 0)gradient_y = cv2.Sobel(image, cv2.CV_32F, 0, 1)gradient_magnitude, gradient_angle =cv2.cartToPolar(gradient_x, gradient_y)#将图像划分为小区域cell_size = (8, 8)cell_gradient_bins = 9cell_gradients = hog(image, orientations=cell_gradient_bins, pixels_per_cell=cell_size, cells_per_block=(2, 2),block_norm='L2-Hys')#将小区域合并为大区域,并进行特征向量的拼接block_size = (2, 2)block_stride = (1, 1)block_norm = 'L2-Hys'block_gradients = []for i in range(0, cell_gradients.shape[0] - block_size[0] + 1, block_stride[0]):for j in range(0, cell_gradients.shape[1] - block_size[1] + 1, block_stride[1]):block = cell_gradients[i:i+block_size[0],j:j+block_size[1], :]block_gradients.append(block.flatten()feature_vector = np.concatenate(block_gradients)#归一化feature_vector /= np.sqrt(np.sum(feature_vector ** 2))#输出HOG特征向量print(feature_vector)```总之,HOG特征的提取算法主要包括图像预处理、梯度计算和构建特征向量三个步骤。

Hough变换在物体边缘检测上的应用

Hough变换在物体边缘检测上的应用

引言在现代工业自动化生产中,涉及到各种各样的检查、测量和零件识别应用,如:大型工件平行度和垂直度测量、机械零件的自动识别分类和几何尺寸测量等,基于图像处理的检测方法具有非接触、效率高的特点,为取代繁复的人工劳动提供了可能[1]。

随着计算机软硬件及图像处理理论的发展,此类系统在工业在线质量检测的各个领域正得到广泛的应用。

边缘是图像上一个物体区别于其他物体最基本的特征,如何从图像中得到这些特征边界是非常重要的[2]。

图像中人造目标显著的边缘特征为识别它提供了帮助,需要相应的算法来有效地发现这些边界并加以描述。

人造目标具有规律的边缘较多,也多为直线、圆,具有描述比较简单的特征。

获取表征图像的关系可以减少物体模型匹配的搜索空间,而霍夫变换是一种可以将图像的特征点映射至参数空间,从而获取图像特征点关系的方法[3]。

在某些应用中对边缘的定位精度要求较高,并希望能较好地表征这些边界,Hough变换具有存储空间大、计算时间长的特点,此特点随检测精度的提高而显突出,影响在线检测实时性的要求,在需要给出边缘的精确描述的场合,如在测量机械零件的几何尺寸时,能不能在提高精度的同时,减少检测时间?本文为此作了一些研究。

Hough变换在物体边缘检测上的应用张永忠 朱英 桂林电子工业学院计算机系 5410041Hough变换原理和实现1.1 Hough变换机理Hough变换最初是由P.V.C.Hough根据数学对偶性原理提出的,其基本思想是这样的:对于x-y平面坐标系上的一条直线l:y=kx+b可以用两个参数(θ和ρ)来描述,如图1所示,ρ表示原点到直线的垂直距离,θ表示该垂线与X轴的夹角。

它的参数方程为:ρ=xcosθ+ysinθ,此方程是成立的,它实际上可认为是斜截式的变形,对于某一点P(x,y),此时在ρ-θ坐标系上是一正弦曲线,可以断定:直线l上不同的点在参数空间中被变换为一族相交于一点的正弦曲线。

由于正弦曲线的周期性,此交点在(0<=θ<180)范围内唯一,对于某一共线性好的点集,如能在(θ,ρ)参数空间找出这一点,就能确定表征直线的方程了。

基于Hough变换的道路边界提取方法

基于Hough变换的道路边界提取方法

基于Hough变换的道路边界提取方法摘要:本文利用 matlab7.0软件开发平台工具,采用hough变换等技术手段在图片上进行线性构造信息提取,为今后的研究部署工作提供参考。

但hough变换存在一定的局限性,如对影像分割依赖性大、受非道路因素影响大等。

本文首先利用道路种子点处的光谱信息进行道路区域的生长, 提取光谱信息一致的道路区域,得到一个包含道路信息的二值影像,然后对此二值影像进行滤波,在提取出的道路条状区域的基础上, 根据道路具有的形状特点,利用形态学进行细化和一定次数的形态修剪处理, 得到单像素宽的道路中心线信息。

最后对图像进行基于hough变换的线性特征提取,文章对高分辨率航空遥感影像进行了实验验证了该方法的有效性[1-3]。

关键词:线性特征提取,hough变换,matlaba road edge detection algorithm based on the hough transform qiu zhiweili yan(henan university of urban construction, pingdingshan 467036, china)aqiuzhiwei-2008@, bliyan0502@abstract: by using the road seed point spectrum information in this paper firstly, the relevant road information can be extracted from the spectral information consistent with the road area, road information including two value image can beacquired, and then this two value image filtered, in the extracted road strip on a regional basis according to the road shape characteristics, using morphological thinning and a certain number of form pruning treatment, a single pixel wide road center line information can be extracted. the last image based on hough transform linear feature extraction, the high resolution remote sensing image experiments were carried out to verify the validity of the method[1-3].key words: hough transformation, road edge detection项目来源:河南城建学院科学研究基金项目:利用d-insar技术研究城市沉陷监测及矿区环境影响评价分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图像处理期末作业
姓名:***
学号:**********
院系:信自院通信系
专业:信号与信息处理
用Hough变换提取边界直线
Hough变换是1962年由Paul Hough提出来的。

它所实现的是一种从图像空间到参数空间的映射关系。

它具有一系列的优点。

例如,由于根据局部度量来计算全面描述参数,因而对于区域边界被噪声干扰或者其他目标遮盖而引起边界发生瞬间间断的情况,它具有很好的容错性和鲁棒性。

原理
Hough变换是图像处理中从图像中识别几何形状的基本方法之一。

Hough 变换是一种利用表决原理的参数估计技术。

其基本原理在于利用图像空间和Hough参数空间的点与线的对偶性,把图像空间中的检测问题转换到参数空间。

通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻找累加器峰值的方法检测直线。

Hough变换的实质是将图像空间内具有一定关系的像元进行聚类,寻找能把这些像元用某一解析形势联系起来的参数空间累计对应点。

在参数空间不超过二维的情况下,这种变换效果理想。

将原始图像空间的给定的曲线表达形式变为参数空间的一个点,这样就把原始图像中给定曲线的检测问题转化为寻找参数空间的峰值问题,也即是把检测整体特性转化为检测局部特性。

比如直线、椭圆、圆、弧线等。

简而言之,Hough 变换思想是:在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。

这样在原始坐标系下的各个点的投影到参数坐标系下之后,看参数坐标系下没有聚集点,这样的聚集点就对应了原始坐标系下的直线。

如果参数空间中使用直线方程,当图像空间直线斜率为无穷大时,会使累加器尺寸和变很大,从而是计算复杂程度过大,为解决这一问题,采用极坐标方程,变换方程如图1所示。

θ
ρsin
θ
=
cos y
x+
根据这个方程,原图像空间中的点对应新参数空间中的一条正弦曲线,即点-正弦曲线对偶。

检测直线的具体过程就是让θ取遍可能的值,然后计算ρ的值,
再根据θ和ρ的值对累加数组累加,从而得到共线点的个数。

下面介绍一下关于θ和ρ取值范围的确定。

设被检测的直线在第一象限,右上角坐标为),(n m ,则第一象限中直线的位置情况如图1所示
图1 检测位置图
由图可见,当直线从与x 轴重合处逆时针旋转时,θ的值开始由︒0增大,直到︒180,所以θ的取值范围为︒︒-1800。

由直线极坐标方程可知)sin(22φθρ++=y x ,其中)(sin 221y x x +=-φ,所以当且仅当x 和y 都达到最大且︒±=+90φθ时(根据φ来调整θ的值),22max n m +==ρρ,即ρ的取值范围是),(2222n m n m ++-。

由θ和ρ的取值范围和它们的分辨率可以确定累加器的大小,从而检测直线。

利用Hough 变换,不仅可以检测直线,也可以检测曲线,实际上,只要是能够写得出方程的图像,都可以用Hough 变换检测,以圆周的检测为例,圆的一般方程是:
222)()(r b y a x =-+-
式中有三个参数a ,b 和r ,所以需要在参数空间建立一个三维累加数组A 。

其元素可以写为),,(r b a A 。

让a 和b 依次变化而根据圆的一般方程计算r ,并对
a
)
b
A累加,可见这个过程与检测直线上的点相同,只是空间多了一维,复杂,
,
(r
性也随之增加。

Hough变换的实现流程
利用Hough变换检测图像中直线的一般步骤应该首先对图像二值化,然后进行边缘检测,接着对边缘检测的结果做Hough变换,最后得到直线检测的结果。

具体流程如下:Array
图2 Hough变换流程图
图3 图像的Hough变换提取边缘直线(同一副图像不同阈值对比)
Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连接平滑边缘的一种方法,它将源于图像上的点映射到用于累加的参数空间,实现对已知解析式曲线的识别。

这里先对边缘图像进行二值化处理,然后用Hough变换提取直线,最后用红色标记出来。

因为处理过程中需要使用灰度图像,但最后无法给灰度图像赋颜色,所以最初输入要求为彩色图像。

由实验结果可知,Hough可提取图像的边缘曲线。

在这里需要说明的有三点:1,二值化图像的细节多少可以通过对二值化的阈值调节来控制,阈值越大,细节越少。

2,最后提取直线的阈值越小,可被赋红色的直线越多,但更多无关的细节也可能被提取出来,阈值越大,可被赋红色的直线越少,同时无关细节也减少。

3,通过对着两个参数的适当调节可使提取直线的效果更好。

附录
程序代码:
clc
clear
f=imread('house.jpg');%读入彩色图像,注意不能使用灰度图像
o=f; %保留彩色原图
f=rgb2gray(f);%将彩色图像转换为灰度图像,
f=im2double(f);
figure();
subplot(231);imshow(o);title('原图');
[m,n]=size(f);%得到图像矩阵行数m,列数n
for i=3:m-2
for j=3:n-2%处理领域较大,所以从图像(3,3)开始,在(m-2,n-2)结束
l(i,j)=-f(i-2,j)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)-f(i,j-2)-2*f(i,j-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)-f(i+2,j);%LoG算子
end
end
subplot(232);
imshow(l);
title('LoG算子提取图像边缘');
%均值化滤波处理
[m,n]=size(l);
for i=2:m-1
for j=2:n-1
y(i,j)=l(i-1,j-1)+l(i-1,j)+l(i-1,j+1)+l(i,j-1)+l(i,j)+l(i,j+1)+l(i+1,j-1)+l(i+1,j)+l(i+1, j+1);
y(i,j)=y(i,j)/9; %LoG算子提取边缘后,对结果进行均值滤波以去除噪
声,为下一步hough变换提取直线作准备
end
end
subplot(233);imshow(y);title('均值滤波器处理后')
%二值化处理
q=im2uint8(y);
[m,n]=size(q);
for i=1:m
for j=1:n
if q(i,j)>80; %设置二值化的阈值为80
q(i,j)=255; %对图像进行二值化处理,使图像边缘更加突出清晰
else
q(i,j)=0;
end
end
end
subplot(234);imshow(q);title('二值化处理后');
%Hough变换检测直线,使用(a,p)参数空间,a∈[0,180],p∈[0,2d])
a=180; %角度的值为0到180度
d=round(sqrt(m^2+n^2)); %图像对角线长度为p的最大值
s=zeros(a,2*d); %存储每个(a,p)个数
z=cell(a,2*d); %用元胞存储每个被检测的点的坐标
for i=1:m
for j=1:n%遍历图像每个点
if(q(i,j)==255)%只检测图像边缘的白点,其余点不检测
for k=1:a
p = round(i*cos(pi*k/180)+j*sin(pi*k/180));%对每个点从1到180度遍历一遍,取得经过该点的所有直线的p值(取整)
if(p > 0)%若p大于0,则将点存储在(d,2d)空间
s(k,d+p)=s(k,d+p)+1;%(a,p)相应的累加器单元加1
z{k,d+p}=[z{k,d+p},[i,j]'];%存储点坐标
else
ap=abs(p)+1;%若p小于0,则将点存储在(0,d)空间
s(k,ap)=s(k,ap)+1;%(a,p)相应的累加器单元加一
z{k,ap}=[z{k,ap},[i,j]'];%存储点坐标
end
end
end
end
end
for i=1:a
for j=1:d*2 %检查每个累加器单元中存储数量
if(s(i,j) >35) %将提取直线的阈值设为35
lp=z{i,j};%提取对应点坐标
for k=1:s(i,j)%对满足阈值条件的累加器单元中(a,p)对应的所有点进行操作
o(lp(1,k),lp(2,k),1)=255; %每个点R分量=255,G分量=0,B分量=0
o(lp(1,k),lp(2,k),2)=0;
o(lp(1,k),lp(2,k),3)=0; %结果为在原图上对满足阈值要求的直线上的点赋红色
end
end
end
end
subplot(235)
imshow(o);title('hough变换提取边界直线');。

相关文档
最新文档