第一天
本文采用的是NIblack算法对图像进行分割.该算法的原理如下:
;I变换为Niblack三值图像
;
其中和分别表示像素点(x,y,)邻域内的灰度值和灰度标准差,W为邻域尺度,当邻域尺度为40*40时,取得最佳的效果,k常取0.185.
Niblack的程序如下:
I = imread(‘E:\mmtlable\tutu.png‘);
I = rgb2gray(I); %将彩色图像转化为灰度图像 若去掉则表示彩色图形的图像分割
w = 2;%
max = 0;
min = 0;
[m,n] = size(I);
T = zeros(m ,n );
for i = (w + 1):(m - w)
for j = (w + 1):(n - w)
sum = 0;
for k = -w:w
for l = -w:w
sum = sum + uint32(I(i + k,j + l));
end
end
average = double(sum) /((2*w+1)*(2*w+1));
s = 0;
for k = -w:w
for l = -w:w
s = s + (uint32(I(i + k,j + l)) - average)*(uint32(I(i + k,j + l)) - average);
end
end
s= sqrt(double(s)/((2*w+1)*(2*w+1)));
T(i,j) = average + 0.2*s;
end
end
for i = 1:m
for j = 1:n
if I(i,j) > T(i,j)
I(i,j) = uint8(255);
else
I(i,j) = uint8(0);
end
end
end
imshow(I);
仿真效果图如下:
本文的分类算法采用的是级联分类器和支持向量机(SVM).级联分类器的结构如下图所示:
如图所示,每个分类器只负责一个特征,让所有的连通分量依次通过级联分类器,则最后90%的非文本分量被丢弃.SVM是使用于更加精确的分类.