matlab已知斜率画直线,MATLAB 霍夫变换 连接斜率相同的直线
基于matlab的霍夫变换的应用,传统的霍夫变换可以检测图像中的直线,但是生活中一般都会出现遮挡物,导致一条直线发生中断,于是在传统霍夫变换的基础上做了修改,进而保证了检测直线的整体性。
matlab 代码实现如下:
% 入口图像为 BW,出口图像为f
%optimize from main_optimize, merely select 2 lines, one has positive
%slope,the other has negative slope
clear all,close all
BW=imread('p.jpg');
figure,imshow(BW);
BW=rgb2gray(BW);
%thresh=[0.01,0.17];
thresh=[0.01,0.10];
sigma=2;%定义高斯参数
f = edge(double(BW),'canny',thresh,sigma);
figure,subplot(121);
imshow(f,[]);
title('canny Edge Detect Result');
[H, theta, rho]= hough(f);
peaks=houghpeaks(H,10);
hold on
lines=houghlines(f,theta,rho,peaks);
subplot(122);
imshow(f,[]),title('Hough Transform Detect Result'),hold on
nlind=0;%new line index
st=1;
%%%%%%%%%求斜率%%%%%%%%%%%%
for k=1:length(lines)
%xy=[lines(k).point1;lines(k).point2];
xielv(k)=(lines(k).point2(1)-lines(k).point1(1))/(lines(k).point2(2)-lines(k).point1(2)+0.0001)
end
%%%%%%%%%将相同斜率的直线连起来%%%%%%%%%%%%
k=1;
while(k<=length(lines))
if(k~=length(lines))
k=k+1;
end
while(abs(xielv(k)-xielv(k-1))<0.0001)
k=k+1;
if(k>length(lines))
break;
end
end
if(abs(xielv(k-1))<0.05||abs(xielv(k-1))>=10)%eliminate horizontal and vertical lines
st=k;
if(k~=length(lines))
continue;
end
end
if(st==length(lines)&&k==st)
if(abs(xielv(k))>0.05&&abs(xielv(k))<10)
nlind=nlind+1;
newlines(nlind)=lines(st);
newlines(nlind).point2=lines(k).point2;
newxy=[newlines(nlind).point1;newlines(nlind).point2];
plot(newxy(:,2),newxy(:,1),'LineWidth',4,'Color',[.6 1.0 .8]);
end
break;
end
%end=k-1,start=st;
draw line
nlind=nlind+1;
newlines(nlind)=lines(st);
newlines(nlind).point2=lines(k-1).point2;
newxy=[newlines(nlind).point1;newlines(nlind).point2];
plot(newxy(:,2),newxy(:,1),'LineWidth',4,'Color',[.6 1.0 .8]);
st=k;
end
fprintf('%d lines are detected in sum.\n',nlind);
matlab已知斜率画直线,MATLAB 霍夫变换 连接斜率相同的直线相关推荐
- 已知函数和y值求自变量用matlab,matlab已知函数值求自变量,求助
思路是这样的:你得到最小的函数值后,把它带入你作图的方程反解自变量的值.我不知道你画的这个函数图像的方程什么,我用一个二次方程y=x.^2+x给你做示范:先做图:x=-10:0.1:10;y=x.^2 ...
- matlab已知圆心和半径怎么作圆,MATLAB中已知圆心和半径画圆
今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量 ...
- matlab已知函数表达式画函数图像,怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的……...
点击查看怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的--具体信息 答:要具体哦,如果一个自变量,函数图像就是曲线,用plot 如果是2个自变量,函数图像就是曲面了,如f=3*exp ...
- matlab已知圆心和半径怎么作圆,matlab根据圆心和半径画圆三种方式
% 已知圆心和半径画圆:参考:https://blog.csdn.net/ZLK961543260/article/details/70216089 % 对比三种画圆方法,运算时长对比如下 % vis ...
- matlab已知xyz拟合标定map,matlab练习题
<matlab练习题>由会员分享,可在线阅读,更多相关<matlab练习题(16页珍藏版)>请在人人文库网上搜索. 1.1. 在命令窗口输入语句:a=1,2,3;4,5,6;7 ...
- matlab已知三点求夹角,已知3点如何求其中两点对第3点的夹角
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:已知3点如何求其中两点对第3点的夹角? 问题详情:有3个问题:1)已知3点如何求其中两点对第3点的夹角?2)如何回答:1)已知3点求 ...
- MATLAB已知坐标均匀取电,基于MATLAB带钢卷取电液伺服控制系统的分析(word文档良心出品)(11页)-原创力文档...
系统动力学结课作业-基于MATLAB的 带钢卷取电液控制系统的研究 姓名: 王紫民 流水号:学号: 专业: 机械工程 日期: 2014.05.10 基于MATLAB^钢卷取电液伺服控制系统的分析 一. ...
- 已知协方差矩阵求相关矩阵matlab,已知协方差矩阵求相关矩阵
matlab中已知协方差矩阵怎样算相关系数? 已知协方差矩阵,计算相关系数可以按图中的公式进行. R就是相关系数矩阵,C为协方差矩阵. >> a=rand(5,5) a = 0.9501 ...
- matlab已知随机变量分布律求期望/已知概率密度求期望与方差
本博文源于matlab基础,主要讲述已知随机变量分布律求期望还有已知随机变量的概率密度求期望与方差. 例子:设随机变量X的分布律如下表所示: X 10 30 50 70 90 Pk 1/2 1/3 1 ...
- matlab已知飞机下轮廓线,数学建模matlab插值及拟合.ppt
数学建模matlab插值及拟合 2013数学建模培训 插值与拟合 插值与拟合属数值分析中函数逼近内容.在数学建模竞赛中,插值与拟合是一种常用的数据分析手段,被公认为建模中的十大算法之一. 本节首先通过 ...
最新文章
- R语言构建仿真列联表并进行卡方检验(chisq.test):检验两个分类变量是否独立、输出期望的列联表
- cli3暴露api地址 vue_手把手教你开发 Vue 组件库
- flutter利用高德如何获取地理位置信息bug处理
- Java集合框架之ArrayList类
- oracle 试图访问已经在使用的事物处理临时表,解决ORA-14450:试图访问已经在使用的事务处理临时表-Oracle...
- c# 删除文件,清理删除文件
- Java的历史和学习Java需要准备的工具
- java js 加密解密算法_JS自己实现字符串加密和解密算法
- Cipher文件加密
- 软件测试(白盒测试入门之gtest测试)
- 宏碁电脑BIOS没有usb启动项怎么办?
- 使用JAVA编程实现多人聊天室(多线程实践)
- xftp显示隐藏的文件夹及传输文件发生错误问题
- PHP修改后缀名绕过
- 一个基于PyTorch实现的Glove词向量的实例
- 树莓派cups搭建无线打印机(HP Laserjet 1020)
- iOS 开发中的 Flux 架构模式
- 用最少的代码渲染3D模型
- Eclipse IDE for Java EE Developers 下载地址
- vhr部门管理数据库设计与编程