概述
%图像二值化
function e=binaryzation4(d)
if sum(size(d)>0)==3 %倘若是彩色图--2维*3,先转换成灰度图
d=rgb2gray(d);
end
x=15;%行数分为x部分
y=1;%列数分为y部分
e=erzhihua(d,x,y);
function II=erzhihua(I,deltax,deltay)
%将图像分块处理,水平方向为deltay个,竖直方向为deltax个,这总共为N=deltay*deltax个
[m,n]=size(I);
II=zeros(m,n);
ax=floor(m/deltax);
ay=floor(n/deltay);
for i=1:deltax %两个循环,分块处理
x_min=1+(i-1)*ax;
if i
x_max=i*ax;
else
x_max=m;
end
for j=1:deltay
y_min=1+(j-1)*ay;
if j
y_max=j*ay;
else
y_max=n;
end
I1=I(x_min:x_max,y_min:y_max); %把块内的值取出来
J=imagebw(I1);%得到二值化的图--调用imagebw函数
II(x_min:x_max,y_min:y_max)=J;%把二值化处理后图像传入
end
end
function J = imagebw(input)
%%input为待处理图像,J为输出二值化的图
%参考文献[1] Otsu, N., "A Threshold Selection Method from Gray-Level Histograms,
%" IEEE Transactions on Systems, Man, and Cybernetics, Vol. 9, No. 1, 1979, pp. 62-66.
%运用直方图信息选取门限,而后二值化
I = im2uint8(input(:)); %%强制变成uint8类型--并且是向量型
num_graylevel = 256; %灰度级为256
gray_nums = imhist(I,num_graylevel); %原图中的各个灰度级的频数
probability = gray_nums / sum(gray_nums); %每个灰度级出现的概率
accu = cumsum(probability); %求小于各个概率的累积概率
a_num = cumsum(probability .* (1:num_graylevel)'); %得到小于各个灰度级的像素累积数量
a_numlast = a_num(end); %a_num向量的最后一个数,指的是(灰度级*对应的概率)的总和
sigma_b_squared = (a_numlast * accu - a_num).^2 ./ (accu .* (1 - accu));
maxval = max(sigma_b_squared); %取得最大值
isfinite_maxval = isfinite(maxval); %排除病态
if isfinite_maxval
idx = mean(find(sigma_b_squared == maxval));
% Normalize the threshold to the r
ange [0, 1].
threshold = (idx - 1) / ( num_graylevel - 1); %计算门限
else
threshold = 0.0;%倘若是病态,门限为零
end
J=im2bw(input,threshold); %二值化
最后
以上就是如意咖啡为你收集整理的matlab车牌二值化,用matlab编程实现的车牌图像二值化的全部内容,希望文章能够帮你解决matlab车牌二值化,用matlab编程实现的车牌图像二值化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复