系统功能模块分析与实现
系统主要包括几大功能模块:图像分割模块、模板读取模块、图像识别模块。
图像分割模块
首先输入一幅图片,将RGB图像转为HIS格式,代码实现:HS_I=(myI(:,:,1)+myI(:,:,2)+myI(:,:,3))/3;如下:
再对其进行边缘检测,包括边缘点数量统计与 S分量的纹理分割:
BW= edge(HS_I,'canny',);%边缘检测,对边缘像素点作统计分析。
t2=toc
tic
ES=0;
for i=1:x
for j=1:y
if (BW(j,i)==1)
S(j,i)=1-min(myI(j,i,:))/HS_I(j,i);
SR=round(S(j,i)*100)/100;
ES=[ES SR];
end
end
end
CANNY算子处理后的图
BW1=zeros(y,x); % 根据上述的统计直方图设定 S 的阈值
for i=1:x
for j=1:y
if((BW(j,i)==1)&(S(j,i)<=)&(S(j,i)>=))
BW1(j,i)=1;
end
end
end
对X方向和Y方向进行边缘像素点数量统计,挑出边缘点数量大于平均值的位置,最后一列大于平均值的位置作为,最后一个区域的切分位置,下面是X方向的算法,Y方向的也类似,代码简要实现如下:
ColumnX=zeros(1,x);
for i=1:x
if (EdgePointsX(i)>=AveragePointsX)
ColumnX(i)=1;
end
end
Nx=sum(ColumnX);
Posx=zeros(1,Nx); % 挑出边缘点数量大于平均值的位置
k=1;
for i=1:x
if (EdgePointsX(i)>=AveragePointsX)
Posx(k)=i;
k=k+1;
end
end
gapx=12; % 间隔小于10列的,区域合并
Partx0=zeros(1,Nx);
Partx1=zeros(1,Nx);
k=1;
Partx0(1)=Po
图像处理—赵俊顶 来自淘豆网m.daumloan.com转载请标明出处.