一、二值化图像介绍
二值图像(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 开发指南》