FPGA丨图像二值化

一、二值化图像介绍

二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素不是0就是1,再无其他过渡的灰度值。

二值图像经常出现在数字图像处理中作为图像掩码或者在图像分割、二值化和dithering的结果中出现。一些输入输出设备,如激光打印机、传真机、单色计算机显示器等都可以处理二值图像。

二、程序设计

module binarization(
 input clk ,
 input rst_n ,
 
 //图像处理前的数据接口
 input gray_vsync ,
 input gray_hsync ,
 input gray_data_valid ,// 数据有效信号
 input [7:0] gray_data_in, 

 //图像处理后的数据接口
 output binary_vsync ,
 output binary_hsync ,
 output binary_data_valid,// 数据有效信号
 output [7:0] binary_data_out 
 );

 parameter THRESHOLD = 8'd127; //二值化的阈值
 
 
 //reg define
 reg gray_vsync_d;
 reg gray_hsync_d;
 reg gray_data_valid_d;
 reg monoc; //monochrome(1=白,0=黑)

 //*****************************************************
 //** main code
 //*****************************************************
 assign binary_vsync = gray_vsync_d;
 assign binary_hsync = gray_hsync_d;
 assign binary_data_valid = gray_data_valid_d;
 
 //得到二值化的图像数据
 assign binary_data_out = {8{monoc}};

 //二值化
 always @(posedge clk or negedge rst_n) begin
	 if(!rst_n)
	 	monoc <= 1'b0;
	 else if(gray_data_in> THRESHOLD) //比较图像灰度值与阈值的大小
	 	monoc <= 1'b1;
	 else
	 	monoc <= 1'b0;
 end
 
 //延时 1 拍以同步时钟信号
 always@(posedge clk or negedge rst_n) begin
 if(!rst_n) begin
	 gray_vsync_d <= 1'd0;
	 gray_hsync_d <= 1'd0;
	 gray_data_valid_d <= 1'd0;
 end
 else begin
	 gray_vsync_d <= gray_vsync;
	 gray_hsync_d <= gray_hsync;
	 gray_data_valid_d <= gray_data_valid;
 end
end
endmodule

参考: 正点原子的《开拓者FPGA 开发指南》

posted @ 2021-03-29 11:51  耐心的小黑  阅读(252)  评论(0编辑  收藏  举报