MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?

对于你给出的图片,我根据之前提到的思路编写了以下程序。感觉还蛮准的。这个程序只能用于两圆相交的情况。当小圆在大圆内部时,需要在其中加以判定。仅供参考。

clear;clc

c = imread('1.jpg');

cc = c;

tic

[m n] = size(c);

for i=1:m

index = find(~c(i,:));

if length(index) > 2

c(i,index(1)+1:index(end)-1)= true;

end

end

[x y] = find(~c);

maxdist = 0;

for i=1:length(x)

for j=i+1:length(x)

tmpdist = (x(i)-x(j))^2+(y(i)-y(j))^2;

if tmpdist > maxdist

maxdist = tmpdist;

pair = [i j];

end

end

end

x1 = x(pair(1));y1 = y(pair(1));

x2 = x(pair(2));y2 = y(pair(2));

dist = (y2-y1)*(x-x1)-(x2-x1)*(y-y1);

index = find(dist == max(dist));

x3 = x(index(1));y3=y(index(1));

index = find(dist == min(dist));

x4 = x(index(1));y4=y(index(1));

dist1 = (x3-x1)^2+(y3-y1)^2+(x4-x1)^2+(y4-y1)^2;

dist2 = (x3-x2)^2+(y3-y2)^2+(x4-x2)^2+(y4-y2)^2;

if dist2 < dist1

tmpx = x2; tmpy = y2;

x2 = x1; y2 = y1;

x1 = tmpx; y1 = tmpy;

end

centerx1 = ((y3-y1)*(x4^2+y4^2-x1^2-y1^2)-(y4-y1)*(x3^2+y3^2-x1^2-y1^2))/((y3-y1)*(x4-x1)-(y4-y1)*(x3-x1))/2;

centery1 = ((x3-x1)*(x4^2+y4^2-x1^2-y1^2)-(x4-x1)*(x3^2+y3^2-x1^2-y1^2))/((x3-x1)*(y4-y1)-(x4-x1)*(y3-y1))/2;

r1 = sqrt((x1-centerx1)^2+(y1-centery1)^2);

dist = (x-centerx1).^2+(y-centery1).^2;

index = find(dist < (r1+3)^2);

x(index)=[];

y(index)=[];

dist = (y2-y1)*(x-x1)-(x2-x1)*(y-y1);

index = find(dist == max(dist));

x5 = x(index(1));y5=y(index(1));

index = find(dist == min(dist));

x6 = x(index(1));y6=y(index(1));

centerx2 = ((y5-y2)*(x6^2+y6^2-x2^2-y2^2)-(y6-y2)*(x5^2+y5^2-x2^2-y2^2))/((y5-y2)*(x6-x2)-(y6-y2)*(x5-x2))/2;

centery2 = ((x5-x2)*(x6^2+y6^2-x2^2-y2^2)-(x6-x2)*(x5^2+y5^2-x2^2-y2^2))/((x5-x2)*(y6-y2)-(x6-x2)*(y5-y2))/2;

r2 = sqrt((x2-centerx2)^2+(y2-centery2)^2);

toc

imshow(cc);

hold on;

plot(centery1,centerx1,'r+');

plot(centery1+r1*cos(pi*(0:100)/50),centerx1+r1*sin(pi*(0:100)/50),'b-')

plot(centery2,centerx2,'r+');

plot(centery2+r2*cos(pi*(0:100)/50),centerx2+r2*sin(pi*(0:100)/50),'b-')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php-fpm 启动拥有者,php-fpm 的各种启动方式

启动 php-fpm 最简单的操作&#xff1a;/usr/local/php/sbin/php-fpmphp 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令&#xff0c;所以不要再看这种老掉牙的命令了&#xff0c;需要使用信号控制&#xff1a;maste…

java比较时间的先后utc时间,日期、时间与UTC

传统日期的局限人类在对时间的测定上存在一个进化的过程&#xff0c;最早通过观察天体的自转与公转来确定时间&#xff0c;比如地球自转一周为一天&#xff0c;月球公转一周为一月&#xff0c;地球公转一周为一年。我们先考虑天和年&#xff0c;他们之间就像数学一样存在一个粗…

php主题怎么增加导航页,教你如何给wordpress主题添加导航栏

烈火建站学院转载 不是所有的wordpress主题都自带导航栏的&#xff0c;我早就想自行添加一个。昨天的标题前有“GOOGLE是个好老师”这个句子&#xff0c;今早赶紧删了&#xff0c;倒不是不认同&#xff0c;而是觉得在添加导航栏这个事情上还真不是那么回事情。以前我就说过&…

python 画线条进行到指定区域更改颜色,使用Colormaps在matplotlib中设置线条的颜色...

线条样式&#xff0c;标记和定性颜色的组合&#xff0c;来自matplotlib&#xff1a;import itertoolsimport matplotlib as mplimport matplotlib.pyplot as pltN 8*410l_styles [-,--,-.,:]m_styles [,.,o,^,*]colormap mpl.cm.Dark2.colors # Qualitative colormapfor …

asp php 用户登录,一个简单的asp.net 单点登录实现

以下是实现的效果图&#xff1a;首先上图的点击火车订票链接&#xff0c;就会打开http://学生信息平台网站/LoginToTrainSite.asa页面。LoginToTrainSite.asa页面的大致代码如下&#xff1a;Response.Buffer TrueResponse.ExpiresAbsolute Now() - 1Response.Expires 0Respo…

ajax怎么发送数据给php,ajax怎么发送数据给php

在网上看了很久&#xff0c;发现数据的利用ajax提交数据到后台其实很简单&#xff0c;但是很多讲解的并不清楚&#xff0c;对于初学者来说&#xff0c;很多真的是看着有点糊涂&#xff0c;拿来直接用&#xff0c;又想去了解怎么回事&#xff0c;其实利用ajax提交数据到后台是非…

oracle10无法安装打开,64位win10添加oracle odbc驱动时提示无法加载oracle怎么办

对于win10 64位系统添加oracle odbc驱动时提示无法加载oracle的问题相信部分用户都应该有所了解了&#xff0c;但是对于如何解决这个问题的实际操作的用户来说可能不多&#xff0c;因此&#xff0c;为了帮助出现这种问题的用户&#xff0c;小编在这里就来教大家64位win10添加or…

Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018

Oracle 11gR2 RAC安装Clusterware结束&#xff0c; 在第二个节点执行root.sh脚本的是报如下错误&#xff1a;DiskGroup DATA1 creation failed with the following message:ORA-15018: diskgroup cannot be createdORA-15072: command requires at least 1 regular failure gro…

oracle kepserve,Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试

【实例简介】Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试3.開魯 KEPServereX的管理視窗請從「開始」->「所有程式」->「 Kcpwarc」->「 KEPScrvcrEX5」->「 KEPScrvcrEX5Configuration I來動或在電腦桌面右下方的 System Tray圖示画( KE…

oracle 批量导出sequence,如何单独导出导入sequence?

可以用工具导出或者自己写个procedure直接把sequence的sql 存到1个文件中&#xff0c;然后执行文件即可procedure dump_all_sequences isl_file_handle UTL_FILE.file_type;beginl_file_handle : UTL_FILE.fopen(PLSQL_OUTPUT,all_sequences.sql,W,32000);for c in (select seq…

linux命令fdisk,Linux fdisk 命令使用详解

一、fdisk 的介绍fdisk - Partition table manipulator for Linux &#xff0c;译成中文的意思是磁盘分区表操作工具;本人译的不太好&#xff0c;也没有看中文文档;其实就是分区工具fdsik 能划分磁盘成为若干个区&#xff0c;同时也能为每个分区指定分区的文件系统&#xff0c;…

linux获取文件的md5,linux shell 获取文件md5的命令linux操作系统 -电脑资料

下面我给各位朋友总结一下在linux中利用shell命令来获取文件md5及遍历目录下所有文件的md5的例子&#xff0c;希望此例子对各位同学会有所帮助&#xff0c;获取文件的MD5值&#xff1a;$ md5sum linuxmint-12-gnome-dvd-32bit.iso|cut -d -f1得到的MD5值&#xff1a;ee3d6e2c…

Linux用户登录自动拷贝文件,linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录...

原文出处&#xff1a; http://blog.csdn.net/five3/article/details/8648484最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上&#xff0c;本来以为查查rsync命令的使用321就能搞定&#xff0c;结果rsync命令要支持自动登录还是要配置服务和参数&#xff0c;又不确…

linux postgresql默认安装目录,postgresql - 三种安装方式(示例代码)

最近接触了postgresql的安装&#xff0c;和大家分享一下。一、简 介PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS)&#xff0c;也是目前功能最强大&#xff0c;特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(…

linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...

Ubuntu无线网卡驱动安装方法安装了Ubuntu后发现没有无线网络&#xff0c;搜索不到WiFi&#xff0c;但是正常情况下安装Ubuntu后&#xff0c;系统会自动安装无线网卡驱动&#xff0c;并且开机自动连接无线网。查了一下&#xff0c;原来我的网卡是非主流网卡&#xff0c;Ubuntu不…

linux消息总线日志,linux – 解密继续mpt2sas系统日志消息

摘要我在syslog中收到这些神秘的消息,因为我安装了一些新的硬件,我无法弄清楚问题是什么,如果它是严重的,或者该怎么做.它们来自新的SATA HBA,它们遵循一种模式.我会得到几条第一条消息,然后是5-30秒之后的第二条消息.它们都是以相同的秒数记录的blob,每个的确切数量在大约2到3…

linux中央服务器,如何在Linux上搭建一个Git中央仓库

前言&#xff1a;本教程只面向那些个人开发者&#xff0c;想要自己在linux上搭建一个git中央仓库用来上传发布自己的项目。但是对于团队来说可能有更高的要求&#xff0c;可以使用gitlab搭建一个可视化的类似github的版本管理系统测试环境我使用的linux版本是Centos7&#xff0…

linux桌面发展方向,观点|Linux 桌面的发展之路!

Ken Starks 在 fossforce.com 网站上问 你们是如何优化 Linux 的&#xff1f;&#xff0c;我很高兴他问了这个问题&#xff0c;因为我有话要说&#xff01;对我来说&#xff0c;Linux 桌面就是一连串的承诺&#xff0c;但是这些承诺却总是无法兑现。它在每个版本发布后都会说“…

arm linux 脚本 排序,arm-linux连接以及连接脚本

前言&#xff1a;arm linux的连接工具可以使用arm-linux-ld&#xff0c;在进行连接时可以使用-T命令采用脚本控制&#xff0c;如不指明脚本&#xff0c;则使用默认的脚本文件&#xff0c;参见arm-linux-ld的缺省linker script。一.目标文件格式与类型本文引用地址&#xff1a;h…

linux常见基础服务,常用的linux命令的基本使用(一)

序号命令对应英文作用01lslist查看当前文件夹下的内容02pwdprint name of of current/working directory查看当前所在文件夹03cd[目录名]change directory切换文件夹04touch[目录名]touch如果文件不存在&#xff0c;新建文件05mkdir[目录名]make directory创建目录06rm[文件名]…