基于图像分割和模式识别的物体追踪之一

  前一段时间已经完成了基于图像分割和模式识别的物体追踪的软件实现,软件实现是以OpenCV作为框架,算法实现是基于C语言,目前已能够实现物体的分割和简单的模式识别,但存在的问题是速度比较慢,在另一篇文章中将对软件的实现做一下说明。这篇文章是基于这个算法的硬件实现,由于自己的硬件实现的基础不是很好,因此将硬件实现分成最简单的模块,然后一个一个的实现其中的模块。这一部分实现的是基础模块,即absolute difference calculation circuit,两个八位输入,一个八位输出,其电路符号为:

其实现的内容为out = |pixel1 - pixel2|,既是一个取绝对值的运算,初步写的verilog HDL代码为:

module abs(clk,pixel1,pixel2,out);
  input [7:0] pixel1,pixel2;
  input clk;
  output [7:0] out;
  wire [7:0] diff;
  reg [7:0] out;

  assign diff = pixel1 - pixel2;

  always @(posedge clk)
  begin
    if(pixel1 < pixel2)
      out <= -diff;
    else
      out <= diff;
end
endmodule

其测试模块为:

module abs_t;
reg [7:0] pixel1;
reg [7:0]pixel2;
reg clk;
wire [7:0] out;

initial
begin
clk = 0;
#10 pixel1 = 8'b0000_0000;
pixel2 = 8'b1111_1111;
#45 pixel1 = 8'b1000_1111;
pixel2 = 8'b0000_0100;
end

always #20 clk = ~clk;

abs t(.clk(clk),.pixel1(pixel1),.pixel2(pixel2),.out(out));

endmodule

  由于图像处理需要有一个时钟来进行规范,所以我用了一个clk来进行输出的同步,但是有待商榷。

  其modelsim下仿真结果为:

  由仿真结果可以看出,输出out满足out = |pixel1 - pixel2|的条件。

 

  下一步需要实现的是8bit编码为3bit的一个编码器。




posted on 2011-12-06 20:09  Step by step!  阅读(1404)  评论(0)    收藏  举报

导航