基于FPGA的8比特图像的可比特平面分层

FPGA/ASIC技术

204人已加入

描述

1 背景知识

像素是由比特组成的数字。例如,在256级灰度图像中,每个像素的灰度是由8比特(也就是1个字节)组成。一幅8比特图像可以认为由8个1比特平面组成,如图1所示,其中平面1包含图像中所有像素的最低阶比特,而平面8包含图像中所有像素的最高阶比特。

比特

图1  8比特图像8层示意

把一幅图像分解为比特平面,对于分析图像中每个比特的相对重要性是很有用的,这一处理可帮助我们确定用于量化该图像的比特数的充分性。

2 FPGA实现

比特

图2 FPGA内部模块结构框图

FPGA源码:
//------------------------------------------------------------------------------------------------------
// layer
//------------------------------------------------------------------------------------------------------
//assign TFT_rgb = {o_y_8b[7],4'b0,o_y_8b[7],5'b0,o_y_8b[7],4'b0};     //Y The eighth layer
//assign TFT_rgb = {o_y_8b[6],4'b0,o_y_8b[6],5'b0,o_y_8b[6],4'b0};     //Y The seventh layer
//assign TFT_rgb = {o_y_8b[5],4'b0,o_y_8b[5],5'b0,o_y_8b[5],4'b0};       //Y The sixth layer
//assign TFT_rgb = {o_y_8b[4],4'b0,o_y_8b[4],5'b0,o_y_8b[4],4'b0};       //Y The fifth layer
//assign TFT_rgb = {o_y_8b[3],4'b0,o_y_8b[3],5'b0,o_y_8b[3],4'b0};       //Y The fourth layer
//assign TFT_rgb = {o_y_8b[2],4'b0,o_y_8b[2],5'b0,o_y_8b[2],4'b0};       //Y The third layer
//assign TFT_rgb = {o_y_8b[1],4'b0,o_y_8b[1],5'b0,o_y_8b[1],4'b0};       //Y The second layer
assign TFT_rgb = {o_y_8b[0],4'b0,o_y_8b[0],5'b0,o_y_8b[0],4'b0};       //Y The first layer
实验结果:

图3 实验原图

图4 The eighth layer

图5 The seventh layer

图6 The sixth layer

图7 The fifth layer

图8 The fourth layer

图9 The third layer

图10 The second layer

图11 The first layer

结果分析:

对于图3中(x,y)点的灰度值由8比特层平面相应点组成。灰度图像的分层对图像压缩很有作用,在图像压缩中,重建一幅图像时所用的平面要比全部平面少。

图12 灰度图像重建

图12 a使用比特平面8和7重建的图像;b使用比特平面8,7和6重建的图像;c使用比特8,7,6和5重建的图像。将图c与图a进行对比。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分