基于hough变换的条形码数字分割和数字识别matlab仿真

1.算法仿真效果

matlab2022a仿真结果如下:


2.算法涉及理论知识概要

霍夫变换是一种特征提取(feature extraction),被广泛应用在图像分析(image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的算法流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。

现在广泛使用的霍夫变换是由RichardDuda和PeterHart在公元1972年发明,并称之为广义霍夫变换(generalizedHoughtransform),广义霍夫变换和更早前1962年的PaulHough的专利有关。经典的霍夫变换是侦测图片中的直线,之后,霍夫变换不仅能识别直线,也能够识别任何形状,常见的有圆形、椭圆形。1981年,因为DanaH.Ballard的一篇期刊论文"Generalizing the Hough transform to detect arbitrary shapes",让霍夫变换开始流行于计算机视觉界。


一条直线可以用如下的方程来表示:y=kx+b,k是直线的斜率,b是截距。


图像是一个个离散的像素点构成的,如果在图像中有一条直线,那也是一系列的离散点构成的。那么怎样检测这些离散的点构成了直线呢?


我们再看上面的直线方程:y=kx+b,(x,y)就是点。我们转换下变成:b=-kx+y。我们是不是也可以把(k,b)看作另外一个空间中的点?这就是k-b参数空间。



我们看到,图1中,在x-y图像空间中的一个点,变成了k-b参数空间中的一条直线,而x-y图像空间中的2点连成的直线,变成了k-b参数空间中的一个交点。


如果x-y图像空间中有很多点在k-b空间中相交于一点,那么这个交点就是我们要检测的直线。这就是霍夫变换检测直线的基本原理。


当然,有一个问题需要注意,图像空间中如果一条直线是垂直的,那么斜率k是没有定义的(或者说无穷大)。为了避免这个问题,霍夫变换采用了另一个参数空间:距离-角度参数空间。




相反,图片上的点在霍夫空间就可以表示为线,我们要检测线条的话,就可以把图像上的每个点转换到霍夫空间去,找到霍夫空间上线条相交的点,就可以确定参数m, b.


3.MATLAB核心程序

Thetaa=180*xmax/xsize;

Thetab=90-Thetaa;

bw1=imrotate(B,Thetab,'bicubic');

figure(7);

imshow(bw1);title('纠正后的二值图')

BW1=imrotate(BW,Thetab,'bicubic');

figure(8);

imshow(BW1);title('纠正后的边缘图')

[p,q]=size(BW1);

m=0;

for y=ceil(p/2):p

for x=1:q

if BW1(y,x)==1

m=m+1

else m=m

end

end

if m<60

y1=y

break

else m=0

end

end

n=0;

for yl=floor(p/2):-1:1

for xl=1:q

if BW1(yl,xl)==1

n=n+1

else n=n

end

end

if n<60

y2=yl

break

else n=0

end

end

BW2=imcrop(BW1,[1,y2,q,y1-y2]);

figure(9);imshow(BW2);title('上下分割')

bw2=imcrop(bw1,[1,y2,q,y1-y2]);

figure(10);imshow(bw2);title('上下分割')

[a,b]=size(BW2);

k=0

for yi=1:a

for xi=1:ceil(b/3)

if BW2(yi,xi)==1

k=k+1

A(k)=xi

else k=k

end

end

K=k

for c=1:K-4

L1=A(c+4)-A(c+3);

L2=A(c+3)-A(c+2);

L3=A(c+2)-A(c+1);

L4=A(c+1)-A(c);

L=(L1+L2+L3)/3

if (L2/L1)>0.5&(L2/L1)<1.5&(L3/L2)>0.5&(L3/L2)<1.5&(L4/L)>9

C=c

xx1=A(C)+1

break

else k=0

continue

end

end  

end

..............................................................................

k = 1;

for i=1:59  

if rem(i,2)

for j=1:bar_int(i)  

bar_01(k) = 1;

k = k+1;

end

else

for j=1:bar_int(i)  

bar_01(k) = 0;

k = k+1;

end

end

end

if ((bar_01(1)&&~bar_01(2)&&bar_01(3))...   

&&(~bar_01(46)&&bar_01(47)&&~bar_01(48)&&bar_01(49)&&~bar_01(50))...   

&&(bar_01(95)&&~bar_01(94)&&bar_01(93)))    

l = 1;

for i=1:6  

bar_left(l) = 0;

for k=1:7

bar_left(l) = bar_left(l)+bar_01(7*(i-1)+k+3)*(2^(7-k));

end

l = l+1;

end

l = 1;

for i=1:6   

bar_right(l) = 0;

for k=1:7

bar_right(l) = bar_right(l)+bar_01(7*(i+6)+k+1)*(2^(7-k));

k = k-1;

end

l = l+1;

end

end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 一、点、线、边缘检测 1、背景知识 数字函数的导数可用差分来定义。 我们按如下方式得到一维函数 f(x) 在点 x...
    sumpig阅读 1,908评论 0 1
  • %霍夫检测 BW=imread('lexp_1_2.bmp'); BW=rgb2gray(BW); thresh=...
    Kerwin_H阅读 700评论 0 0
  • 准备数字图像处理期末考试,根据老师重点整理。 一、深入理解并熟悉直方图均衡化过程,完成完整计算 求出图像f的总体像...
    汤川live阅读 696评论 0 2
  • 一、霍夫直线检测 霍夫变换(Hough Transfrom),是1972年提出的,最开始就是用来在图像中检测直线,...
    思思入扣阅读 1,416评论 0 0
  • 最近在看图像处理的东西,为了检测直线,可以用的一个神奇的东西---Hough变换。 一条直线可以用如下的方程来表示...
    踏乡墨客阅读 10,717评论 0 5