• 图像阈值分割(一)


           读入一张水果彩色数字图像,然后对其进行水果和果梗进行分割。算法思想:通过提取红、绿和蓝各分量图像,发现其双峰特性不明显。使用improfile绘制水果图像中穿过背景和水果的R、G 、B分量的灰度值曲线,从improfile曲线可以看出,在水果所在位置R分量曲线和B分量的灰度值差异大,而背景差异小。因而,选择r-b进行代数运算,然后进行对比度增强,再使用最大类间方差法进行二值化,最后进行彩色图像背景分割。

    详细代码如下:

    clear all;
    close all;
    clc;
    imtool close all;
    I=imread('fruit1.jpg');%读入水果彩色图像
    imshow(I);
    Ir=I(:,:,1);%提取R分量图像
    figure,imhist(Ir),title('红色分量灰度直方图');
    Ig=I(:,:,2);%提取G分量图像
    figure,imhist(Ig),title('绿色分量灰度直方图');
    Ib=I(:,:,3);%提取B分量图像
    figure,imhist(Ib),title('蓝色分量灰度直方图');
    %通过以上分析,各分量灰度直方图双峰特征不明显
    imtool(I);
    x = [1     459];  
    y = [190   190];  
    improfile(I,x,y),grid on  %使用improfile绘制水果图像中穿过背景和水果的R、G 、B分量的灰度值曲线
    Irb=Ir-Ib;                %从improfile曲线可以看出,在水果所在位置R分量曲线和B分量的灰度值差异大,而背景差异小。
    Irb=imadjust(Irb);%对图像进行对比度调节
    figure,imshow(Irb);
    figure,imhist(Irb);
    bw=im2bw(Irb,graythresh(Irb));%利用最大类间方差法进行图像分割
    bw2=imfill(bw,'holes');
    figure,imshow(bw2);
    objFruit=uint8(bw2).*I;
    figure,imshow(objFruit);%将水果从图像中分割出来
    objStem=uint8(bw2-bw).*I;
    figure,imshow(objStem);%将果蒂从图像中分割出来
    figure('Name','彩色图像阈值分割','NumberTitle','off');
    subplot(3,2,1),imshow(I),title('水果彩色图像');
    subplot(3,2,2),imshow(Irb),title('R-B图像');
    subplot(3,2,3),imshow(bw2),title('模版1');
    subplot(3,2,4),imshow(bw2-bw),title('模版2');
    subplot(3,2,5),imshow(objFruit),title('水果图像');
    subplot(3,2,6),imshow(objStem),title('果蒂图像');
    %% 本程序在MATLAB 2018b 下调试运行

    最后运行结果如下图所示:

  • 相关阅读:
    Metabase学习教程:系统管理-2
    HQChart使用教程30-K线图如何对接第3方数据36--散点图
    猿创征文|分享一下我的日常开发工具和常用软件
    Mi小爱音箱pro接入GPT
    Ubuntu中安装R语言环境并在jupyter kernel里面增加R kernel
    2022暑假强化学习记录
    智能工厂MES系统,终端设备支持手机、PDA、工业平板、PC
    mysql 5.7.31 创建账号并赋予权限
    PyQt5 QLineEdit基础
    深度解读《深度探索C++对象模型》之返回值优化
  • 原文地址:https://blog.csdn.net/xrgs_shz/article/details/139686881