资源简介
圆拟合matlab代码 可以确定圆心、半径
代码片段和文件信息
function canny
clear;clc
I = imread(‘16576.jpg‘);
C=rgb2gray(I);
se=strel(‘disk‘17);
K=imerode(Cse);
O=medfilt2(K[10 10]);
figure(5)
imshow(K)
BW = canny_edge(O10);
figure(7)
imshow(BW)
r=I(::1);
g=I(::2);
b=I(::3);
bw=imfill(BW‘hole‘);
%figure
%imshow(bw)
se=strel(‘disk‘4);
bw=bwmorph(bw‘spur‘);
bw=bwmorph(bw‘clean‘inf);
bw=imdilate(bwse);
bw=imfill(bw‘hole‘);
%figure(4)
%imshow(bw)
bw=imerode(bwse);
L=bwperim(bw4);
r(L)=0;
g(L)=255;
b(L)=0;
figure(3)
imshow(cat(3rgb));
hold on
[xy]=find(L==1);
D=[xy];
[xy]
k=sort(y);
m=size(x1);
n=size(y1);
temp=k(n-901);
j1=0;
for i=1:n
if(y(i1)>=temp)
D(i:)=0;
j1=j1+1;
n=n-1;
else
continue
end
end
x=D(:1);
y=D(:2);
x1=sum(x)/n;
x2=sum(x‘*x)/n;
x3=sum(x‘*diag(x*x‘))/n;
y1=sum(y)/n;
y2=sum(y‘*y)/n;
y3=sum(y‘*diag(y*y‘))/n;
xy=sum(x‘*y)/n;
xy1=sum(y‘*diag(x*x‘))/n;
xy2=sum(x‘*diag(y*y‘))/n;
h=y1*y1-y2;
i=x1*x1-x2;
j=x1*y1-xy;
u=x2*x1+x1*y2-x3-xy2;
v=y2*y1+y1*x2-y3-xy1;
w=i*h+j*j;
b=(u*h+v*j)/(2*w);
a=(v*i-u*j)/(2*w);
r=sqrt(b*b-2*x1*b+x2+a*a-2*y1*a+y2);
t=linspace(-pipi);
x=sin(t)‘*r+a;
y=cos(t)‘*r+b;
a
b
r
plot(xy‘w-‘);
plot(ab‘o-‘)
%axis on
%figure(2)
%imshow(BW)
% Canny边缘检测的函数
% Input:
% a: input image
% sigma: Gaussian的均方差
function e=canny_edge(asigma)
a = double(a); % 将图像像素数据转换为double类型
[mn] = size(a);
e = repmat(logical(uint8(0))mn); % 生成初始矩阵
OffGate = 0.0001;
%Perc = 0.7;
Th = 1.1;
pw = 1:30; % hardcoding. But it‘s large enough if sigma isn‘t too large
sig2 = sigma * sigma; % 方
相关资源
- 数字图像处理-圆拟合matlab代码
- 椭圆拟合matlab程序
- matlab圆心、半径检测
- 最小二乘椭圆拟合matlab
- 不等半径自主泊车路径规划方法的仿
- 最小半径自主泊车路径规划方法的仿
- Matlab三点求圆
- 用MATLAB画齿轮,只要给出基圆半径,
- 基于几何最短距离的椭圆拟合
- WSN仿真-MATLAB节点个数和节点通信半径
- 利用Matlab编写,记录二值化图像像素
- MATLAB 对离散点进行圆拟合
- 自动提取圆心
- ransac fitline and fitellipse 实现Ransac拟合
- 椭圆拟合matlab
- circle Matlab里面没有提供直接以半径和
- 椭圆拟合-EllipseDirectFit.m
- matlab圆心、半径检测如果换了图,只
- 圆拟合程序matlab
- matlab最小二乘法拟合椭圆Least-Squares
评论
共有 条评论