资源简介
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的MIMO通信系统仿真
- matlab混合高斯背景建模
- 系统辨识参数辨识matlab程序
- 解决MATLab2012b Symbolic_Toolbox License 许可
- 血管三维模型重建
- matlab 三维立体图生成器双眼视差
- 给予MATLAB的DSB调制解调代码
- camshift matlab 源代码
- Matlab求解微分方程(组)及偏微分方
- 神经元HH方程Matlab
- 基于最近邻算法的股票价格预测matl
- 信号检测贝叶斯
- matlab级联STATCOM仿真
- 扩展汉明码的硬判决+软判决+SPA算法译
- 指派问题matlab匈牙利算法
- 卷积码编码译码MATLAB仿真程序
- cao法确定相空间的维数
- matlab源码--散点数据生成格网、等高线
- graphcut用于图像分割的matlab代码
-
MATLAB excelli
nk - MATLAB R2017a 支持Microsoft Visual Studio 2
- 基于G.Rilling所写EMD的MATLAB代码的中文
- SVM线性、非线性可分matlab demo
- 布丰投针实验 MATLAB仿真 以及报告
- EZW_Matlab.rar
- matlab交流异步电动机软起动仿真
- 光流场计算 MATLAB 源码 optical flow
- 用matlab实现牛顿迭代法
- 闪耀光栅输出光强分布仿真
- Max-flow/min-cut工具箱Bk_matlab
评论
共有 条评论