基于FPGA的比特平面分层 - 文章 - www.openhw.org

基于FPGA的比特平面分层

日期:2018-03-23 作者:lee神

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进行对比。
关于OpenHW  |  OpenHW使用说明  |  FAQ  |  相关法律  |  版权声明
联系邮件: openhw@eefocus.com   联系电话: 0512-80981663-8062     Fax:0512-80981279
Powered by eefocus.com