
#include<stdio.h>
int main()
{
char s[2048], n[2048], tmp = '\0'
int i =0, j = 0
scanf("%s", s)
tmp = s[0]
n[0] = s[0]
for (i = 1, j=1 i < strlen(s) i++) {
if (tmp == s[i])
continue
n[j++] = s[i]
tmp = s[i]
}
printf("%s\n", n)
return 0
}用matlab图像处理确定激光光斑的中心的详细过程和算法
个不难的:
-
图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;
-
用以下这个程序拟合出离散点的圆,并找出圆心。
其中第一步的自动阀值可以用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))
参考资料:CCD是Charge Coupled Device的缩写,它使用一种高感光度的半导体材料制成,由许多感光单位
组成,通常以百万像素为单位。 当CCD表面受到光线照射时,每个感光单位会将电荷
反映在组件上,即把光线转变成电荷;所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。而后转换成数字信号,经过压缩后保存在相机内部的闪速存储器或内置硬盘卡中。
有能力生产CCD 的公司分别为:索尼、飞利浦、柯达、松下、富士、夏普,大半是日本厂商。


评论列表(0条)