车牌识别项目(3)sobel算法边缘检测
sobel算法边缘检测
小梅哥书上的教程讲得很好
《小梅哥-FPGA系统设计与验证实战指南_V24》P836 7.11
sobel算法做边缘检测其实也是一种二值化的预操作,在完成sobel处理后,与阈值进行比较,即完成了二值化,但这个阈值可以通过OTSU算法来计算出
简单定义:卷积是分析数学中一种重要的运算。
设:f(x),g(x)是R1上的两个可积函数,作积分:
可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f与g的卷积,记为h(x)=(f*g)(x)。
容易验证,(f * g)(x) = (g * f)(x),并且(f * g)(x)仍为可积函数。这就是说,把卷积代替乘法,L1(R1)空间是一个代数,甚至是巴拿赫代数。
卷积与傅里叶变换有着密切的关系。利用一点性质,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化。
由卷积得到的函数f*g一般要比f和g都光滑。特别当g为具有紧致集的光滑函数,f为局部可积时,它们的卷积f * g也是光滑函数。利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f的光滑函数列fs,这种方法称为函数的光滑化或正则化。
Sobel算子的理解
sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。
算子使用两个33的矩阵(图1)算子使用两个33的矩阵(图1)去和原始图片作卷积,分别得到横向G(x)和纵向G(y)的梯度值,如果梯度值大于某一个阈值,则认为该点为边缘点
看了网上的很多资料,都把卷积和相关的概念给弄糊了,书上给的Sobel的模板不是卷积模板,而是相关模板,因为卷积的话要先将模板旋转180****度以后再与图像做相关的操作。
图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:
OpenCV还提供了一个scharr函数,比Sobel算子更为精准,也是3x3的模板。
4.代码
module sobel (input rst,input pclk,input ycbcr_hs,input ycbcr_vs,input ycbcr_de,input [7:0] fazhi,output reg data_out,output sobel_hs,output sobel_vs,output sobel_de,input [7:0] p1,input [7:0] p3,input [7:0] p2,input [1:0] zt,output reg data_out_pd);
reg [7:0] p11,p12,p13;
reg [7:0] p21,p22,p23;
reg [7:0] p31,p32,p33;reg [9:0] x1,x3;
reg [9:0] y1,y3;
reg [9:0] abs_x,abs_y;
reg [10:0] abs_g;reg [8:0] hs_buf ;
reg [8:0] vs_buf ;
reg [8:0] de_buf ;
reg [7:0] fazhi_;
always fazhi_=fazhi;
always@(posedge pclk)//9个8位reg做移位计算,每次移入3个,并移出3个
beginp11 <= p1;p21 <= p2; p31 <= p3;p12 <= p11;p22 <= p21;p32 <= p31;p13 <= p12;p23 <= p22;p33 <= p32;
endalways@(posedge pclk)//sobel做卷积的核心代码
beginx1 <= {2'b00,p11} + {2'b00,p31} + {1'b0,p21,1'b0};x3 <= {2'b00,p13} + {2'b00,p33} + {1'b0,p23,1'b0};y1 <= {2'b00,p11} + {2'b00,p13} + {1'b0,p12,1'b0};y3 <= {2'b00,p31} + {2'b00,p33} + {1'b0,p32,1'b0};
endalways@(posedge pclk)
beginabs_x <= (x1 > x3) ? x1 - x3 : x3 - x1;abs_y <= (y1 > y3) ? y1 - y3 : y3 - y1;abs_g <= abs_x + abs_y;
endalways@(posedge pclk)
begin
/*if(zt==2'b11)
data_out <= (abs_g >65)? 1:0;
else
*/data_out <= (abs_g >fazhi_)? 1:0;end
//hs vs de delay 9 clock
always@(posedge pclk or negedge rst)
beginif (!rst)beginhs_buf <= 9'd0 ;vs_buf <= 9'd0 ;de_buf <= 9'd0 ;endelsebeginhs_buf <= {hs_buf[7:0], ycbcr_hs} ;vs_buf <= {vs_buf[7:0], ycbcr_vs} ;de_buf <= {de_buf[7:0], ycbcr_de} ;end
endassign sobel_hs = hs_buf[8] ;
assign sobel_vs = vs_buf[8] ;
assign sobel_de = de_buf[8] ;endmodule
车牌识别项目(3)sobel算法边缘检测相关推荐
- 【老生谈算法】matlab实现车牌识别中值滤波算法——车牌识别中值滤波算法
基于Matlab的车牌识别中值滤波算法的研究与实现 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于Matlab的车牌识别中值滤波算 ...
- 开源车牌识别项目,OpenALPR
今天在github上看到了一个开源的车牌识别项目,OpenALPR.github链接 我以前自己在MATLAB上编写了一个简单的车牌识别的程序,使用的是传统模板匹配法.只是有了初步的效果,还有很多需要 ...
- (2023最新)基于 Grounded-SAM 的车牌识别项目
背景介绍 曾经在大二的图像处理课程中完成了一个基础的车牌识别项目,当时主要采用的是普通的图像处理技术,并且没有结合前沿的OCR方法导致字符识别准确率堪忧. 现如今已经涌现出诸如Grounded-SAM ...
- 数字图像处理:基于MATLAB的车牌识别项目
学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...
- CSDN车牌识别项目
完整项目已上传至github: https://github.com/duanshengliu/End-to-end-for-chinese-plate-recognition 喜欢的话顺手点个sta ...
- 车牌识别项目全过程——opencv知识自学(1)
目录 什么是opencv? 图像数字化基础知识 图像获取 图像变换 改变大小 车牌识别内容分析 定位车牌 图像降噪 形态学处理 阈值分割+边缘检测 什么是opencv? OpenCV(Open Sou ...
- 车牌识别算法_PC端车牌识别SDK融入好算法
PC端车牌识别SDK介绍 易泊PC端车牌识别SDK融合了车牌定位.车牌字符切分.车牌字符识别等算法,使该系统具有识别效率高.速度快.适应性强.使用方便等优势,技术处于国际先进水平.大力发展机器人.人工 ...
- python车牌识别使用训练集_基于Python 实现的车牌识别项目
车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...
- sobel算法边缘检测python版
对图像进行边缘检测python版本: # coding=gbk import cv2 img = cv2.imread("1.jpg", 0) x = cv2.Sobel(img, ...
- 模式识别之车牌识别---一个开源车牌识别项目easypr
http://doc.okbase.net/subconscious/archive/105312.html https://github.com/liuruoze http://www.cnblog ...
最新文章
- Eclipse复制或修改项目后,把项目部署后发现还是原来的项目名称
- hoj 1067 Rails //poj1363 Rails 栈的简单应用
- 如何筑起第二座“长城”?长城汽车:唯有科技
- 浅谈DevExpress六:为chart创建动态数据源
- 怎么添加项目到SVN上面
- java 工厂模式的写法_java简单工厂模式是什么
- Typecho评论邮件提醒插件美化版CommentToMail
- Coolite Toolkit学习笔记四:容器控件之FiledSet、Panel和Window
- innerHTML、innerText 和 outerHTML 区别
- nodeJS笔记参考菜鸟教程
- 实现网站在线客服系统代码过程中解决问题-js实现点击复制文本
- 尼尔森数据显示谷歌雅虎今夏流量均增长
- [解决方法] 连接深信服Easyconnect之后无法代理抓包
- 【MySql 数据库综合练习01 】
- 心醉花海,芳菲春色入梦来
- Arista发布容器化、开放EOS版本
- 视频编解码 — 码控算法
- 小米二手机价格多少钱
- 数据处理之连续数据离散化
- 013、full-page-writes(全页写)
热门文章
- python怎么写入聚类标签_标签传播算法(Label Propagation)及Python实现
- NetBean快捷键
- pdca实施的流程图_PDCA实战案例详解:PDCA的 4个阶段 8个步骤及应用详解
- 计算机中心pdca,信息中心日常运维工作PDCA持续改进.docx
- 概率论基础-严士健 第二版 习题与补充2.4答案
- 计算机指纹驱动程序,计算机指纹失灵,提示找不到支持Windows Hello指纹的指纹识别器...
- 计算机常见故障及其原因
- Springboot毕设项目会议预约系统设计与实现3if68(java+VUE+Mybatis+Maven+Mysql)
- PANTONE国际色卡CMYK配方表
- 智安网络丨漫画人工智能:人工智能简史