您的位置 首页 汽车

二值图画 FPGA腐蚀算法解析

二值图像 FPGA腐蚀算法解析-在二值图像的腐蚀算法过程中我们使用二值图像3×3图像矩阵,由图2可知,当九个格子中不全为‘0’或者‘1’时,经过腐蚀算法后九个格子的值最终都会变成‘1’;如果九个全是‘1’或者‘0’时,那么最终的结果九个全是‘1’或者‘0’。

1 布景常识

二值图画(Binary Image)是指将图画上的每一个像素只要两种或许的取值或灰度等级状况,人们经常用是非、B&W、单色图画表明二值图画。二值图画是指在图画中,灰度等级只要两种,也便是说,图画中的任何像素不是0便是1,再无其他过渡的灰度值。
腐蚀和胀大是形态学处理的根底,许多形态学算法都是以这两种操作作为根底的。

二值图画 FPGA腐蚀算法解析

图1 运用腐蚀去除图画中的部件

图1 a一幅巨细为486×486的连线模板二值图画,图1b~d别离运用11×11,15X15和45X45的模板进行腐蚀。咱们从这个比如看到,腐蚀缩小或细化了二值图画中的物体。事实上,咱们能够将腐蚀看成是形态学滤波操作,这种操作将小于模板的图画细节从图画中滤除。

2 腐蚀算法

运用白色腐蚀:

二值图画 FPGA腐蚀算法解析

图2 腐蚀演示

在二值图画的腐蚀算法过程中咱们运用二值图画3×3图画矩阵,由图2可知,当九个格子中不全为‘0’或许‘1’时,通过腐蚀算法后九个格子的值终究都会变成‘1’;假如九个满是‘1’或许‘0’时,那么终究的成果九个满是‘1’或许‘0’。

3 FPGA腐蚀算法完成

二值图画 FPGA腐蚀算法解析

图3 二值图画腐蚀FPGA模块架构

图3中咱们运用串口传图,传入的是二值图画。

  FPGA源码:

  /*

  Module name: binary_image_etch.v

  DescripTIon: binary image etch

  */

  `TImescale 1ns/1ps

  module binary_image_etch(

  input clk, //pixel clk

  input rst_n,

  input hs_in,

  input vs_in,

  input [15:0] data_in,

  input data_in_en,

  output hs_out,

  output vs_out,

  output reg [15:0] data_out,

  output data_out_en

  );

  wire [15:0] line0;

  wire [15:0] line1;

  wire [15:0] line2;

  reg [15:0] line0_data0;

  reg [15:0] line0_data1;

  reg [15:0] line0_data2;

  reg [15:0] line1_data0;

  reg [15:0] line1_data1;

  reg [15:0] line1_data2;

  reg [15:0] line2_data0;

  reg [15:0] line2_data1;

  reg [15:0] line2_data2;

  reg data_out_en0;

  reg data_out_en1;

  reg data_out_en2;

  reg hs_r0;

  reg hs_r1;

  reg hs_r2;

  reg vs_r0;

  reg vs_r1;

  reg vs_r2;

  wire[18:0] result_data;

  line3x3 line3x3_inst(

  .clken(data_in_en),

  .clock(clk),

  .shifTIn(data_in),

  .shiftout(),

  .taps0x(line0),

  .taps1x(line1),

  .taps2x(line2)

  );

  //———————————————————————-

  // Form an image matrix of three mulTIplied by three

  //———————————————————————-

  always @(posedge clk or negedge rst_n) begin

  if(!rst_n) begin

  line0_data0 《= 16‘b0;

  line0_data1 《= 16’b0;

  line0_data2 《= 16‘b0;

  line1_data0 《= 16’b0;

  line1_data1 《= 16‘b0;

  line1_data2 《= 16’b0;

  line2_data0 《= 16‘b0;

  line2_data1 《= 16’b0;

  line2_data2 《= 16‘b0;

  data_out_en0 《= 1’b0;

  data_out_en1 《= 1‘b0;

  data_out_en2 《= 1’b0;

  hs_r0 《= 1‘b0;

  hs_r1 《= 1’b0;

  hs_r2 《= 1‘b0;

  vs_r0 《= 1’b0;

  vs_r1 《= 1‘b0;

  vs_r2 《= 1’b0;

  end

  else if(data_in_en) begin

  line0_data0 《= line0;

  line0_data1 《= line0_data0;

  line0_data2 《= line0_data1;

  line1_data0 《= line1;

  line1_data1 《= line1_data0;

  line1_data2 《= line1_data1;

  line2_data0 《= line2;

  line2_data1 《= line2_data0;

  line2_data2 《= line2_data1;

  data_out_en0 《= data_in_en;

  data_out_en1 《= data_out_en0;

  data_out_en2 《= data_out_en1;

  hs_r0 《= hs_in;

  hs_r1 《= hs_r0;

  hs_r2 《= hs_r1;

  vs_r0 《= vs_in;

  vs_r1 《= vs_r0;

  vs_r2 《= vs_r1;

  end

  end

  //—————————————————————–

  // line0_data0 line0_data1 line0_data2

  // line1_data0 line1_data1 line1_data2

  // line2_data0 line2_data1 line2_data2

  //—————————————————————-

  always @(posedge clk or negedge rst_n) begin

  if(!rst_n)

  data_out 《= 16‘h0000;

  else if(data_out_en1)

  if((line0_data0 == 16’h0000) && (line0_data1 == 16‘h0000) && (line0_data2 == 16’h0000) && (line1_data0 == 16‘h0000) && (line1_data1 == 16’h0000) && (line1_data2 == 16‘h0000) && (line2_data0 == 16’h0000) && (line2_data1 == 16‘h0000) && (line2_data2 == 16’h0000))

  data_out 《= line1_data1;

  else if((line0_data0 == 16‘hffff) && (line0_data1 == 16’hffff) && (line0_data2 == 16‘hffff) && (line1_data0 == 16’hffff) && (line1_data1 == 16‘hffff) && (line1_data2 == 16’hffff) && (line2_data0 == 16‘hffff) && (line2_data1 == 16’hffff) && (line2_data2 == 16‘hffff))

  data_out 《= line1_data1;

  else

  data_out 《= 16’hffff;

  end

  endmodule

4试验成果

二值图画 FPGA腐蚀算法解析

图4 试验原图

二值图画 FPGA腐蚀算法解析

图5 原图显现


 

二值图画 FPGA腐蚀算法解析

图6 腐蚀后的成果

成果剖析:
    图5和图6进行比照,图5中最细的图画在图6中现已消失,比较粗的线条也相对变细,试验成功。假如我们想进行更大力度的腐蚀能够运用更大的模板。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/339358.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部