专栏首页瓜大三哥图像分割(四)

图像分割(四)

图像分割(四)

之基于FPGA的局部自适应分割

子模块设计

窗口缓存模块win_buf

本模块不做任何算法上的处理,只是负责将当前输入像素的二维窗口元素缓存并组成一个一维的向量输出。

模块的构建非常简单,对图像分别做行列方向的延迟即可。对于行方向上的延迟,可以用行缓存来实现,对于列方向上的延迟,则采用寄存器实现。

设定需要缓存的窗口尺寸为KSZ,则需要KSZ-1行缓存,以及KSZxKSZ个寄存器来实现。以7x7窗口缓存快为例:

`timescale 1ns / 1ps
module win_buf(
rst_n,
clk,
din_valid,
din,
dout,
dout_valid,
dout_org,
vsync,
vsync_out,
is_boarder
 );
parameter DW =14;
parameter KSZ = 15;
parameter IH = 512;
parameter IW =640;
input rst_n;
input clk;
input din_valid;
input vsync;
input [DW-1:0] din;
output [DW*KSZ*KSZ-1:0] dout; //输出为KSZ*KSZ向量
output [DW-1:0] dout_org; //输出中心点像素
output vsync_out;
output is_boarder;
output dout_valid;
localparam num_all = KSZ*KSZ;//窗口数据总数
//窗口寄存器
reg [DW-1:0] p [0:num_all-1];
//例化KSZ-1个行缓存
generate
begin : line_buf
genvar i;
for(i=0;i<=KSZ-2;i=i+1)
begin
line_buffer line_buf_inst (
 .clk(clk), 
 .rst(rst_n), 
 .din(line_din[i][DW-1:0]), 
 .wr_en(line_wren[i]), 
 .rd_en(line_rden[i]), 
 .dout(line_din[i][DW-1:0]), 
 .full(line_full[i]), 
 .empty(line_empty[i]) 
);
end
end
endgenerate
//将输入接入延时电路
always @(posedge clk)
begin
if(valid)
p[0] <= din;
//列延迟电路
for(k=0;k<=KSZ-1;k=k+1)
for(j=1;j<=KSZ-1;j=j+1)
if(line_valid[k*KSZ+j-1])
p[k*KSZ+j] <= p[k*KSZ+j-1];
//行延迟电路
for(k=1;k<=KSZ-1;k=k+1)
if(line_rden[k-1])
p[k*KSZ] <= line_dout[k-1];
end
//输出窗口缓存
generate
begin : xhdl2
genvar i;
for(i=1;i<=num_all;i=i+1)
begin : out_data_gen
assign dout[i*DW -1 :(i-1)*DW] = p[i-1];
end
end
endgenerate
//输出中心像素
assign dout_org = p[med_idx];
endmodule

本文分享自微信公众号 - 瓜大三哥(xiguazai_tortoise),作者:xiguazaitortoise

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 形态学滤波(六)

    形态学滤波(六) 之二维形态学腐蚀/膨胀子模块设计 按照二维扩展的思路,将每一行的一维算子的计算结果对齐在列方向上再进行一维运算,得到的结果即是二维运算结果。 ...

    瓜大三哥
  • 动态时钟相位

    动态调整时钟相位调节需要在 IP 界面勾选 Dynamic Phase Shift选项。这时候 IP 会多出来一个 4 个引脚,分别是:

    瓜大三哥
  • 基于CNN的人脸检测器——FacenessNet

    FacenessNet是专门针对人脸设计的一个检测器,其考虑了头发、眼睛、鼻子、嘴巴和胡子这五个脸部特征,简单地说,对于一个候选窗口,FacenessNet先分...

    瓜大三哥
  • iOS中pch文件更简便的位置配置

    Raindew
  • Nginx学习之反向代理WebSocket配置实例

    写在开始 去年,做过一款竞赛打分的APP。具体需求,同组教师之间可以相互通信,及时通知同组人员,其他组员做了那些操作(当然,这只是针对特定操作)。 实现方案 采...

    小柒2012
  • elasticsearch - Lucene分片内部逻辑

    在一个分片中(Lucene),数据(数据原文和倒排索引)以段为单位存储,只有成为段的数据才能被检索。

    执生
  • python pyecharts 实现一个文件绘制多张图

    以上这篇python pyecharts 实现一个文件绘制多张图就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • BI领导驾驶舱-企业管理者不可或缺的决策帮手

    领导驾驶舱是BI分析工具中的一个重要组成部分,国外称之为Dashboard,通过图表结合的方式,多维度、多视角的分析数据,把关键业务指标(KPI)以最直观的方式...

    数据前沿
  • 数据结构:图文详解二叉树(遍历、类型、操作)

    从根节点出发,按照某种次序访问二叉树中的所有结点,使得每个结点被访问1次 且 只被访问1次

    Carson.Ho
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程

    这一节,我们来看看EF如何执行SQL语句与读取存储过程的数据,可能有一部分人,还不知道EF如何执行存储过程与原生SQL语句! 我们什么时候要直接使用原生的S...

    用户1149182

扫码关注云+社区

领取腾讯云代金券