登录论坛

查看完整版本 : 【求助】一个图像RGB矩阵提取问题


adai
2007-06-28, 10:11
请问如何将一张图像的RGB象素矩阵分别提取出来啊?
我做的课题需要分别对R、G、B象素矩阵进行处理,然后再合并为一张彩色图像。我曾经用过这个函数:rgb2gray(imread('fruit.jpg')),但是这样处理的结果是个灰度图像。恳请图像处理方面的高手指点一下,你们的举手之劳可能对我的帮助却是极大的,谢谢。

caspar
2007-07-05, 10:05
我也想知道这个问题啊,求高手解答

wangfei1008
2007-07-05, 13:22
RGB的图像要分别提取三种基色,图像存储是m*n*3,第三维的第一面为红,第二面为绿,第三面为蓝。

fiona_chen
2007-07-14, 03:44
rgb2gray(imread('fruit.jpg'))出来当然是灰的啦,看函数名字就知道是RGB to Gray啦~~
提取的话简单的很,比如说你读入一副图像:a=imread('xxx.jpg');
然后提取RGB:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
就分解成RGB三个二维矩阵了。之后就可以分别对他们做操作,比如滤波什么的。
最后再合并起来就行了。
a2(:,:,1)=R;
a2(:,:,2)=G;
a2(:,:,3)=B;
imshow(a2);
就成功了!

034100628
2008-03-15, 17:02
利用[I,SP]=imread('1_5.tif');I为灰度图像矩阵,SP为RGP图像矩阵

tolabfans
2008-03-16, 15:18
rgb2gray(imread('fruit.jpg'))出来当然是灰的啦,看函数名字就知道是RGB to Gray啦~~
提取的话简单的很,比如说你读入一副图像:a=imread('xxx.jpg');
然后提取RGB:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
就分...
此贴甚好,支持

danlei0120
2008-03-26, 16:40
:biggrin: rgb2gray(imread('fruit.jpg'))出来当然是灰的啦,看函数名字就知道是RGB to Gray啦~~
提取的话简单的很,比如说你读入一副图像:a=imread('xxx.jpg');
然后提取RGB:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
就分...

好,支持。

yuetai0716
2008-03-27, 15:07
我刚刚做了个练习,确实是这样的,谢谢!!

yiyunyi186186
2008-03-28, 12:43
rgb2gray(imread('fruit.jpg'))出来当然是灰的啦,看函数名字就知道是RGB to Gray啦~~
提取的话简单的很,比如说你读入一副图像:a=imread('xxx.jpg');
然后提取RGB:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
就分...

很支持 , 路过感谢

ninja
2008-03-28, 13:18
M*N*3矩阵的第三维也可能是color map的index系数表吧,不同系数指向不同的RGB配色组合。

qiaoqiao
2008-04-23, 21:15
路过学习一下

prettybuddy
2008-10-17, 20:49
不错非常感谢

huyingru
2008-10-20, 16:07
是这样子的

hippo613
2008-10-25, 10:42
rgb2gray(imread('fruit.jpg'))出来当然是灰的啦,看函数名字就知道是RGB to Gray啦~~
提取的话简单的很,比如说你读入一副图像:a=imread('xxx.jpg');
然后提取RGB:
R=a(:,:,1);
G=a(:,:,2);
B=a(:,:,3);
就分...

按你说的,把它分成R、G、B三个矩阵,我怎么提出每个矩阵的元素而形成以下矩阵呢?
P={p1=R(1),p2=G(1),p3=B(1),p4=R(2),p5=G(2),p6=B2),.............} ,也就是说P矩阵的前三项分别是R、G、B矩阵中的第一个元素,P矩阵接下来的三项分别是R、G、B矩阵中的第二个元素,。。以此类推。。。
麻烦大侠指点下

盼兮
2009-03-20, 17:23
:tongue: :tongue: :tongue: :tongue: :tongue: :tongue:

silas_xue
2009-03-20, 18:10
lz 要看你的图像格式 有的格式 如.gif 使用7楼方法做不出来的 通道数目不够

silas_xue
2009-03-20, 18:18
14楼 在读图像时 每次取同一位置的三个通道的各自值即可
pseudo:
for i,j,k
b(k) = a(i,j,1);
b(k+1) = a(i,j,2);
b(k+2) = a(i,j,3);
end for

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。