18O 化工自动化及仪表 第45卷 基于FPGA的Sobel边缘检测算法研究与实现 孙百洋 冷建伟 赵嘉祺 (天津理工大学a.电气电子工程学院;b.天津市复杂系统控制理论及应用重点实验室) 摘 要 针对某中小河流水文监测系统对水位实时监测的需求,提出利用现场可编程门阵列(FPGA)外 接监控摄像头采集图像,结合Sobel边缘检测算法,完成系统设计并在FPGA上实现。实验结果表明:利 用FPGA硬件系统较好地实现了Sobel边缘检测算法,呈现出的图像边缘信息也较为理想,能够满足监 测系统的需求。 关键词 数字图像处理中图分类号TH865 监测系统边缘检测 FPGA Sobel算子 文章编号 1000.3932(2018)03—0180-05 文献标识码 A 边缘是由于图像局部特征的不连续形成的。 通过数学变换可得局部灰度的变化率,再由设定 的阈值寻找边缘信息 。 常见的边缘类型有3种: 为使图像边缘更加明显容易辨别,所用方法即为 边缘检测…。 水文监测站通常位于偏僻地区,工作环境恶 劣,因此利用机器代替人工来完成水位的采集识 别成为未来水域监测的发展方向。在近些年来的 研究中,我国科研人员已经提出通过无线网络进 a.阶梯状,图像的灰度值高低变化幅度大, 边缘处两侧的灰度值存在明显差异; b.屋顶状,其图像灰度值先升高后降低,呈 倒V形; 行水文监测,但仍需工作人员在后台值守,智能化 有待提高。水文监测系统对实时性的要求很高, c.线性,灰度呈脉冲跳跃变化。 2 Sobel边缘检测算法 因此对处理速度要求很严苛,而现阶段单独使用 软件的方法很难满足需求。 FPGA具有高速并行处理、高性能及灵活性 在图像的任何一点使用Sobel算子,将会产 生对应的灰度矢量或是其法矢量 。如图1所 示,Sobel算子由两个不同方向的算子构成。 一等特点,可以通过外部按键改变阈值得到不同的 处理效果。Sobel算子的优势在于平滑去噪,对水 文监测处理有极大帮助。FPGA在对底层图像进 行处理时,处理速度得到了提升,符合监测系统所 需的实时性要求,因此在视频图像处理领域也得 到了广泛的使用。笔者以Sobel算子为基础,对 阈值的调整方式进行改进,使它更适合现场工作 环境,实现Sobel阈值的可调性,同时增强了它在 监控领域的应用性。最后采用Verilog语言实现 图像的边缘检测。 1 边缘检测概述 通常一幅图像的处理过程,首先要做的是把 边缘、亮点及平坦区域等图像纹理的空间结构特 征提取出来。基元图就是由上述特征构成的 。 -1 O +1 +l +2 +1 2 O +2 O O O 1 O +1 —l -2 —1 图1 Sobel算子 用 表示原始图像, 和 分别表示经过 卷积运算后的图像灰度值,为了得到亮度差分近 似值,需要对图像和上述算子进行平面卷积运 算 ",即: Gx=l一2 0 +2 l A I一1 0 +1 J r,一 0 + 1 (1) 作者简介:孙百洋(1993一),硕士研究生,从事计算机视觉的研究,196601681@qq.corn。 第3期 孙百洋等.基于FPGA的Sobel边缘检测算法研究与实现 181 若G大于阈值,则该点为边缘点。梯度方向 = (2) 计算式为: (5) 用下式计算得到该点的灰度值: G= (3) 3 Sobel算子边缘检测的硬件实现 但为了提高运算效率,经常使用绝对值计算, 3.1 硬件系统结构 系统包括实时图像采集、图像数据存储、图像 即: 处理算法和图像显示4部分 ,具体结构如图2 Gl=I GxI+l GyI (4) 所示。 SDAT 传感器 SCLK 配置 多端口SDRAM 控制器 DATA CMOS EVAL 图像 传感器 CMOS PCLK 传感器 图像数据 LCD 图像 MCLK 捕获 拜尔模板 I 上 色彩数据 I厂— 一 转换RGB色彩ll龠杀垴生ll冀 显示 图2 硬件系统结构框图 3.2 Sobel边缘检测的FPGA实现 tap0x[7:0] 3.2.1 图像行缓冲模块 taplx[7:0: 为了实时接收监测系统源源不断采集到的图 altshift 像信息流,首先需要构造一个3×3的像素矩阵, taps0 —同时需要一定的存储空间来缓存这部分数据,并 tap2x[7:0】 对图像数据进行一个串并转换,输出为3行数据。 shiftout[7iO. .3个像素时钟后可得3×3图像像素矩阵 j。 笔者采用移位寄存器存储3×3像素矩阵,调 图3宏定义模块 用IP核中的Shift—RAM宏定义模块,如图3所 的数据,位宽也是可以设置的。笔者定义位宽为 示。 8bit,每行包括640个数据,移位寄存器两行。利 该模块支持一个时钟周期移位一个或多个bit 用该模块生成3×3矩阵的原理如图4所示。 ‰ 落 dda 0'"[ 9Ih I l l 1 t[7..0】 . <=l礁 图4 Shift—RAM原理 182 化工自动化及仪表 第45卷 Shift—RAM的工作原理是移位存储,后一个 数据进入后将前一个数据往前推,当填满此行时, 跳到下一行再继续移位存储,相应的第1行数据 填满之后会填上矩阵第1行的数据,最终得到3× 3阵列 。在这个过程中,输入信号为保持与输 出数据同步,应让使能时钟空一拍。 读使能时钟也需偏移一个时钟,读取3×3像 素阵列时要根据read—flame—href与read—flame— clken信号进行判断。 为了保证数据时钟与行场使能时钟同步,行 场信号、使能读取信号均做相应的调整,移动两个 时钟。 3.2.2卷积计算模块 计算像素点的梯度时,先将Sobel算子与图 像做卷积运算(图5),再由计算公式得出梯度。 图5 卷积运算原理 altmult—add模块可以将收到的多组数据进行 乘加运算并输出,还可以根据具体情况设置所需 乘法器个数、输入输出数据的格式等参数。 parallel—add模块可以按需自定义位宽、累加 个数及数据类型等,最后生成较为合适的位宽数 据输出… 。 卷积运算的原理是算子用并行结构,同alt— shitf—taps模块输出的数据相乘再相加。水平方向 和垂直方向每组各3个数据,共需6个altmuh— add模块。两组数据分别经parallel—add模块处理 后得到两个数据。最后调用平方根核altfp—sqrt 模块,得到3×3窗口中心位置的像素梯度值¨ 。 3.2.3阈值比较模块 阈值比较是将得到的中心像素梯度值同预设 阈值做比较,笔者采用全局阈值法:当阈值 大于 或等于点( ,y)的梯度值时,认为该点的灰度值 为0,小于梯度值时则为255。计算式为: = ㈩ 全局阈值的算法实现代码如下: reg post—img_Bit_a; begin if(!rst—n) post—img—Bit—a<=l b0; else if(Dim>=Sobel—Threshold) post—img—Bit—a<=l bl: else post—imgBit——a<=1 bO; end 3.2.4动态Sobel阈值的实现 利用软按键检测模块key—counter—scan,获得 key—lfag与key—value信号。新建Sobel—Threshold —Adj模块,位于开发板侧面有3个自定义功能键 K1、K2和K3。定义K1的功能为增加阈值,K2的 功能为减小阈值。相对应地设置了15个级别的 阈值,在20~90间均匀分布。阈值级别初始值设 为8,55是它相应的Sobel—Threshold值。 动态阈值的算法实现代码如下: if(!rsI—n) Sobel—Grade<=4 d8; else if(key—flag) begin case(key—value) 2 bO1:Sobel—Grade<=(Sobel—Grade==4 d0)? 4 dO:Sobel—Grade一1’bl; 2 bl0:Sobel—Grade<=(Sobel—Grade==4 dl5)? 4 dl5:Sobel—Grade+1 bl; default:; endcase end else Sobel—Grade<=Sobel—Grade; 4软件仿真结果 用软件modelsim仿真,得到的边缘检测仿真 结果如图6所示。 第3期 孙lr『洋等.琏于¨ GA的Sobel边缘榆测算法研究 脱 l 83 图6 边缘检测仿真结果 Sobel边缘检测算法的外部闽ff{输入定义冉 GA硬件系统上能够得以实现,基本物体的轮廓都 Sobel—Thl’eshold表示,post—fra111e—vsym·为阵仃效 包含在内。图7b中含有一 冗余信息。图7c保 信号,post—frame—href为行有效信 。所仃代码 留 绝大部分有价值的信息 、经多次调整Kl、K2 经过全编译后,下载到FPGA中、 所得边缘检测 按键后,得出阈值为65时,图像边缘检测效果最 结果如图7所示,可见Sobel边缘检测算法在FI,一 佳。 ,l r1] 1 a 摄像头采集的最初图像 阁值为40时处理后图像 阈fJ=_{为65时处理 图像 图7 边缘检测结果 5 结束语 土擎.琏于FPGA的实_i1』Sobel边缘榆测系统设计 笔者对Sobel算子边缘检测算法进行丁研 [D].合肥:安徽大学,20l 5. 究,根据水文临测系统的要求以及待处坪 像的 王瀚闻,翟涌光,郝僭.壤于索贝尔算子的高分辨率 特点,利用宏功能模块和硬件描述语矗‘,侄FPGA 遥感影像分割技术研究[J].科技创新导报,2012, 上完成了边缘检测,同时实现_r动态没嚣闽值的 (22):18. 功能。由实验结果可知,通过选取合适的 值,即 温建飞,岳风英,李水 l:.耀于Ft GA硬件架构的实 时高速图像特征检测系统[J].电子世界,2015, 呵得到较为理想的图像边缘信息 (21):124~125. 参 考 文 献 张仃仃红,凌朝东.基=f Ft GA的Sobel边缘检测应用 [J]电子技术嘘用 2【】1 l,37(8):26~29. 方惠蓉.FPGA在边缘检测I}J的!a,JlJ_Jj. 息通信, 海峰. 于FPGA的税频 像边缘检测优化设 2015.(1):9~12. 汁l Dj.淮南:安徽 I 人学,20l6. 金大超.基于FPGA的实时临控系统和边缘检测的 李明,赵勋杰.毛f}j .Sobel边缘检测的FPGA实 研究与实现[D].天津:天津理I:人 ,2Ol 7. 现[J .现代电子技术,2009,32(16):44~46. 姗姗.基于灰色系统理论的边缘卡:;=测斡:法的研究 宁赛男,朱明,孙宏海,等.·种改进的Sobel自适 及应用[D].上海:东华大学,20l4. 应边缘检测的FP(;A实现[J .液晶与显示,2O14, 汪岳.基于边缘检测经典算法的改进研究 j实现 29(3):395~402. [D J.合肥:安徽大学,2012. (收稿13期:2017.11.1 5,修同}{期:2017—12—20) 李涛.基于FPGA的Sobel算予实时【皋】像边缘愉测 系统的设计[D]北京:北京交通人学,20l 3. (下转第23l页) .1r}、 J] _ 第3期 V=2.532cSt 王卓等.用迭代法计算潜油电泵机组温升值 231 4 结论 肛=1.3 X10一lb/(ft·s) h=0.0203BTU/(s·ft -oF) 4.1 潜油泵的扬程越高,潜油泵和潜油电机的 效率越低,潜油泵内和环空内井液的温升就越高。 4.2环空内流经潜油电机表面井液的液体流速 应大于1ft/s。 电机壳体表面温升值△ 为22.25下。 计算出来的温升与假设温升相差很大,这就 需要进行一个新的迭代计算,假设电机壳体温升 为22.15下,那么环空内的平均温度为322.59下, 在这个平均温度下的物性参数为: k=1.99 X 10~BTU/(s·fl·oF) C=0.925BTU/(1b· P=47.7791b/ft 4.3井液的物性参数是随着温度的变化而变化 的,所以在计算h时,需做迭代运算。 4.4迭代计算过程比较繁琐,可用计算机编程 完成。这时井液的物性参数用估算公式计算比较 简便,如果查询相关手册数据,则需建立不同温度 下物性参数数据库。 参 考 文 献 辛亮,丁涛.油水混合物及油品物性参数计算[J]. 商品与质量,2010,(SA):138. ) V=2.556cSt /z=1.314×10一lb/(ft·s) h=0.0204BTU/(s·ft ·下) 此时计算出的电机温升为22.148下,和假设 温度几乎一致。 在此温升条件下,由式(16)计算出电机的表 面温度 为333.67 oF。 [2] 马沛生.石油化工基础数据手册续编[M].北京:化 学工业出版社,1993. (收稿日期:2017—12-01,修回日期:2018-01—30) lterative Method Calculating Temperature Rise of ESP Unit WANG Zhuo.ZHAO Shi—yin (Daqing Oiieflld Powerlfit Pump Industry Co.,Ltd.) Abstract The causes of temperature rise of the ESP unit were analyzed and making use of iterative method to calculate temperature rise of the submersible pump and submersible motor was adopted.Having this method combined with computer program proves that the calculation result is accurate and this method applicable. Key words submersible pump,submersible motor,temperature rise,iteration method (上接第183页) Research and Implementation of Sobel Edge Detection Algorithm Based on FPGA SUN Bai—yang ,LENG Jian—wei ,ZHAO Jia-qi , (a.School of Electrical and Electronic Engineering;b.Tianifn Key Laboratory for Control Theory&Applications in Complicated Systems.Tianjin University f oTechnology) Abstract Aiming at the real—time monitoring of water level of a small or medium-sized river hydrologic moni- toring system,making use of FPGA external monitoring camera to collect images was implemented,including having sobel edge detection algorithm combined to complete system design and then to realize it on FPGA.The experimental results show that,the use of FPGA hardware system can better achieve sobel edge detection algo- rithm,and the image edge information presented is ideal to meet the needs of the monitoring system. Key words digital image processing,monitoring system,edge detection,FPGA,sobel operator J声 明 田 本刊现入编“万方数据——数字化期刊群”和“中国核心期刊(遴选)数据库”,作者著作权使用费与本刊 稿酬一次性给付,不再另行发放。作者如不同意将文章入编,投稿时敬请说明。