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: estRGB565image.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
matlab结果:
3、fpga实现:
这个实战的灰度图片是从实战6那里取得的灰度图片,也就是把YCbCr格式中的Y分量提取出来。
fpga效果:
我这里通过按键依次切换各层图片:由于图片太多,我用手机记录了。