• 图像阈值分割(一)


           读入一张水果彩色数字图像,然后对其进行水果和果梗进行分割。算法思想:通过提取红、绿和蓝各分量图像,发现其双峰特性不明显。使用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 下调试运行

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

  • 相关阅读:
    Redis 字符串操作实战(全)
    什么是GraphQL?它与传统的REST API有什么不同?
    计算机毕业设计Java校园资料在线分享网站(系统+源码+mysql数据库+lw文档)
    是时候来唠一唠synchronized关键字了,Java多线程的必问考点!
    每日刷题打卡Day12
    电脑重装系统打印机脱机状态怎么恢复正常
    SAGA GIS使用教程
    CSS 布局案例: 2行、多行每行格数不定,最后一列对齐
    企业微信H5登录流程,以及遇到的问题解决
    一点一点学习C++之笔记003
  • 原文地址:https://blog.csdn.net/xrgs_shz/article/details/139686881