个不难的:
-
图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;
-
用以下这个程序拟合出离散点的圆,并找出圆心。
其中第一步的自动阀值可以用otsu函数(otsu
method,大津法),其余都很基础;第二步的程序如果看不懂,可以进一步看看参考资料连接。
function
[xc,yc,R,a]
=
circfit(x,y)
%
%
[xc
yx
R]
=
circfit(x,y)
%
%
fits
a
circle
in
x,y
plane
in
a
more
accurate
%
(less
prone
to
ill
condition
)
%
procedure
than
circfit2
but
using
more
memory
%
x,y
are
column
vector
where
(x(i),y(i))
is
a
measured
point
%
%
result
is
center
point
(yc,xc)
and
radius
R
%
an
optional
output
is
the
vector
of
coeficient
a
%
describing
the
circle's
equation
%
%
x^2+y^2+a(1)*x+a(2)*y+a(3)=0
%
%
By:
Izhak
bucher
25/oct
/1991,
x=x(:)
y=y(:)
a=[x
y
ones(size(x))]\[-(x.^2+y.^2)]
xc
=
-.5*a(1)
yc
=
-.5*a(2)
R
=
sqrt((a(1)^2+a(2)^2)/4-a(3))
参考资料:
黑白的不是本来就是光强了么?还是我没理解你的问题?随便说点可能有用的吧。
matlab直接读进来貌似默认三通道rgb图,可以用rgb2gray转灰度图,然后im2double函数转数值矩阵,之后就可以进行常规的矩阵运算了。矩阵中的每一个数据就是该像素的亮度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)