matlab 图像处理之拟合圆

matlab 图像处理之拟合圆

一、 matlab代码

I=imread('tu.jpg');
[x_01,y_01,r_01]=calu_circle01(I,3,6,64,65);%圆心x,圆形y,半径r   

function [x,y,r,xc,yc]=calu_circle01(I,x_begin,y_begin,x_end,y_end)    %输入参数共五个(数组 ,图像在x方向上起始位置,图像在y 方向上起始位置,图像在x方向上终点位置,图像在y 方向上终点位置)
lb_x=[];
lb_y=[];
for i =x_begin:x_end
    for j =y_begin:y_end
        if I(i,j)==1
            lb_x=[lb_x,i];
            lb_y=[lb_y,j];
        end
    end
end
x=lb_x;
y=lb_y;

n=length(x);
xx=x.*x;
yy=y.*y;
xy=x.*y;
A=[sum(x) sum(y) n;sum(xy) sum(yy)...
sum(y);sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
a=A\B;  %%%%%对应圆的一般方程AX=B,求解系数a,b,c即a(1),a(2),a(3),近而得出圆心坐标与半径
xc = -0.5*a(1);
yc = -0.5*a(2);
R = sqrt((a(1)^2+a(2)^2)/4-a(3));

x=ceil(yc);%设定圆心X轴数值
y=ceil(xc);%设定圆心Y轴数值
r=ceil(R);%设定圆半径数值
end

二、 结果展示


  蓝色像元是拟合的边缘圆

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB中,可以使用图像处理工具箱中的函数来进行图像轮廓曲线拟合。一种常用的方法是使用多项式拟合或样条插值来逼近图像轮廓的曲线。 以下是一种基本的图像轮廓曲线拟合的步骤: 1. 读取图像并进行预处理:使用imread函数读取图像,并对图像进行预处理,例如灰度化、二值化等操作,以便得到二值图像。 2. 提取图像轮廓:使用边缘检测算法(如Canny边缘检测)或者轮廓提取算法(如findContours函数)来提取图像的轮廓。 3. 进行曲线拟合:对提取到的轮廓点集进行曲线拟合。可以使用polyfit函数进行多项式拟合,或者使用interp1函数进行样条插值。 4. 绘制拟合曲线:使用plot函数将拟合曲线绘制在原始图像上,以便观察拟合效果。 下面是一个简单的示例代码,演示了如何在MATLAB中进行图像轮廓曲线拟合: ```matlab % 读取图像并进行预处理 image = imread('image.jpg'); grayImage = rgb2gray(image); binaryImage = imbinarize(grayImage); % 提取图像轮廓 contour = bwboundaries(binaryImage); contour = contour{1}; % 假设只有一个轮廓 % 进行曲线拟合 p = polyfit(contour(:, 2), contour(:, 1), 3); % 三次多项式拟合 % 生成拟合曲线 x = min(contour(:, 2)):max(contour(:, 2)); y = polyval(p, x); % 绘制拟合曲线 imshow(image); hold on; plot(x, y, 'r', 'LineWidth', 2); hold off; % 相关问题: % 1. 什么是图像轮廓? % 2. MATLAB中如何读取图像? % 3. MATLAB中如何进行图像预处理? ``` 希望对你有帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小豆芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值