图像分割(四)

图像分割(四)

之基于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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MelonTeam专栏

Windows下Tensorflow的环境安装和Hello world

导语 深度学习 数字识别 Tensorflow 环境搭建 本人对深度学习是0基础,python也是没有用过,最近很流行深度学习,因此也想学习一下,...

26850
来自专栏CreateAMind

beta tcvae实验结果图

最新相关论文 https://github.com/crslab/CHyVAE

19820
来自专栏人工智能

基于自制数据集的MobileNet-SSD模型训练

“本文主要内容:基于自制的仿VOC数据集,利用caffe框架下的MobileNet-SSD模型训练。” 本文的base是https://github.com/c...

3.5K100
来自专栏MixLab科技+设计实验室

自己动手做一个识别手写数字的web应用02

继续上文。 自己动手做一个识别手写数字的web应用01 01 再次进入docker容器 接着上一篇文章,我们继续使用上次新建好的容器,可以终端输入 : d...

44870
来自专栏cs

python数据分析画图体验

38870
来自专栏程序生活

TensorFlow教程(十二) 随机数实例

tf.random_uniform([4,4], minval=-10,maxval=10,dtype=tf.float32)))返回4*4的矩阵,产生于-10...

9810
来自专栏人工智能LeadAI

TensorFlow分布式全套(原理,部署,实例)

TF的实现分为了单机实现和分布式实现,在分布式实现中,需要实现的是对client,master,worker process不在同一台机器上时的支持。数据量很大...

1.1K60
来自专栏木子昭的博客

Python为图片加水印

Pillow是python的一个功能强大的图像处理的库,可对图像进行高质量的压缩变换等操作,前几天看到一些公众号,提供了为用户头像加装饰的操作,于是自己试了一...

39670
来自专栏AI研习社

一个应用于物体识别的迁移学习工具链

迁移学习指的是,通过对预训练模型的参数进行微调,将训练好的模型应用到相似或者只有细微差异的不同任务中。通过这个方法,我们可以基于一些性能顶尖的深度学习模型得到别...

14720
来自专栏Phoenix的Android之旅

Keras神经网络转到Android可用的模型

一个完整的神经网络由这两部分构成,Tensorflow 在保存时除了这两个文件还会在目录下自动生成 checkpoint, checkpoint的内容如下,它只...

52520

扫码关注云+社区

领取腾讯云代金券