前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像分割(三) 之基于FPGA的局部自适应分割

图像分割(三) 之基于FPGA的局部自适应分割

作者头像
瓜大三哥
发布2018-02-26 11:30:21
1.5K0
发布2018-02-26 11:30:21
举报
文章被收录于专栏:瓜大三哥瓜大三哥

图像分割(三)

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

在前面讲的自适应分割的原理如下:

由公式可以看出,窗口的分割值是对图像进行开窗,并计算窗口内的像素均值和标准差,分割值为像素均值和标准差的加权和。

在软件中,不考虑计算效率的情况下,这个计算是轻而易举的事情。但是,需要注意到,在计算分割值的过程中,首先要计算窗口内像素的方差,然后才能对方差进行开方计算标准差。在FPGA里面计算开方是一件费时费力的工作,所以对不等式进行一个等价转换。

为了便于理解,不妨假设目前的输入像素值为din,经算法处理后的输出数据为dout,

这样就只需要得到当前数据din,计算当前窗口内均值和方差即可,这样就可以避免开方操作,简化了系统设计。

将δ2带入上述公式中,则有

若取r=7,K=1,则上式转化为

FPGA需要完成一下计算工作:

1) 计算当前窗口内的像素均值μ。

2) 计算当前窗口中心像素与均值之差的平方(din-μ)2。

3) 将上式与255相乘,完成不等式左边的计算。

4) 计算当前窗口内255个像素值与均值之差的平方和,完成不等式右边的计算。

5) 比较(3)和(4)结果,完成图像分割。

6) 完成行列对齐与边界处理。

根据以上设计步骤,给出FPGA的顶层设计框图如下:

由图可以看出,要完成图像的局部高斯分割工作,需要调用一个均值计算模块mean_2d来计算当前窗口内的像素均值μ。

同时,为了在“同一时刻”计算出当前窗口内所有像素与窗口均值的差平方,还必须要对以前像素为中心的窗口的所有255个像素进行缓存。对15x15个像素的缓存不是一件非常容易的事,这里将指定尺寸的窗口缓存封装成一个模块,记为win_buf,把这个模块的当前输出像素记为din_buf。

不等式左边的计算比较简单,窗口缓存的中间值即为当前像素值,记为din_org,与均值做减法,求平均后再乘以255即可得到。

现在得到了窗口均值μ和当前窗口的像素队列255个din_buf,需要做的是把窗口内255个din_buf分别与均值相减后计算平方。接下来的工作就是把上面这255个差平方结果求和。同样的,15x15个数的加法运算也是非常麻烦的,这里也会将其封装成一个模块,记为add_tree。最后将不等式进行比较,利用比较结果对原图像进行分割即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图像分割(三)
  • 之基于FPGA的局部自适应分割
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档