9比特平面分层

1、实战原理

如图,一张256级灰度图像,其中一个像素点由8个比特组成,8个比特的信息加起来才构成一个像素点。比如灰度为194的像素点A,转换成二进制值为1100_0010,其中从左往右分别为第7,6,5,4,3,2,1,0比特。每个比特平面中A像素点的值取决于A的灰度的二进制在该比特位的取值。

此次实战共有640*480个像素点,众多像素点就构成了8比特平面分层,每个比特平面都是二值图像。因此每层中的每个像素点可能是黑,可能是白。

 

2、matlab验证:

clear all;

RGB = imread('G:\test\RGB565\image.jpg');   %读取图片文件

gray = rgb2gray(RGB);         %转换为灰度图像
[ROW,COL,N] = size(gray);     %获得图片尺寸[高度,长度,维度]

subplot(3,3,1);
imshow(gray,[]);
title('原始图像');

for k=1:8
    for i=1:ROW
        for j=1:COL
            tmp(i,j) = bitget(gray(i,j),k);%将RGB(i,j)灰度值分解为二进制串,取第k位
        end
    end
    subplot(3,3,k+1);
    imshow(tmp,[]);
    ind = num2str(k-1);
    imti = ['',ind,'比特平面'];
    title(imti);
end
View Code

matlab结果:

 

3、fpga实现:

这个实战的灰度图片是从实战6那里取得的灰度图片,也就是把YCbCr格式中的Y分量提取出来。

fpga效果:

我这里通过按键依次切换各层图片:由于图片太多,我用手机记录了。

posted @ 2020-12-08 22:41  LiYiRui  阅读(433)  评论(0编辑  收藏  举报