clear all; % 清除所有变量
close all; % 关闭所有图形窗口
clc; % 清屏
% 读取图像
image = imread("C:\Users\12585\Desktop\matlab image\flowerpurple.png");
% 提取RGB通道
Ir = image(:,:,1);
Ig = image(:,:,2);
Ib = image(:,:,3);
% 显示原始图像和各通道图像及其直方图
figure;
subplot(2,2,1), imshow(image), title('原始图像');
subplot(2,2,2), imhist(Ir), title('R通道灰度直方图');
subplot(2,2,3), imhist(Ig), title('G通道灰度直方图');
subplot(2,2,4), imhist(Ib), title('B通道灰度直方图');
% 对B通道进行二值化
bw1 = im2bw(Ig, 37/255);
figure, imshow(bw1);
obj=bwareaopen(bw1,90);%消除像素面积小于100个像素的小目标
figure,imshow(obj);
[L,Num]=bwlabel(obj);
Num;
obj3=(1-uint8(obj)).*image;
figure,imshow(obj3);
figure,
subplot(1,3,1),imshow(image),title('原始彩色图像');
subplot(1,3,2),imshow(obj),title('目标二值图像');
subplot(1,3,3),imshow(obj3),title('目标彩色图像');
代码如上所示:
图片如下所示:
运行效果如下所示: