图像处理作业-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技术研究城市沉陷监测及矿区环境影响评价分析。

基于Hough变换的道路边缘提取

基于Hough变换的道路边缘提取
维普资讯
6 2
交通 与 计 算 机 2 0 0 8年 第 1 期 第 2 6卷 总 1O期 4
基 于 Ho g u h变换 的 道路 边 缘 提取 *
乔 洁 李 京 华 杨 志 荣
( 西北 l 业 大 学 西 安 7 0 7 ) 丁 1 0 2 摘 要 在 以 像 处 理 技 术 为 基 础 的视 觉 导 引 方 式 下 , 出 _ 一 种 基 于 Ho g 提 r u h变 换 的 道 路 边
步骤 1 选择- 个初始 闽值 的估计 值 7。 一 一 ’ 。 :

直线 ; 边缘线 与路 _ 背景具 有强 烈的对 比度 , 面 在灰
度 图像 中表 现 为灰 度 值差 别较 大 , 面背 景有 时 路 比较 杂乱 。依据 道路 边缘 像 的特点 , 者先 笔 应用 中值 滤 波 及维 纳 滤波 对 图像 进行 预处 理 ; 其 次, 利用 自适 应 值 法 对预 处删 后 的 像进 行 分 割; 然后 . 用数学 形态学 埘分 割后 的 像去 噪 。 采
在 实 际 的 图像 获取 过程 中 , 由于路 面情 况 比 较复杂 , 可能 存在 污迹 、 杂物干扰 , 采样量化 、 在 传 递时都 会带来 噪声 。针 对这些情 况 可采用维 纳滤 波进 行 图像 的 噪声 处理 , 纳滤 波 可实现 自适 应 维
去 噪 , 白 噪声 滤 波 效 果 较 好 。 对
f 验 结 果 表 叫 , 方 法 埘 复杂 的道 路 环 境 具 有 较 好 的 适应 性 。 j l = 此 关 键 词 智 能 乍辆 ; 觉 导 引 ; 缘 提 取 ; u h变 换 视 边 Ho g 中 图 法 分类 号 : 3 1 4 TP 9 . 1 文 献标 识 码 : A

广义hough变换原理

广义hough变换原理

广义hough变换原理广义Hough变换原理引言:广义Hough变换是一种在计算机视觉领域中常用的图像处理技术,用于检测图像中的特定形状或曲线。

它可以通过对图像中的像素进行分析和计算,从而在图像中检测出所需的特定形状。

广义Hough 变换的原理是基于数学的几何知识和图像处理算法,通过将图像中的特征点映射到参数空间中的曲线或直线上,从而实现对特定形状的检测和识别。

一、广义Hough变换的基本原理广义Hough变换是由Paul Hough于1962年提出的,最初用于检测图像中的直线。

后来,该方法被扩展到检测其他形状,如圆和椭圆。

广义Hough变换的基本原理可以概括为以下几个步骤:1. 边缘检测:首先对图像进行边缘检测,将图像中的目标物体的边缘提取出来。

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

2. 构建参数空间:将图像中的每个边缘点转换为参数空间中的曲线或直线。

对于直线检测,参数空间通常是由两个参数决定的,如极坐标系中的角度和距离。

对于圆和椭圆检测,参数空间则会更加复杂。

3. 累加计数:对于参数空间中的每个点,将与之对应的边缘点进行累加计数。

这样,参数空间中的每个点都会记录与之相关的边缘点的数量。

4. 特征检测:在参数空间中找到累加计数最高的点,这些点对应于图像中的特定形状。

通过设置阈值,可以筛选出符合要求的特征点。

二、广义Hough变换的应用领域广义Hough变换在计算机视觉领域有广泛的应用。

以下是几个常见的应用领域:1. 直线检测:广义Hough变换最早被用于检测图像中的直线。

通过对图像中的边缘进行检测和累加计数,可以得到图像中存在的直线的参数。

2. 圆检测:广义Hough变换也可以用于检测图像中的圆。

对于每个边缘点,可以通过计算其对应的圆心和半径,在参数空间中进行累加计数。

3. 椭圆检测:广义Hough变换还可以用于检测图像中的椭圆。

椭圆的参数空间比较复杂,需要对椭圆的参数进行适当的选择和限定。

采用Hough变换定位出虹膜内外边缘的圆心和半径

采用Hough变换定位出虹膜内外边缘的圆心和半径

采用Hough 变换定位出虹膜内外边缘的圆心和半径虹膜包含纹理的部分是内外两个近似圆形边界之间的部分,虹膜的内侧与瞳孔相邻,外侧与眼白相邻,这两个圆不是完全同心的,需要分别对内外两个边界进行处理。

目前国内外提出了不少的虹膜定位算法。

在此具体研究基于Hough 变换的虹膜定位算法。

1 分离瞳孔并估算出虹膜内半径仔细观察眼睛的图像(如图1所示)发现与眼睛的其它部分相比,瞳孔暗得多,所以可以采用二值化的方法分离出瞳孔,根据瞳孔图像的面积估算出虹膜的内半径。

二值化方法的关键在于阈值的选取,具体的做法是,先计算出整个图像的灰度直方图,它应该有两个主要的峰值,其中第一个峰值,对应的就是瞳孔区域灰度集中的范围,第二个峰值对应的是虹膜区域的灰度集中范围。

显然,提取瞳孔的二值化阈值应该选择在第一个峰值的右侧(如图2所示),图3是二值化后的结果,可以看出,瞳孔被成功的分离了出来。

对于提取出的瞳孔图像函数()j i p ,,选择适当的阈值b ,令()⎩⎨⎧=10,j i f ()()b j i p b j i p ><<,,0 求出瞳孔的面积为()()∑∈=Ij i j i f S ,, 估算出瞳孔的半径为 πSr =图1 原始数图像 图2 虹膜图像的灰度直方图图3 二值化方法定位瞳孔2 采用改进的Hough 变换算法定位出虹膜内外边缘(一)Hough 变换的原理Hough 变换的实质是将图像空间的具有一定关系的像元进行聚类,寻找能把这些像元用某一解析形式联系起来的参数空间累积对应点。

采用Hough 变换检测任意曲线的原理如下:假设()y x a a f a n n ,,,...,11-= (1)为需检测曲线的参数方程,式中n a a , ... ,1为形状参数,y x ,为空间域的图像点坐标,对于图像空间的任意点()00,y x ,利用(1)式可将其变换为参数空间()n a a ,...,1中的一条曲线。

基于Hough变换的道路边缘提取

基于Hough变换的道路边缘提取

基于Hough变换的道路边缘提取
乔洁;李京华;杨志荣
【期刊名称】《交通信息与安全》
【年(卷),期】2008(026)001
【摘要】在以图像处理技术为基础的视觉导引方式下,提出了一种基于Hough变换的道路边缘提取方法.将拍摄到的道路图像进行滤波预处理;利用自适应阈值分割法对处理后的图像进行分割,并采用数学形态学中的"腐蚀"运算检测边缘;利用Hough变换实现道路边缘的检测与定位.试验结果表明,此方法对复杂的道路环境具有较好的适应性.
【总页数】3页(P62-64)
【作者】乔洁;李京华;杨志荣
【作者单位】西北工业大学,西安,710072;西北工业大学,西安,710072;西北工业大学,西安,710072
【正文语种】中文
【中图分类】TP391.41
【相关文献】
1.基于能量场边缘提取和改进Hough变换的图像几何特征检测 [J], 姚英;许录平;方强
2.基于广义Hough变换的指纹图像边缘提取算法及实验研究 [J], 黎伟;商建东
3.一种基于3D激光雷达的实时道路边缘提取算法 [J], 李广敬;鲍泓;徐成
4.基于数学形态学与Hough变换的道路边缘提取 [J], 张凤珍;董增寿
5.基于改进Canny算法与Hough变换的轨道图像边缘提取 [J], 汤旻安;王晨雨因版权原因,仅展示原文概要,查看原文内容请购买。

指定区域hog特征提取

指定区域hog特征提取

指定区域hog特征提取HOG(Histogram of Oriented Gradients)特征提取是一种常用于计算机视觉和图像处理的特征提取方法。

它的原理是把图像划分成小的局部区域,并计算每个区域内的梯度方向直方图。

要在指定区域提取HOG特征,可以按照以下步骤进行:1. 定义感兴趣区域(Region of Interest,ROI),即指定要提取特征的区域。

2. 将ROI区域划分成小的细胞(cells),每个细胞内计算梯度方向直方图。

3. 组成块(blocks):将多个细胞组成一个块,块内的细胞特征进行归一化。

4. 在每个块内,将多个细胞的特征串联成一个特征向量。

5. 对整个ROI区域的特征向量进行归一化处理。

具体的实现可以使用OpenCV库来实现。

以下是一个示例代码:```pythonimport cv2def extract_hog_features(image, roi):# Convert image to grayscalegray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Crop ROI from the imagex, y, w, h = roiroi_gray = gray[y:y+h, x:x+w]# Resize ROI to a fixed size (optional) roi_gray = cv2.resize(roi_gray, (64, 128))# Create HOG descriptorhog = cv2.HOGDescriptor()# Compute HOG featuresfeatures = pute(roi_gray)return features.flatten()```上述代码中,`image`是原始图像,`roi`是感兴趣区域的坐标(x,y,宽度,高度)。

通过使用OpenCV的`cv2.HOGDescriptor`类,可以创建一个HOG描述符,并使用`compute`方法计算出指定ROI区域的HOG特征。

数字图像处理报告--图像分割,hough边缘检测直线

数字图像处理报告--图像分割,hough边缘检测直线

实验二、图像分割实验实验目标:掌握图像分割的主流算法。

实验内容:⑴实现边缘检测算法。

⑵实现用Hough变换检测直线的算法。

实验步骤:⑴读入图像。

(设图像中有直线)⑵检测图像边缘⑶实现Hough变换,检测出图像中的直线方程。

⑷输出结果。

实验结果及程序:1.检测图像边缘:①原理:图像边缘是图像最基本的特征,边缘在图像分析中起着重要作用。

所谓边缘是指图像局部特性的不连续性。

灰度或结构等信息的突变处为成为边缘。

边缘是一个区域的结束,也是另一个区域的开始,利用此特征可以分割图像。

边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。

图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。

经典的边缘检测方法是对原始图像中像素的某小邻域来构造检测算子。

拉普拉斯边缘检测算子是基于二阶导数的边缘检测算子,对噪声敏感。

拉普拉斯算子的改进方式是先对图像进行平滑处理,然后再应用二阶倒数的边缘检测算子,其代表是拉普拉斯高斯算子。

②图像边缘检测的程序:I=imread('d.bmp'); %读入原始图像I=rgb2gray(I); %将真彩色图像转化为灰度图像[m,n]=size(I); %确定图片的的长和宽r=m+2; %把图片的长和宽各加2c=n+2;b=zeros(r,c); %定义二维数组b,长、宽比I各多2,成为镜框的尺寸g=zeros(m,n); %定义滤波后的数组d=zeros(3); %定义三阶方阵d,为临时矩阵t=[-1 -1 -1;-1 8 -1;-1 -1 -1]; %定义拉普拉斯算子Result=zeros(3); %定义三阶方阵Result,为运算结果矩阵%原图像矩阵处理,做一个"像框"b(2:m+1,2:n+1)=I; %把原图的矩阵放到新的矩阵b中心,它的第一行、最后一行、第一列、最后一列都是0,即原图矩阵周围有一圈0的边缘,好像给图像加一个像框b(1,:)=b(2,:); %把第二行的值赋给第一行b(r,:)=b(r-1,:); %把倒数第二行的值赋给最后一行b(:,1)=b(:,2); %把第二列的值赋给第一列b(:,c)=b(:,c-1); %把倒数第二列的值赋给最后一列%用拉普拉斯算子进行滤波for i=1:mfor j=1:nd=b(i:i+2,j:j+2); %从b矩阵中依次取出三阶方阵,赋值给临时矩阵dResult=d.*t; %临时矩阵与拉普拉斯算子点乘,赋值给结果矩阵dg(i,j)=sum(sum(Result)); %结果矩阵中"十"字线上元素相加,赋值给输出矩阵中相应的位置,即临时矩阵中心元素所对应的位endendthresh=2.6*mean2(abs(g)); %设定阈值将图像二值化使边缘清晰J=repmat(logical(uint8(0)),m,n); %创建数组J(find(g>thresh))=1; %阈值判断二值化figure,subplot(2,2,1),imshow(I);title('原始图像');%显示原图像subplot(2,2,2),imshow(J); title('拉普拉斯边缘检测后的图像'); %显示拉普拉斯边缘检测后的图像subplot(2,2,3),imshow(g); title('将拉普拉斯边缘检测二值化后的图像')③图像经边缘检测后的MATLAB程序实现效果图如下:2.Hough变换检测直线:①原理:Hough变换用来在图象中查找直线,把直线上点的坐标变换到过点的直线的系数域,通过利用共线和直线相交的关系,使直线的提取问题转化为计数问题。

数字图像处理期末大作业

数字图像处理期末大作业

数字图像处理期末大作业一、问题描述实现第十章中采用Hough变换来检测图像中圆的过程。

,通过包括平滑(把细节去除),边缘检测(得到轮廓)以及Hough变换得到的圆,并把结果叠加到原来的灰度图像上。

给出具体的过程,中间结果,最后结果,实现的代码,并写出报告。

二、图片的获取以及预处理针对老师提供的一副硬币图片,要求检测出其中的hough圆,并叠加到原图像上以便增强图像。

在检测hough圆之前,首先要对图像进行平滑处理,进行拉普拉斯变换,然后检测垂直方向,水平方向,+45度和-45度方向的边缘,将四个方向的边缘叠加起来,得到总的边缘,对该图像进行二值化,然后对得到的图像检测其hough圆,得到圆形边缘,将该图像叠加到原图像上,就实现了图像边缘增强的目的。

三、图像处理算法的基本原理以及处理结果本实验流程图如下:1.读取图像图像处理的第一步就是对所采集的图像进行读入,本次实验的输入图像是一幅灰度图像,不需要将图像转换成为灰度图像,直接利用函数imread ()完成。

原图像如下所示:原图像2.图像预处理在图像预处理中,我们完成了两步工作,首先使用方差为1的高斯噪声对图像进行平滑,然后进行拉普拉斯变换,即)],(*)([2y x f r h ∇,222r 2e 21)(σσ-=πr h 为方差为2σ的高斯噪声,本实验中12=σ。

又),(*)]([)],(*)([22y x f r h y x f r h ∇=∇,其中2224222]2[)(σσσr er r h --=∇,将)(2r h ∇和),(y x f 分别进行傅里叶别换,将其逐点相乘,再进行傅里叶反变换,就得到了预处理后的图像。

3.边缘检测对水平,垂直,+45度,-45度方向进行边缘检测,本实验中我们采用了Prewitt 梯度算子,它用于检测水平方向,垂直方向,+45度方向和-45度方向的掩膜分别如下:水平掩膜 垂直掩膜 +45度掩膜 -45度掩膜使用这四个掩膜分别对上一步得到的图像逐点进行处理,就可以得到四个方向的边缘了(本实验中边缘的一个像素都不处理),再将它们加起来,就得到了总的边缘,实验结果如下:水平边缘垂直边缘-45度边缘总的边缘如下图所示:4.二值化对上图得到的图像进行二值化,这里我采用的是循环方式确定图像全局阈值,即首先以图像的平均值作为阈值,将图像分成两部分,分别求两部分的平均值,新的阈值为这两个平均值的均值,重复上述过程,直到两次阈值之差小于特定的值时停止,并以最后一次得到的阈值对图像进行二值化,本实验中我要求两次阈值之差小于0.5时停止,最后得到的全局阈值为 -102.1332,二值化后的图像如下所示:二值化后的图像5.Hough变换检测圆形边界Hough 变换的原理就是利用图像全局特征将边缘像素连接起来组成区域封闭边界,它将图像空间转换到参数空间,在参数空间对点进行描述,达到检测图像边缘的目的。

边缘检测与Hough变换实验报告Matlab

边缘检测与Hough变换实验报告Matlab

边缘检测与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变换后参数平面上的峰值点。

hough变换提取直线(Matlab实现)

hough变换提取直线(Matlab实现)

Hough变换提取直线一、实验目标实现用Hough变换检测直线的算法二、实验内容1、读入图像选取有较多直线及部分曲线以作对比的图像作为实验素材,这里我们必须使用彩色图像(有些看似灰度图像的实际属性也是彩色图像),原因下面有详解。

2、检测图像边缘如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级变化的带。

对这种变化最有用的两个特征是灰度的变化率和方向,他们分别用梯度向量的幅度和方向来表示。

边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,通常也包括方向的确定。

有若干种算子可以使用,大多数是基于方向导数掩模求卷积的方法。

如Roberts算子,Sobel算子,Prewitt算子,Log算子等。

这里采用Log算子提取图像边缘,再用均值滤波去除边缘图像噪声。

3、实现Houg变换,检测出图像中的直线Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的一种方法。

它通过将源图像上的点影射到用于累加的参数空间,实现对已知解析式曲线的识别。

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

因为处理过程中需使用灰度图像,但最后无法给灰度图像赋颜色(会出错或效果不好),只能给彩色图像赋颜色,故最初输入时请使用彩色图像。

4、Matlab代码如下:f=imread('3.png');%读入彩色图像,注意不能使用灰度图像o=f; %保留彩色原图f=rgb2gray(f);%将彩色图像转换为灰度图像,f=im2double(f);figure();subplot(2,2,1);imshow(o);title('原图');[m,n]=size(f);%得到图像矩阵行数m,列数nfor i=3:m-2for 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算子endendsubplot(2,2,2);imshow(l);title('LoG算子提取图像边缘');[m,n]=size(l);for i=2:m-1for j=2:n-1y(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变换提取直线作准备endendsubplot(2,2,3);imshow(y);title('均值滤波器处理后')q=im2uint8(y);[m,n]=size(q);for i=1:mfor j=1:nif q(i,j)>80; %设置二值化的阈值为80q(i,j)=255; %对图像进行二值化处理,使图像边缘更加突出清晰elseq(i,j)=0;endendendsubplot(2,2,4);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:mfor j=1:n%遍历图像每个点if(q(i,j)==255)%只检测图像边缘的白点,其余点不检测for k=1:ap = 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)相应的累加器单元加一 z{k,d+p}=[z{k,d+p},[i,j]'];%存储点坐标elseap=abs(p)+1;%若p小于0,则将点存储在(0,d)空间 s(k,ap)=s(k,ap)+1;%(a,p)相应的累加器单元加一z{k,ap}=[z{k,ap},[i,j]'];%存储点坐标endendendendendfor i=1:afor j=1:d*2 %检查每个累加器单元中存储数量if(s(i,j) >70) %将提取直线的阈值设为70lp=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分量=0o(lp(1,k),lp(2,k),2)=0;o(lp(1,k),lp(2,k),3)=0; %结果为在原图上对满足阈值要求的直线上的点赋红色endendendendfigure,imshow(o);title('hough变换提取直线');5、实验结果附:两个参数的调节1.二值化图像的细节多少可以通过对二值化的阈值调节来控制,阈值越大,细节越少。

数字图像处理课程设计——Hough变换提取直线

数字图像处理课程设计——Hough变换提取直线

摘要为能够有效解决实时直线图形提取问题,提出了一种基于Hough变换(HT)的直线提取算法。

该算法首先分析了数字图像中直线边缘的三种结构特征,提出采用基元结构表示目标边缘点,并在约束条件下计算基元结构的基元倾角。

在此基础上,结合传统的HT的思想对基元结构进行极角约束HT,以获得最终的直线参数。

最后,再用MATLAB软件对该算法进行编程仿真。

实验结果表明,对合成图像和自然图像,该算法能够有效的识别图像中的直线段。

关键词:直线提取;Hough变换;MATLAB;图像处理目录1.课程设计目的 (1)2.课程设计要求 (1)3.MATLAB软件介绍 (1)4.设计背景及基本原理 (2)4.1 Hough变换检测直线的基本原理 (3)4.2 Hough变换的几种基本算法 (4)4.3几种算法的比较与选择 (6)6. MATLAB程序设计与仿真 (7)6.1 MATLAB程序 (7)6.2运行结果与分析 (10)7.总结体会 (11)参考文献 (12)1.课程设计目的数字图像处理课程设计是电子信息工程专业实践教学的一个重要环节,通过本课程设计使学生运用所学知识进行图像处理的实际训练;是对所学知识的提高和综合应用。

通过综合设计,使得学生进一步理解数字图像处理的基本概念、基本原理和基本方法(如掌握图像增强算法、图像复原以及图像压缩方法等),扩展理论知识,培养学生的综合设计能力。

2.课程设计要求1、查阅资料,介绍系统中所设计的主要功能和原理方法;2、介绍各个功能的实现程序及结果;3、附各个功能的实现程序,在程序中做适当的注释,附处理前后效果图;4、测试和调试:按课程设计要求,选用多幅图像对程序进行测试,并提供系统的主要功能实现的效果图。

并在调试中发现的问题做说明;5、说明课程设计中学到的东西和取得的经验总结,心得体会。

3.MATLAB软件介绍MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

边缘检测算子的边缘提取及Hough变换

边缘检测算子的边缘提取及Hough变换

题目边缘检测算子的边缘提取及Hough变换学院:信息科学与技术学院专业:控制科学与工程学生:X X指导教师:XXX2014 年12月14日1、边缘检测算子简介图像边缘(或边沿)是指周围像素灰度有阶跃性变化或“屋顶”变化的那些像素的集合。

在图像处理中通过边缘算子能够较好的提取出数字图像的边缘,常用的边缘检测算子主要分为以下几类:一、基于一阶导数的边缘检测算子包括Roberts算子、Sobel算子、Prewitt算子、Kirsch算子等,在算法实现过程中,通过2x2(Roberts算子)或者3x3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。

二、基于二阶导数的边缘检测算子,该算子对噪声敏感。

一种是二阶微分的拉普拉斯边缘检测算子,另一种改进方式是先对图像进行平滑处理,然后再应用二阶导数的边缘检测算子,其代表是LOG算子。

前边介绍的边缘检测算子法是基于微分方法的,其依据是图像的边缘对应一阶导数的极大值点和二阶导数的过零点。

三、Canny边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。

2、不同边缘算子检测边缘分析本文基于Matlab编程实现不同边缘检测算子对一幅包含两个目标的图像进行边缘提取,原始图像如图2.1所示。

Roberts边缘检测算子是一种利用局部差分方法寻找边缘的算子,其采用的是对角方向相邻两像素值之差;Sobel边缘算子所采用的算法是先进行加权平均,然后进行微分运算;Prewitt边缘检测算子就是一种利用局部差分平均方法寻找边缘的算子,其先求平均,再求差分,即利用所谓的平均差分来求梯度;拉普拉斯边缘检测算子正是对二维函数进行二阶导数运算的标量算子;Canny边缘检测算子通过中心边缘点为算子与图像的卷积在边缘梯度方向上的区域中的最大值在梯度方向上判断此点强度是否为其领域的最大值来确定该点是否为边缘点。

图2.1 原始图像2.1 Roberts算子提取边缘图像图2.2 Roberts算子边缘检测图像2.2 Sobel算子提取边缘图像图2.3 Sobel算子边缘检测图像2.3 Prewitt算子提取边缘图像图2.4 Prewitt算子边缘检测图像2.4 Laplace算子提取边缘图像图2.5 Laplace算子边缘检测图像2.5 Log算子提取边缘图像图2.6 Log算子边缘检测图像2.6 Canny算子提取边缘图像图2.7 Canny算子边缘检测图像3、Hough变换的边缘提取Hough变换利用图像空间和参数空间的点-线对偶性,将图像空间中具有一定关系的像素点在参数空间中进行聚集,通过在参数空间进行简单的累加和统计,找出参数空间中累加器的峰值点,进而确定出图像空间中特定几何特征的相关参数。

  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变换提取边界直线');。

相关文档
最新文档