我是靠谱客的博主 如意咖啡,最近开发中收集的这篇文章主要介绍matlab车牌二值化,用matlab编程实现的车牌图像二值化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

%图像二值化

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编程实现的车牌图像二值化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部