MATLAB中怎样提取一幅图像的RGB信息,并且将结果输出到一个矩阵中?

如题所述

1
打开图像
[FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据');
str=[FilePath FileName];
Image=imread(str);
% 以对话框的形式选择打开一幅图像
2
设置参数
Gray=rgb2gray(Image);
R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);
diff_R=0; diff_G=0; diff_B=0; % 设置红、绿、蓝三种颜色提取阈值(越大越严格)
3
红色提取
Image_R=Image;
RP_R=Image(:,:,1); RP_G=Image(:,:,2); RP_B=Image(:,:,3);
XYR=~((R-G)>diff_R&(R-B)>diff_R); % 提取红色条件是R分量与G、B分量差值大于设定
Mask=Gray(XYR); % 灰照片掩膜
RP_R(XYR)=Mask; RP_G(XYR)=Mask; RP_B(XYR)=Mask; % 使得非红色区域变为灰色
Image_R(:,:,1)=RP_R; Image_R(:,:,2)=RP_G; Image_R(:,:,3)=RP_B;
4
绿色提取
Image_G=Image;
GP_R=Image(:,:,1); GP_G=Image(:,:,2); GP_B=Image(:,:,3);
XYG=~((G-R)>diff_G&(G-B)>diff_G); % 提取绿色条件是G分量与R、B分量差值大于设定
Mask=Gray(XYG); % 灰照片掩膜
GP_R(XYG)=Mask; GP_G(XYG)=Mask; GP_B(XYG)=Mask; % 使得非绿色区域变为灰色
Image_G(:,:,1)=GP_R; Image_G(:,:,2)=GP_G; Image_G(:,:,3)=GP_B;
5
蓝色提取
Image_B=Image;
BP_R=Image(:,:,1);BP_G=Image(:,:,2);BP_B=Image(:,:,3);
XYB=~((B-R)>diff_B&(B-G)>diff_B); % 提取绿色条件是G分量与R、B分量差值大于设定
Mask_B=Gray(XYB); % 灰照片掩膜
BP_R(XYB)=Mask_B; BP_G(XYB)=Mask_B; BP_B(XYB)=Mask_B; % 使得非蓝色区域变为灰色
Image_B(:,:,1)=BP_R; Image_B(:,:,2)=BP_G; Image_B(:,:,3)=BP_B;
6
显示结果
subplot(2,2,1),imshow(Image); title('Image');
subplot(2,2,2),imshow(Image_R); title('Red Pass');
subplot(2,2,3),imshow(Image_G); title('Green Pass');
subplot(2,2,4),imshow(Image_B); title('Blue Pass');
http://jingyan.baidu.com/article/cb5d61050a03e0005c2fe0c1.html
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-26
clc,clear,close;
Im = imread('C:\Users\Administrator\Desktop\123.png') %读取文件路径,Im就是你要的举证

MATLAB中怎样提取一幅图像的RGB信息,并且将结果输出到一个矩阵中?
打开图像 [FileName, FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据');str=[FilePath FileName];Image=imread(str);以对话框的形式选择打开一幅图像 2 设置参数 Gray=rgb2gray(Image);R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);diff_R=0; ...

Matlab图像处理——RGB分量提取、变换、组合
1. **读取RGB图像**:利用`imread`函数,加载名为1.jpg的512x480像素RGB彩色图像。这一步是所有后续处理的基础。2. **RGB分量提取与变换**:对读取的图像进行分量提取,得到R、G、B三个矩阵。接下来,对每个分量的像素值进行变换处理。具体地,对于小于100的像素值,将其置为0;对于大于200的像...

matlab 读取一幅图像后,如何知道这幅图像具有RGBA四个通道的,如何输出...
即读取第四层的矩阵,就是Alpha通道

matlab中,怎样从一副彩色图像中提取出一小块进行处理?
1:直接把原来图像矩阵的一部分拿出来就行了。如果A是原始图像矩阵m*n*3。m*n像素,3个通道RGB可以直接使用B=A(1:10,1:10*n,1:3)这样就把源图像的一个小块放到矩阵B中了,之后进行处理就行了。2:MTALAB最强的项目就是矩阵运算,计算效率远远高于C\/C++,是常用的工程计算线性方程组的计算...

怎样用matlab把一副彩色图像的变成数据矩阵
提取的话简单的很,比如说你读入一副图像: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);...

matlab 如何将输出数据保存在一个矩阵中
matlab将输出数据保存在一个矩阵中,直接编程即可,具体如下:n = 10;B = zeros(1,n);for k = 1:n r = k; % 运算后数据 B(k) = r; % 存入矩阵内 end;

使用matlab怎么从一副图像如 lena.jpg 读取到 结构矩阵啊 ?
读图片有专门的函数imread f=imread('c:\\lena.jpg');%假设你的lena.jpg在c盘根目录下 f就是一个三维矩阵,分别存放RGB值

如何用matlab读取数据并按指定格式输出
一:imread:从图像文件夹中读取图像。A = imread(FILENAME,FMT) 读取图像到A,如果文件是包含一灰度图像,A是一二维矩阵,如果文件是包含一真彩色图像(RGB),A是一三维矩阵(M-by-N-by-3)。FILENAME :图像文件名;FMT:图像文件格式;文件必须在当前目录下,或在Matlab的一路径上。如果 imread...

matlab如何将用plot画的图保存到矩阵中
不显示坐标轴可以在后面加一句axis off 在画出的图上编辑框上,点菜单file-->Save as,选择不同的保存类型,就保存为图像了

用matlab如何将图片还原成为矩阵?
输入:mImageBuffer 待处理图像点阵数据 strBmpFilename 待生成BMP文本数据文件名 width 图像宽度 height 图像高度 strFenge 列之间分隔符 flag 文本数据格式标志:0 10进制; 1 16进制; 10 RGB16进制 输出:原型:int WINAPI icePub_imgToFileTextdata(char *strImgFilename,char *strFilename,char ...

相似回答