天气: 晴朗
心情: 高兴
VC的程序可上网查询,读出的数据存储在一个结构体IMAGE的变量中,IMAGE的DataA代表B(蓝色)分量,DataB代表G(绿色)分量,DataC代表R(红色)分量。
在Matalb里,用M=imread('lena.bmp')的形式可读取一幅bmp文件,如果bmp文件为彩色文件,M是一个X*Y*3的三维矩阵,第一维M(:,:,1)为红色分量r,第二维M(:,:,2)为绿色分量g,第三维为红色分量。
需注意的是,用附件的C程序读出的数据,和Matlab里读出的数据“貌似”不一致。比如,对Lena这幅图像,VC中读出的绿色分量是:20,20,29,2d,2a......而Matlab里得到的数据矩阵开始是:90,90,8e,90,8f......看起来好像不同,其实是相同的。原因在于matlab里读出的数据和vc程序读出的数据,其组织顺序不一样,把matlab得到的数据矩阵拉到最末一行,看看,数据是什么?没错,就是:20,20,29,2d,2a......其他都是一致的。
例:读取一幅图像,并分别显示其R\G\B分量
clear
clc
A=imread('lena.bmp');
[r c d]=size(A);
red(:,:,1)=A(:,:,1);
red(:,:,2)=zeros(r,c);
red(:,:,3)=zeros(r,c);
red=uint8(red);
subplot(1,3,1)
imshow(red)
title('Red Component');
green(:,:,2)=A(:,:,2);
green(:,:,1)=zeros(r,c);
green(:,:,3)=zeros(r,c);
green=uint8(green);
subplot(1,3,2)
imshow(green)
title('Green Component');
blue(:,:,3)=A(:,:,3);
blue(:,:,1)=zeros(r,c);
blue(:,:,2)=zeros(r,c);
blue=uint8(blue);
subplot(1,3,3)
imshow(blue)
title('Blue Component');