Matlab 对图片中的圆进行拟合求取其方程

Matlab 对图片中的圆进行拟合求取其方程

代码如下:

close all;
clear; clc;
n = 10; %设置需要拟合的点数
pic=imread('E:/cup.jpg');

I=imshow(pic);

loc_points=zeros(n,2);
x = zeros(1,10);
y = zeros(1,10);

for i=1:1:n  
hold on;  
[x(i), y(i)]=ginput(1);
hold on;
plot(x(i),y(i),'r.')%将点在其中标记出来
loc_points(i,1) = x(i);
loc_points(i,2) = y(i);
str=['  X:' num2str(x(i)') ', Y:' num2str(y(i)')];
text(x(i),y(i),cellstr(str))
end
% 定义圆的参数方程
fun = @(param, x) (x-param(1)).^2 + (y-param(2)).^2 - param(3).^2;

% 初始猜测值(圆心和半径)
initial_guess = [3, 4, 2];

% 进行拟合
param_fit = lsqcurvefit(fun, initial_guess, x, y);
param_fit %显示拟合圆的参数
% 生成拟合圆上的点
theta = linspace(0, 2*pi, 100);
x_fit = param_fit(1) + param_fit(3)*cos(theta);
y_fit = param_fit(2) + param_fit(3)*sin(theta);
% 画出原始散点
scatter(x, y, 'b');
hold on;
% 画出拟合圆
plot(x_fit, y_fit, 'r');
xlabel('X');
ylabel('Y');
legend('原始数据', '拟合圆');

示例结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值