资源简介
Matlab检测消失点源代码,并且可以实现深度图填充
代码片段和文件信息
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%以下的部分是求消失点和消失线的参数
%%%
- 上一篇:matlab混合高斯背景建模
- 下一篇:基于MATLAB的MIMO通信系统仿真
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论