FPGA|数字图像处理实现口罩识别——二值化

【写在前面】刚入门小菜鸟,记录一下口罩识别学习过程。参考文件和网址会在文末注明。有错误欢迎指出,也欢迎进行补充~

原理图如下,二值化对应为红框里的部分

使用的二值化方法是手动指定一个阈值,通过阈值来进行二值化处理。(还有一种方法是一个自适应阈值二值化方法,在这里未使用)

源码如下:

module binarization(
    //module clock
    input   clk,
    input   rst_n,        //复位信号

    //图像处理前数据接口
    input   ycbcr_vsync,
    input   ycbcr_hsync,
    input   [7:0]   luminance,

    //图像处理后数据接口
    output  post_vsync,
    output  post_hsync,
    output  post_de,
    outputreg   monoc
);

//reg   define
reg ycbcr_vsync_d;
reg ycbcr_hsync_d;
reg ycbcr_de_d;

assign post_vsync = ycbcr_vsync_d ;
assign post_hsync = ycbcr_hsync_d ;
assign post_de = ycbcr_de_d ;

//二值化
always@(posedge clk or negedge rst_n) begin
    if(!rst_n)
        monoc <= 1'b0;
    else if(luminance > 8'd64)    //灰度阈值
        monoc <= 1'b1;            //低于时赋1
    else
        monoc <= 1'b0;            //高于时赋0
end

//延时1拍以同步时钟信号
always@(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        ycbcr_vsync_d <= 1'd0;
        ycbcr_hsync_d <= 1'd0;
        ycbcr_de_d <= 1'd0;
    end
    else begin
        ycbcr_vsync_d <= ycbcr_vsync;
        ycbcr_hsync_d <= ycbcr_hsync;
        ycbcr_de_d <= ycbcr_de ;
    end
end

endmodule

涉及到的知识解释: 

1.LCD显示器显像的信号HSync ,VSync

VSYNC:帧同步信号。表示扫描1帧的开始,一帧也就是LCD显示的一个画面。
HSYNC:行同步信号。表示扫描1行的开始。

例如,要显示一个A x B的画面,则有:
VSYNC = HSYNC x B
HSYNC = PCLK x A

再例如:

 

 
PCLK:像素时钟,时最小时钟单位,控制整个程序的运行进程。
ENABLE:数据使能,为1时才能接受数据,为0时不能。
P_DATA: 数据输出
上升沿:由0—>1
下降沿:由1—>0

更多知识请看:LCD显示器显像的信号HSync ,VSync - 简书 (jianshu.com)

2.二值化部分

二值化即将灰度值(光亮值)和设定的阈值比较,比较结果以0和1的形式存入monoc中。0和1只是比较的结果,不是像素的实际灰度值。之后需要根据monoc确定像素点的颜色。

3.延时以同步时钟信号

我们在前面使用了一个时钟周期进行二值化,相应的同步信号也应该延迟一个时钟周期,从而实现数据的同步。

参考:《开拓者FPGA开发指南V1.5》

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值