Steven Wang's Blog
C'est la vie
rss
email
twitter
新浪微博
  • Home
  • About
  • Google Profile
  • 新浪微博

在Matlab中实现Hough变换检测直线

8 Comments
Posted on 十月 23 2009

Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。

下面给出在matlab中用Hough变化检测直线的实现,文章末尾提供相关资源的下载。
其中先用log(laplacian of gaussian)算子检测图像边界:

sourcePic=imread('D: \matlab程序\Hough变换检测直线\curve.bmp');
[height,width,l]=size(sourcePic);
grayPic=zeros(height,width);
for i=1:height %转换成灰度图象
	for j=1:width
		grayPic(i,j)=(sourcePic(i,j,1)+sourcePic(i,j,2)+sourcePic(i,j,3))/3;
	end
end
logNum=0; %log算子的计算值
edgePic=zeros(height,width);
for i=3:height-2 %log算子提取边界
	for j=3:width-2
		logNum=16*grayPic(i,j)-grayPic(i-2,j)-grayPic(i-1,j-1)-2*grayPic(i-1,j)-grayPic(i-1,j+1)-grayPic(i,j-2)-2*grayPic(i,j-1)-2*grayPic(i,j+1)-grayPic(i,j+2)-grayPic(i+1,j-1)-2*grayPic(i+1,j)-grayPic(i+1,j+1)-grayPic(i+2,j);
		if(logNum > 0)
			edgePic(i,j)=255;
		else
			edgePic(i,j)=0;
		end
	end
end
% Hough变换检测直线,g(x)=(a,p)为边界点对应的平面
ma=180; %a的值为0到180度
mp=round(sqrt(height^2+width^2)); %对应P的最大值
npc=zeros(ma,2*mp); %用于记录(a,p)对应的点的个数
npp=cell(ma,2*mp); %用于记录(a,p)对应的点的坐标
for i=1:height %计算(a,p)的值,并做相应记录
	for j=1:width
		if(edgePic(i,j)==255)
			for k=1:ma
				p = round(i*cos(pi*k/180)+j*sin(pi*k/180));
				if(p > 0)
					%npc(k,mp*2)=npc(k,mp*2)+1;
					%npp{k,mp*2}=[npp{k,mp*2},[i,j]'];
					%2010.01.05修正
					npc(k,mp+p)=npc(k,mp+p)+1;
					npp{k,mp+p}=[npp{k,mp+p},[i,j]'];
				else
					ap=abs(p)+1;
					npc(k,ap)=npc(k,ap)+1;
					npp{k,ap}=[npp{k,ap},[i,j]'];
				end
			end
		end
	end
end
for i=1:ma %根据(a,p)对应的点的个数,用红色标出相应直线
	for j=1:mp*2
		if(npc(i,j) > 90) %将提取直线的阈值设为90
			lp=npp{i,j};
			for k=1:npc(i,j)
				sourcePic(lp(1,k),lp(2,k),1)=255;
				sourcePic(lp(1,k),lp(2,k),2)=0;
				sourcePic(lp(1,k),lp(2,k),3)=0;
			end
		end
	end
end
figure,imshow(sourcePic);

Resources & Reference:
1、图像处理技术—直线检测.pdf
2、数字图像处理与分析—用Hough变换检测直线(含matlab代码).doc
3、演示处理图片:curve.bmp
4、All Files

--End--
作者:Steven Wang | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://blog.stevenwang.name/hough-transform-Linear-matlab-3002.html

Relate Posts:

  • 在Matlab中实现RGB颜色空间转换为Lab颜色空间
  • Matlab7.1读xvid编码的avi视频文件
  • 在Matlab中实现图像直方图均衡化
  • 在Matlab中使用Roberts算子进行边缘检测

Tags: matlab  Hough变换  直线检测  log算子 
Categories: 数字图像处理 

8 Comments

  1. leezhenchong says:
    十月 23 2009 at 15:07 Reply

    SOFT

  2. wistertan says:
    一月 5 2010 at 14:25 Reply

    有点疑惑,第32和35行的代码,是不是因为p可能是负数,而在matlab中坐标不能为负,所以将正数*2,负数取绝对值。但这样有一个问题,比如p=-10,和p=5,都能使npc(k,10)+1,而小弟认为这样累加是错误的

  3. Steven Wang says:
    一月 5 2010 at 17:51 Reply

    @wistertan:确实存在你描述的问题,现已对代码进行了修改。非常感谢!

  4. lz says:
    四月 22 2010 at 13:00 Reply

    您的附件 代码不给了?还是文章中的代码就是全部代码?

  5. wangwei says:
    三月 10 2010 at 14:45 Reply

    hao

  6. liuyong says:
    七月 10 2010 at 21:13 Reply

    Thank you very much!

  7. sdaulj says:
    十月 28 2010 at 21:39 Reply

    你好,想请教几个关于图像处理的问题,方便的话发给我发个邮件!我的邮箱sdaulj@163.com。先谢谢了

  8. shannon says:
    八月 19 2011 at 11:25 Reply

    请问可以给发一下你改进之后的代码吗 ?谢谢了 guangjin.gis@gmail.com 不胜感激 QQ:112228711 要是方便可否加我 想你请教探讨

Leave a Reply



About Me

    Steven Wang
    Student in Computer Software and Theory
    Life@Wuxi, Jiangsu
    Study@Jiangnan University
    more...

Feeds

  • Entries (RSS)
  • Comments (RSS)
  • 订阅到 Google Reader
  • 订阅到 抓虾
  • 订阅到 鲜果
  • 订阅到 QQ

Popular Posts

  • 围着脖子推GTalk机器人V1.0发布(26629)
  • 通过SSH + Chrome + Proxy Switchy!代理上网(19479)
  • 在GAE上部署Micolog博客系统(11098)
  • 围着脖子推V2.0 Beta1版发布 支持Twitter,新浪微博,人人网,嘀咕,做啥 同步更新(10660)
  • 围着脖子推GTalk机器人V1.0更新-增加接收Twitter更新等功能(10464)
  • 围着脖子推更新-增加同步更新网易微博、腾讯微博和搜狐微博(10092)
  • 在Matlab中实现Hough变换检测直线(8248)
  • Micolog主题(theme) —— translucence(7417)

Recent Posts

  • Steven Wang's 2011
  • 工作
  • T400升级Intel SSD
  • Java中的时区转换小结
  • 二值图像连通区标记之区域生长法
  • Steven Wang's 2010
  • 微博提醒应用上线
  • 双喜临门

Recent Comments

  • zhoudi:惊诧了,看来你应该和我是同门师兄弟。。。...
  • zhoudi:哇,校友。Wang Shitong的研究...
  • xiaozhang:第37这一行:int jMax = mi...
  • 小张:这一行:int jMax = min(w...
  • 小张:为什么运行出错呢...

Categories

  • Google App Engine(10)
  • 数字图像处理(11)
  • Micolog(7)
  • VPS(6)
  • 围着脖子推(15)
  • 人工神经网络(5)
  • 算法(11)
  • MyLife(16)
  • 媒体检索(4)
  • Others(8)
  • Python(2)

Archives

  • January 2012(1)
  • December 2011(2)
  • May 2011(1)
  • February 2011(1)
  • December 2010(3)
  • November 2010(1)
  • October 2010(1)
  • September 2010(4)
  • August 2010(2)
  • July 2010(5)
  • June 2010(4)
  • May 2010(7)

Blog roll

  • ~Issue
  • Fenng
  • 刘未鹏 | Mind Hacks
  • Grace Hopper
  • 林海听松
  • Yu Zheng
  • Johnny Han
  • xiang_闹闹
  • 静静的安静
  • Herei
  • Dbger
  • land of promise
  • 小龙的SEO学习之路
  • 星星
  • ISHENS|TECH
  • 天天软件园
  • joyone
  • leezhenchong's notes

  • Home
  • About
  • Google Profile
  • Twitter
  • 新浪微博
  • Login
Powered by Google App Engine  |   Designed by WebTreats  |   由 xuming 提供 Micolog程序