• 图像阈值分割(一)


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

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

  • 相关阅读:
    java基于ssm的奶牛场电子自动化管理系统
    从Systrace看抖音Android Camera Bufferqueue渲染
    引领新一轮IT服务升级,IT相关场景RPA应用
    oracle数据库怎么创建数据库 oracle数据库工作流程
    最优化理论与方法1
    攻防世界-web-Training-WWW-Robots
    第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    Android studio Button的 用法详情
    【Filter 过滤器、Listener 监听器基础】
    手拉手带你用 Vue3 + VantUI 写一个移动端脚手架 系列二 (页面布局与兼容)
  • 原文地址:https://blog.csdn.net/xrgs_shz/article/details/139686881