明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 7482|回复: 0

【基于FPGA的图像处理工程】边缘检测工程之二值化模块代码解析

[复制链接]
发表于 2019-12-12 15:29:51 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
【基于FPGA的图像处理工程】
                                                            —边缘检测工程:二值化模块代码解析
作者:陈刀刀
本文为明德扬原创文章,转载请注明出处!
二值化模块的功能:该模块将输入进来的数据与二值图像的阈值进行判断,最终输出0或者1。


        一、设计架构
        该模块的功能对输入的灰度图像做二值化处理。
        期望输出波形如下所示:
222.png
        设value取150,在第一个红色箭头处,当din_vld=1时,din为56大于150,dout输出1,同时dout_vld为1;
        在第二个箭头处,当din_vld=1时,din为85小于150,dout输出0,同时dout_vld为1;
        在第三个箭头处,当din_vld=1时,din为87小于150,dout输出0,同时dout_vld为1;
        其他情况以此类推。


        二、信号的意义
  
信号
  
类型
意义
clk
输入信号
时钟信号,时钟频率为25M
rst_n
输入信号
复位信号,低电平有效。
value
输入信号
二值图像的阈值
din
输入信号
输入灰度图像数据,为8位。
din_vld
输入信号
输入灰度图像数据有效信号。
  
1:数据有效;
  
0:数据无效。
din_sop
输入信号
输入灰度图像数据起始指示信号。
  
1:数据有效;
  
0:数据无效。
din_eop
输入信号
输入灰度图像数据结束指示有效信号。
  
1:数据有效;
  
0:数据无效。
dout
输出信号
输出的二值图像的图像数据,为1位。
  
设计逻辑:当输入的值比设定阈值大,则输出1;反之则输出0。
dout_vld
输出信号
输出二值图像数据的有效信号。
  
1:数据有效;
  
0:数据无效。
  
设计逻辑:与输入的二值图像数据的有效信号同步。
dout_sop
输出信号
输出灰度图像数据起始指示信号。
  
1:数据有效;
  
0:数据无效。
  
设计逻辑:与输入的灰度图像数据起始指示信号同步。
dout_eop
输出信号
输出灰度图像数据结束指示有效信号。
  
1:数据有效;
  
0:数据无效。
  
设计逻辑:与输入的灰度图像数据结束指示有效信号同步。
        三、参考代码
        下面展出本模块的设计,欢迎进一步交流,如果需要源代码,欢迎与本人联系。
  1. module gray_bit(
  2.         clk         ,
  3.         rst_n       ,
  4.         value       ,
  5.         din         ,
  6.         din_vld     ,
  7.         din_sop     ,
  8.         din_eop     ,
  9.         dout        ,
  10.         dout_vld    ,
  11.         dout_sop    ,
  12.         dout_eop        
  13.     );

  14.     input               clk     ;
  15.     input               rst_n   ;
  16.     input   [7:0]       value   ;
  17.     input   [7:0]       din     ;
  18.     input               din_vld ;
  19.     input               din_sop ;
  20.     input               din_eop ;

  21.     output              dout    ;
  22.     output              dout_vld;
  23.     output              dout_sop;
  24.     output              dout_eop;

  25.     reg                 dout    ;
  26.     reg                 dout_vld;
  27.     reg                 dout_sop;
  28.     reg                 dout_eop;


  29.     always  @(posedge clk or negedge rst_n)begin
  30.         if(rst_n==1'b0)begin
  31.             dout <= 1'b0;
  32.         end
  33.         else if(din >= value)begin
  34.             dout <= 1'b1;
  35.         end
  36.         else begin
  37.             dout <= 1'b0;
  38.         end
  39.     end
  40.    
  41.     always  @(posedge clk or negedge rst_n)begin
  42.         if(rst_n==1'b0)begin
  43.             dout_vld <= 1'b0;
  44.         end
  45.         else begin
  46.             dout_vld <= din_vld;
  47.         end
  48.     end
  49.    
  50.     always  @(posedge clk or negedge rst_n)begin
  51.         if(rst_n==1'b0)begin
  52.             dout_sop <= 1'b0;
  53.         end
  54.         else begin
  55.             dout_sop <= din_sop;
  56.         end
  57.     end
  58.    
  59.     always  @(posedge clk or negedge rst_n)begin
  60.         if(rst_n==1'b0)begin
  61.             dout_eop <= 1'b0;
  62.         end
  63.         else begin
  64.             dout_eop <= din_eop;
  65.         end
  66.     end
  67.    
  68.    


  69. end module
复制代码


        明德扬专注FPGA研究,我司正在连载两本书籍: 《基于FPGA至简设计法实现的图像边缘检测系统》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=691)、《ASIC和FPGA时序约束理论与应用》(http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=705),有兴趣点击观看。也欢迎加入群(838209674),及时获取最新的文章信息,个性化问题也可以找我哦:Q 1277642036(陈刀刀)。

加QQ:1744527324,获取更多FPGA资料!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-11-1 10:33 , Processed in 0.058322 second(s), 25 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表