资源简介
matlab图像质心提取,求取质心坐标
代码片段和文件信息
% _ANIU
% 本程序为静态参数测量系统m程序
% 分段调试用
%
%
% 本程序不调用子函数
% 2007年3月27日
tic % Stopwatch timer
clc
clear
I=imread(‘f:\guang.jpg‘); % 读入图像
I=rgb2gray(I); % 转换为灰度图像
[RowCol]=size(I); % 行数Row=576,列数Col=768
Row
Col
[pixel_numbergray_scale]=imhist(I255); % 获得图像直方图,gray_scale为灰度值,pixel_number为该灰度值上的总像素数
prob=pixel_number/(Row*Col); % 为灰度为某一值的概率
ave_gray=0; % 图像平均灰度初值为0
for i=1:255
ave_gray=ave_gray+i*prob(i); % 图像平均灰度
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% 以下几个值要在实际环境中最后确定
R0=350; % 光靶有效区域的最大半径,大于该值为需要灰度重建部分(需要先去掉的背景区域)
a=0.5*Row-10; % 圆心的初始位置
b=0.5*Col-25; % 这两个偏移值,在最终程序中要去掉
k0=1.0; % 去掉黑色区域的灰度调整因子(用于去掉黑边&背景区域)
k=0.75; % 分区域自适应双阈值分割因子
k1=0.9; % 全局自适应双阈值小因子(用于提取同心圆,配合4D)
k2=1.6; % 全局自适应双阈值大因子(用于提取激光的光斑)
D=10; % 十字丝宽度、圆宽度范围(用于提取两个直线标尺,圆的宽度)
% 经验值
% 5个同心圆的估计初值
r(1)=135;
r(2)=180;
r(3)=225;
r(4)=270;
r(5)=310;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
imshow(I);
title(‘原始图像‘);
% 图像预处理:中值滤波(为了加快速度可将这一步去掉,作用效果也不明显)
I2=medfilt2(I);
figure(2)
imshow(I2);
title(‘中值滤波‘);
I3=I2;
% 去掉采集图像时可能形成的黑边 (去掉多少由具体情况定,一般为3个象素一边)
I3(1:)=ave_gray*k0;
I3(Row:)=ave_gray*k0;
I3(:1)=ave_gray*k0;
I3(:Col)=ave_gray*k0;
%图像预处理:去掉黑色背景区域
for i=1:Row
for j=1:Col
% 去掉黑色背景区域
if((i-a)*(i-a)+(j-b)*(j-b))>R0*R0
I3(ij)=ave_gray*k0;
end
end
end
% 测试去掉黑色背景区域图像
figure(3)
imshow(I3);
title(‘去掉黑色区域‘);
%%% 圆拟合部分?????
N=5; % 本测试图像共有5个圆
point_number=zeros(1N); % 圆图像上点数统计值(数组用于记录点数)
ave_moment=zeros(N9); % 平均矩
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 全局阈值分割方法获得同心圆标尺图像(亮度相对小)、光斑图像(亮度相对大)
I4=I3; %%%%%%% 获取同心圆
I5=I3; %%%%%%% 获取激光的光斑
for i=1:Row
for j=1:Col
% 获得同心圆标尺图像时,必须
% 去掉两个直线标尺
if(I3(ij)4*D)&&(abs(j-b)>4*D) %%%大于4D去掉两个直线标尺
I4(ij)=I3(ij);
else
I4(ij)=255;
end
% % 验证半径初值
% l=(i-a)*(i-a)+(j-b)*(j-b);
% l=sqrt(l);
% if(abs(l-r(5))<0.1*D)
% I4(ij)=0;
% end
% 初次分割的光斑图像
if(I3(ij)>ave_gray*k2)
I5(ij)=I3(ij);
else
I5(ij)=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 同心圆图像分区域拟合的有关计算
if (I4(ij) L=(i-b)*(i-b)+(j-a)*(j-a);
L=sqrt(L); % 计算圆上一点到圆心初值的距离
x1=j; % 计算边沿xy坐标的各阶矩,共9个值
x2=j^2;
x3=j^3;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15075 2014-09-18 14:54 zhixin.m
评论
共有 条评论