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');% 显示原图与r/g/b三色提取结果对比图并显示标签7保存结果imwrite(image_r,'image_r.jpg','jpeg');imwrite(image_g,'image_g.jpg','jpeg');imwrite(image_b,'image_b.jpg','jpeg');% 将r/g/b三色提取结果写成jpg文件保存到当前目录end 20210311