当前位置: 首页 > news >正文

图像分割(三)-RGB转HSV后图像分割方法

       常用彩色模型有RGB和HSV模型,有时候在RGB颜色空间进行背景分割比较困难的问题,转换为HSV模型然后对色调和饱和度图像进行处理会得到比较理想的处理结果,下面通过一个实例讲解该方法的MATLAB实现,该方法对其他图像检测也具有一定的参考价值。

主要步骤:读入RGB彩色图像,转换为灰度图像,并进行二值化,发现背景分割效果不好。故改变思路,先将RGB彩色图像转换为HSV图像,提取H(色调)和S(饱和度)分量,发现色调分量的灰度直方图具有比较明显的双峰特性且谷底平且宽,因此对其采用OTSU方法进行二值化,然后对其进行孔洞填充,取得了比较理想的图像分割效果。最后对原始RGB彩色图像分割的主要图像处理过程进行显示。

详细代码如下:

%RGB图像转HSV进行图像分割

clear all;

close all;

clc;

I=imread('h:\3.jpg');

Ir=I(:,:,1);

Ig=I(:,:,2);

Ib=I(:,:,3);

imshow(I);

Igray=rgb2gray(I);% 彩色图像转灰度图像 Gray=0.299*R+0.587*G+0.114*B

figure,imshow(Igray);

figure,imhist(Igray);%显示灰度直方图

obj=im2bw(Igray,graythresh(Igray));

figure,imshow(obj);

Ihsv=rgb2hsv(I);

figure,imshow(Ihsv);

Ih=Ihsv(:,:,1);%提取hue(色调)分量

figure,imshow(Ih);

figure,imhist(Ih);%显示色调分量的灰度直方图-发现其具有比较明显的双峰特性且谷底平且宽

imtool(Ih);

Is=Ihsv(:,:,2);%提取Saturation(饱和度)分量

figure,imshow(Is);

figure,imhist(Is);

imtool(Is)

%obj=imbinarize(Ih);

obj2=im2bw(Ih,graythresh(Ih));

figure,imshow(obj2);

obj2Fill=imfill(obj2,'holes');

figure,imshow(obj2Fill);

flower=cat(3,uint8(obj2Fill).*Ir,uint8(obj2Fill).*Ig,uint8(obj2Fill).*Ib);

figure,imshow(flower);

figure,

subplot(2,4,1),imshow(I),title('RGB彩色图像');

subplot(2,4,2),imshow(Igray),title('灰度图像');

subplot(2,4,3),imhist(Igray),title('Igray灰度直方图');

subplot(2,4,4),imshow(obj),title('二值图像');%分割效果差

subplot(2,4,5),imshow(Ihsv),title('HSV图像');

subplot(2,4,6),imshow(Ih),title('H图像');

subplot(2,4,7),imhist(Ih),title('Ih灰度直方图');

subplot(2,4,8),imshow(obj2Fill),title('二值图像');%分割效果好

%本程序在MATLAB 2018a检测通过

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

原始图像:

如果觉得本文章对大家今后的编程有帮助,请点赞和收藏,谢谢!!!

相关文章:

  • USB学习——12、usb初始化和插拔驱动软件流程大致框架描述
  • HTML静态网页成品作业(HTML+CSS)——美食火锅介绍网页(1个页面)
  • Autodesk Revit产品痛点
  • 力扣1793.好子数组的最大分数
  • 德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第十周) - 自然语言处理应用
  • 基于Django的博客系统之增加手机验证码登录(九)
  • idea intellij 2023打开微服务项目部分module未在左侧项目目录展示(如何重新自动加载所有maven项目model)
  • 使用 Iceberg、Tabular 和 MinIO 构建现代数据架构
  • C++ | Leetcode C++题解之第149题直线上最多的点数
  • 《沃趣 分手后霸道少爷宠爆我》盛大开机典礼
  • 安装MySQL5.7版本步骤遇到问题
  • Web服务器
  • PHP中的while循环:用法、技巧与最佳实践
  • Studying-代码随想录训练营day16| 513找到左下角的值、112.路径总和、106从中序与后序遍历序列构造二叉树
  • 适合PbootCMS的阿里云短信发送类
  • ----------
  • 分享的文章《人生如棋》
  • (三)从jvm层面了解线程的启动和停止
  • .pyc 想到的一些问题
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • DOM的那些事
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Java知识点总结(JavaIO-打印流)
  • java中具有继承关系的类及其对象初始化顺序
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • maya建模与骨骼动画快速实现人工鱼
  • php中curl和soap方式请求服务超时问题
  • python docx文档转html页面
  • Redis在Web项目中的应用与实践
  • storm drpc实例
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里云应用高可用服务公测发布
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 基于组件的设计工作流与界面抽象
  • 如何合理的规划jvm性能调优
  • 深度解析利用ES6进行Promise封装总结
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​补​充​经​纬​恒​润​一​面​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (152)时序收敛--->(02)时序收敛二
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十三)MipMap
  • (四)Linux Shell编程——输入输出重定向
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (状压dp)uva 10817 Headmaster's Headache
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .bat批处理(一):@echo off
  • .NET 解决重复提交问题
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?