wolfqfy的个人空间 https://blog.eetop.cn/qianfy [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

VC和MATLAB读取bmp文件的RGB分量

已有 6799 次阅读| 2007-9-13 18:37 |个人分类:技術

天气: 晴朗
心情: 高兴
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');

点赞

发表评论 评论 (1 个评论)

回复 bodao1115 2008-1-6 11:46
不错哦~~~

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 1015

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 10:21 , Processed in 0.010725 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部