前言
我们知道,一副图像是有许多个像素组成,而每个像素是一个数值。对不同类型(bmp.jpg)图像其像素数值是不同的。例如一个256灰度级的图像,其每个像素的是用一个8bit的数值表示0至255个灰度范围。实际中,将图像的所有8bit数值分别提取出来,形成8个新的图像,就是图像分层。
MATLAB代码
clear;
clc;
y = imread('C:/Users/Administrator/Desktop/image_l/im1.jpg');
x = (rgb2gray(y));%将原始图像转换为灰度图像,如果本身就是灰度图可以去掉rgb2gray函数
[h w] = size(x);
subplot(3,3,1);
imshow(y)
imwrite(x,'x.bmp');
title('原始图像');
for k=1:8
for i=1:h
for j=1:w
tmp(i,j) = bitget(x(i,j),k);%bitget函数首先将X(i,j)处灰度值分解为二进制串,然后取第k位
end
end
subplot(3,3,k+1);
imshow(tmp,[]);
ind = num2str(k);
imti = ['第',ind,'个位平面'];
title(imti);
End
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