有些时候,直接利用图像的灰度直方图选择阈值不是非常直观,这时,可以利用图像三个通道的直方图来进行图像分割,操作步骤如上文所示,下图为原始图片。

下图为三通道直方图。

下图将三个通道的直方图会绘制到一个图表上,更容易对比选择阈值。

- Img = imread('fruit1.jpg');
- %[M,N] = size(img);%注意:一个陷阱,对彩色图像如果这样表示很可能引起错误。
- [M,N,D] = size(img);%注意对彩色图像一定要规范引用!!!
- img_r = img(:,:,1);%取彩色图像的r通道
- img_g = img(:,:,2);%取彩色图像的g通道
- img_b = img(:,:,3);%取彩色图像的b通道
- subplot(2,1,1);imshow(img), title('原始图像');
- line1 = img(1, :);%默认取彩色图像的r道,等同于line1=img(1,:,1);
- line2 = img(2, :);%默认取彩色图像的g道,等同于line1=img(2,:,2);
- line3 = img(3, :);%默认取彩色图像的b道,等同于line1=img(2,:,2);
- subplot(2,1,2);
- hold on
- plot(line1, 'r');plot(line2, 'g');plot(line3, 'b');
- hold off
- imtool(img);
- figure('Name','绘制彩色图像fruit1横穿第800行的r、g、b通道的灰度值');
- line4 = img(800,1:1920,1);
- line5 = img(800,1:1920,2);
- line6 = img(800,1:1920,3);
- plot(line4,'r');
- hold on;
- plot(line5,'g');
- hold on;
- plot(line6,'b');
- figure,
- x = [1,1920]; %注意:起始点的横坐标
- y = [800 800]; %注意:起始点的纵坐标
- improfile(img,x,y),grid on;