matlab 霍夫变换(hough) 检测直线

摘要:
霍夫变换用于识别和查找对象中的特征,例如直线。他的算法流程大致如下:给定一个对象和要识别的形状类型,算法将在参数空间中投票以确定对象的形状,这由累积空间中的局部最大值确定。霍夫变换的基本原理是利用点和线的对偶性,将图像空间中的线变为参数空间中的聚集点,从而检测给定图像是否具有给定性质的曲线。

  霍夫变换是一种特征检测(feature extraction),被广泛应用在图像分析(image analysis)、电脑视觉 (computer vision)以及数位影像处理 (digital image processing)。 霍夫变换是用来辨别找出物件中的特征,例如:线条。他的算法流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状, 而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。  

  Hough变换的基本原理在于,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线。

clc;clear ; close 
set(0,'defaultfigurecolor',[1,1,1]) 
load DATA2.mat
data = D1;
BW = data;

figure(1)
imshow(BW)
title('原图像');
figure(2) subplot 211; %%进行霍夫变换 [H, theta , rho] = hough (BW); %%绘制霍夫空间 imshow(imadjust(mat2gray(H)),[],'XData',theta,'YData',rho,... 'InitialMagnification','fit'); xlabel(' heta (degrees)'), ylabel(' ho'); axis on, axis normal, hold on; colormap(hot); title('霍夫空间') %%峰值 P = houghpeaks(H,5,'threshold',0.5*max(H(:))); x = theta(P(:,2)); y = rho(P(:,1)); plot(x,y,'s','color','black'); %lines = houghlines(BW,theta,rho,P,'FillGap',10,'MinLength',10); lines = houghlines(BW,theta,rho,P,'FillGap',10,'MinLength',10); subplot 212 imshow(BW) ,hold on max_len = 0; count = 1; points = zeros(2,2); for k = 1:length(lines) points(count,1) = lines(k).point1(1); points(count,2) = lines(k).point1(2); count =count +1; points(count,1) = lines(k).point2(1); points(count,2) = lines(k).point2(2); count =count +1; xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % Plot beginnings and ends of lines plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); end title('直线检测');

  效果如下:

matlab 霍夫变换(hough) 检测直线第1张


matlab 霍夫变换(hough) 检测直线第2张

免责声明:文章转载自《matlab 霍夫变换(hough) 检测直线》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.动态配置log4j2.xml日志输出文件的位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

特别说明:由于大家在 I/O 存取上以 txt 文件为主,且读取比存储更麻烦(存储的话 fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。一. 基本知识:--------------------------------------------...

[转载]Matlab有用的小工具小技巧

原文地址:Matlab有用的小工具小技巧作者:felonwan 本文随时更新,欢迎转载,注明出处,谢谢合作。 本文内容基本上都经过笔者自身使用,结合经验及思考使用Matlab作图更为方便。记录下来,一是方便自己,二也为方便网友,欢迎多留言交流。 目录: 1.使图形窗口的默认text解释器为latex 2.图形窗口最大化 3.双坐标 4.计时...

matlab读取cvs文件的几种方法

matlab读取CVS文件的几种方法: 1,实用csvread()函数 csvread()函数有三种使用方法: 1、M = csvread('filename')2、M = csvread('filename', row, col)3、M = csvread('filename', row, col, range) 第一种方法中,直接输入文件名,将数据读...

Ubuntu下安装Matlab步骤

1. 下载matlab iso镜像文件(可以从verycd上下载,搜索matlab unix版可得到,我下的是2010a) 2. 打开终端,输入sudo mkdir /mnt/temp (建立临时文件夹存放装载后的iso文件);                    再输入 sudo mount -o loop /路径/Matlab.R2010a.UNIX...

MATLAB实例:PCA(主成成分分析)详解

MATLAB实例:PCA(主成成分分析)详解作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 主成成分分析   2. MATLAB解释 详细信息请看:Principal component analysis of raw data - mathworks [coeff,score,latent,t...

Python 的音乐库

前言 其实处理这个用 Matlab 最方便,之前把 guitar-synthesizer 从 Matlab 移植到 Python,过程中更是体会到了这一点。不过 Matlab 安装包又大,启动又慢,还是收费软件。。平常也不怎么用得到,毕竟我也不搞算法、仿真。 所以还是,Python 真香hhh 库 音乐的时域处理 标准库有个 wave 模块,可以转成 w...