预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://blog.csdn.net/lionxiao/article/details/4944653"Hough变换直线检测MatLab代码 一. functionImg_hough=hough_s(Img,bw)%该函数实现hough变换提取直线的功能。%输入图像x,运行之后直接画出直线。%选择进行Hough变换的图像行%Img为原图像;bw为边缘图像%%[H,W,D]=size(Img);Img_hough=Img;ifD==1channel=Img_hough;Img_hough=cat(3,channel,channel,channel);end[M,N]=size(bw);%求出图像大小。%%dtheta=1;drho=1;md=ceil((N+round(sqrt(M^2+N^2)))/drho);%确定网格的最大区域。ma=ceil(180/dtheta);numrhotheta=zeros(md,ma);%产生计数矩阵。coordrhotheta=cell(1,1);%para=cell(1,3);ll数组相当于c语言中的指针,可动态的改变大小。fori=1:mdforj=1:macoordrhotheta{i,j}=[];endend%产生空网格。ymin=5;ymax=M-4;fori=ymin:ymaxforj=1:Nifbw(i,j)==1fork=1:marho=round((j*cos(dtheta*k*pi/180)+i*sin(dtheta*k*pi/180))/drho);%根据直线的法线式表示,计算出平面上不同点的hough变换值。rho=rho+ceil(N/drho);%可能的最大负值。numrhotheta(rho+1,k)=numrhotheta(rho+1,k)+1;%将hough变换值相应位置的计数值加1。coordrhotheta{rho+1,k}=[coordrhotheta{rho+1,k};[i,j]];%记录hough变换值相应位置对应的点的坐标。endendendend%%figure;imshow(Img);holdonnum=8;fori=1:num[y1,col1]=max(numrhotheta);[y2,col]=max(y1);row=col1(col);%求出hough变换值最大值的坐标。numrhotheta(row,col)=0;%为了避免重复计算,将计算过的点置0。rhood=1;chood=0;top=max(row-rhood,1);down=min(row+rhood,md);left=max(col-chood,1);right=min(col+chood,ma);numrhotheta(top:down,left:right)=0;%nds=coordrhotheta{row,col};nds=[];forr=top:downforc=left:rightnds=[nds;coordrhotheta{r,c}];endendImg_hough=draw(Img_hough,nds);endimwrite(mat2gray(numrhotheta),'numrhotheta.bmp') 二. RGB=imread('gantrycrane.png'); I=rgb2gray(RGB);%converttointensity BW=edge(I,'canny');%extractedges [H,T,R]=hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5);%displaytheoriginalimage subplot(2,1,1); imshow(RGB); title('gantrycrane.png'); %displaythehoughmatrix subplot(2,1,2); imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,...'InitialMagnification','fit'); title('Houghtransformofgantrycrane.png'); xlabel('\theta'),ylabel('\rho'); axison,axisnormal,holdon; colormap(hot); 三. I=imread('D:\MATLAB7\aaa.bmp');rotI=imrotate(I,33,'crop');BW=edge(rotI,'canny');[H,T,R]=hough(BW);imshow(H,[],'XData',T,'YD