资源简介
运用到边沿检测,霍夫变换等
代码片段和文件信息
sourcePic=imread(‘xcv-2.jpg‘);
sourcePic=rgb2gray(sourcePic);
sourcePic=im2double(sourcePic);
%使用水平和垂直Sobel算子自动选择阈值
edgePic=edge(sourcePic‘sobel‘‘horizontal‘);
figureimshow(edgePic)title(‘水平图像边缘检测‘); % 显示边缘探测图像
edgePic=edge(sourcePic‘sobel‘‘vertical‘);
figureimshow(edgePic)title(‘垂直图像边缘检测‘); % 显示边缘探测图像
edgePic=edge(sourcePic‘sobel‘);
[heightwidth]=size(edgePic);
%图像中直线的个数
LINE_COUNT = 100;
% Hough变换检测直线,g(x)=(ap)为边界点对应的平面
ma=180; %a的值为0到180度
mp=round(sqrt(height^2+width^2)); %对应P的最大值
npc=zeros(ma2*mp); %用于记录(ap)对应的点的个数
MAP=zeros(height width);
npp=cell(ma2*mp); %用于记录(ap)对应的点的坐标
for i=1:height %计算(ap)的值,并做相应记录
for j=1:width
if(edgePic(ij)==1)
for k=1:ma
p = round(i*cos(pi*k/180)+j*sin(pi*k/180));
npc(kmp+p)=npc(kmp+p)+1;
npp{kmp+p}=[npp{kmp+p}[ij]‘];
end
end
end
end
LNum = 0; %得到的直线的数目
LPC = zeros(LINE_COUNT6); %直线的参数集合 元素为 [Number][k][b][a][p][DP] 分别为直线的: 编号 斜率 截距 角度a 弦长p 是否为消失线
index = 1;
%提取直线的阀值
LT = 90;
for i=1:ma
for j=1:mp*2
if(npc(ij) > LT)
lk= -cot(pi*i/180);
lb= round((j - mp - 1)/sin(pi*i/180));
%保存直线的参数,顺序为 编号 (kb) (ap)
LNum = LNum + 1;
LPC(index1) = LNum;%存储直线的编号
LPC(index2) = lk;
LPC(index3) = lb;
LPC(index4) = i;
LPC(index5) = j;
index = index + 1;
lp=npp{ij};
for k=1:npc(ij)
MAP(lp(1k)lp(2k))=1;
end
end
end
end
figureimshow(MAP);title(‘检测出的直线图‘);
%求出总共有多少交点
InterCount = LNum*(LNum - 1)*0.5;
LInter = zeros(InterCount4); %直线的交点集合 元素为 两条相交直线的编号 ij 和 交点坐标 xy . 有 i < j
%元素个数为 n*(n - 1)/2
%下面的代码是求直线的交点
T =1;
LIC = 0; %直线交点的个数
for i = 1:LNum - 1
for j = i + 1:LNum
k1 = LPC(i2);
b1 = LPC(i3);
k2 = LPC(j2);
b2 = LPC(j3);
dp = k1 - k2; %得到两条直线斜率之差
if(abs(dp - 0) > 10e-03) %如果斜率之差太小,就可以认为这两条直线平行而没有交点。
LIC = LIC + 1; %直线交点个数加一
X = (b2 - b1)/(k1 - k2); % X = (b2 - b1)/(k1 - k2)
Y = k1 * X + b1; % Y = k1 * X + b1
LInter(LIC1) = i;
LInter(LIC2) = j;
LInter(LIC3) = round(X);
LInter(LIC4) = round(Y);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%以下的部分是求消失点和消失线的参数
%%%
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9092 2012-09-04 18:13 All.m
相关资源
- 边缘检测中的canny算法及其matlab实现
- 拉普拉斯边缘检测算子matlab源程序
- 基于空间分形特性差异的海杂波目标
- 人头检测matlab代码
- multisim相位差检测电路仿真
- matlab实现的区域增长和分水岭算法
- 道路识别
- 车辆检测跟踪
- 图像边缘检测
- fuzzy edge 图象模糊边缘检测
- 各种边缘检测程序
- 多类分类 目标检测
- log算法检测斑点
- 噪声环境下的信号检测算法
- 小波变换实现微弱信号检测
- matlab实现图像边缘检测、图像分割、
- 链码直线检测
- adaboost法人脸检测
- 视频监控阴影去除
- 红外弱小目标的检测与跟踪
- 帧间差分法检测运动目标
- 检测ECG信号的R波
- 车流量检测
- 织物疵点检测和识别
- DIP 包含二值化、canny算子边缘检测、
- hsv_file 本代码主要是基于HSV的阴影检
- 啤酒瓶缺陷检测程序
- 图像显著性检测算法
- 车辆的背景建模等
- CPHD的方法实现多目标跟踪
评论
共有 条评论